串口通信项目报告.docx

上传人:b****7 文档编号:9888628 上传时间:2023-02-07 格式:DOCX 页数:20 大小:373.29KB
下载 相关 举报
串口通信项目报告.docx_第1页
第1页 / 共20页
串口通信项目报告.docx_第2页
第2页 / 共20页
串口通信项目报告.docx_第3页
第3页 / 共20页
串口通信项目报告.docx_第4页
第4页 / 共20页
串口通信项目报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

串口通信项目报告.docx

《串口通信项目报告.docx》由会员分享,可在线阅读,更多相关《串口通信项目报告.docx(20页珍藏版)》请在冰豆网上搜索。

串口通信项目报告.docx

串口通信项目报告

串口通信项目报告

学生信息(学生填写)

班级

计应095

日期

2011/5/10

姓名

王海静

学号

0908143527

计算机学院

一﹑项目要求:

串行通信接口项目在实验板上构成一个全双工的串行通信接口,用户利用这个串行接口,可以与PC机或其它设备进行串行通信,并可以设置串行通信的格式。

系统的状态分成工作状态和设置状态:

在工作状态下,进行串行通信;在设置状态下,进行通信格式的设置。

该系统用5个数码管(一个单独的数码管和一个4位数码管)显示串行通信的格式,比如串行通信的波特率是4800,7位数据位,校验方式为偶校验,则数码管显示为“E48-7”。

当系统处于工作状态时,如果收到串行数据,则把该数据显示在发光管上,如果接收到的数据有错误(包括奇偶校验错误和帧错误),则让蜂鸣器发出响声。

在工作状态下,若用户按下K1按键,则把拨码开关上的数据发送出去。

在工作状态下,如果用户按下K2按键,进入设置状态,首先设置进行校验方式的设置:

这时单独的数码管闪烁显示,若用户按下K3按键可以改变校验方式(共有O、E、n三个取值)。

在此过程中,如果用户再次按下K2按键,可以进行波特率的设置:

这时4位数码管的高两位闪烁,若用户按下K3按键可以改变波特率(共有96、48、24、12四个取值)。

在此过程中,如果用户再次按下K2按键,可以改变数据位位数:

这时4位数码管的最低位闪烁,用户按下K3按键可以改变数据位的位数(共有8、7、6、5四个取值)。

在此过程中,如果用户再次按下K2按键,则系统又回到工作状态。

二﹑项目内容

基于QuartusII软件和串口通信的程序,通信串口作为信息传输通道,CPLD芯片作为接受信息和实现效果的工具,最终达到能够传输数据和显示相应数据的作用;

1.要求通过串口通信能够获得数据内容在QuartusII软件环境中开发;

2.获得接收和发送的数据;

三、项目设计

1.项目的设计思路

首先利用利用老师所给的主框架图如下:

最初是从时钟模块着手的,这块据老师说是较简单的部分,在这一部分程序编写中主要是分频器和分频器分频的设计,

一.时钟模块的基本构成

根据设计要求,时钟模块主要为系统各部分提供各种频率的时钟信号,因此该模块主要由几个分频器构成。

另外由于输出的发送和接收时钟信号的具体频率,受控制模块传来的信号控制,所以还需要一个数据选择器。

二.时钟模块的逻辑框图

按照前面的分析,时钟模块的逻辑框图如下:

三.控制模块的基本构成

根据设计要求,该系统可以分成这几个模块:

去抖动模块(用于K2、K3按键)、一个表示系统状态的四进制计数器、一个3进制计数器用于表示校验方式、另外两个4进制计数器分别用于表示数据位位数和波特率,另外还有4个译码器以及少量门电路。

四.控制模块的逻辑框图

按照前面的分析,控制模块的逻辑框图如下:

五.数据分配器的逻辑功能

该模块的数据分配器,用于控制(去抖动后的)K3按键信号的传递对象,当控制信号是00时,输出信号全是1;当控制信号是01时,K3按键信号传递给校验方式计数器,另两个输出信号是1;当控制信号是10时,K3按键信号传递给波特率计数器,另两个输出信号是1;当控制信号是11时,K3按键信号传递给数据位数计数器,另两个输出信号是1。

六.译码器1的逻辑功能

译码器1用于控制,当输入信号是00时(工作状态),输出是00000(无闪烁);当输入信号是01时(设置校验方式),输出是10000(单独数码管闪烁);当输入信号是10时(设置波特率),输出是01100(4位数码管高2位闪烁);当输入信号是11时(设置波特率),输出是00001(4位数码管最低位闪烁)。

七.译码器2的逻辑功能

译码器2用于给单个数码管传送显示数据,而显示的内容为“n”、“O”、“E”,当输入为0x时(无校验),输出为1010(显示“n”);当输入为10时(偶校验),输出为1110(显示“E”);当输入为11时(奇校验),输出为0000(显示“O”)。

八.译码器3的逻辑功能

译码器3用于给4位数码管的高2位传送显示数据,当输入为00时(9600波特率),输出为8’h96;当输入为01时(4800波特率),输出为8’h48;当输入为10时(2400波特率),输出为8’h24;当输入为11时(1200波特率),输出为8’h12。

九.译码器4的逻辑功能

译码器4用于给4位数码管的最低位传送显示数据,当输入为00时(8位数据位),输出为4’h8;当输入为01时(7位数据位),输出为4’h7;当输入为10时(6位数据位),输出为4’h6;当输入为11时(5位数据位),输出为4’h5;

一十.接收控制模块的基本构成

接收控制模块主要由格雷码计数器、译码器、数据选择器、3分频器以及一些逻辑门电路构成。

一十一.接收模块的逻辑框图

按照前面的分析,接收模块的逻辑框图如下:

一十二.格雷码计数器的逻辑功能

格雷码计数器在值为0时(即空闲状态),不进行计数,在收到检测信号时,计数器被异步置1,以后在时钟信号的作用下,计数值按照格雷码当方式不断加1;当加到与输入的比较值相同时,计数器清零。

一十三.译码器的逻辑功能

译码器有2组输出,第一组输出用于指示格雷码计数器的最大值,在没有校验位时,若数据位控制是00(8位数据位),则输出应是9的格雷码;若数据位控制是01(7位数据位),则输出应是8的格雷码;若数据位控制是10(6位数据位),则输出应是7的格雷码;若数据位控制是11(6位数据位),则输出应是6的格雷码。

如果有校验位,则输出应比上述值多1。

译码器第二组输出根据数据位控制信号输出相应的屏蔽信号:

在没有校验位时,若输入是00(8位数据位),则输出为1110;当输入是01(7位数据位),则输出为1100;当输入是10(6位数据位),则输出为1000;当输入是11(5位数据位),则输出为0000。

在有校验位时,若输入是00(8位数据位),则输出为1111;当输入是01(7位数据位),则输出为1110;当输入是10(6位数据位),则输出为1100;当输入是11(5位数据位),则输出为1000。

一十四.数据选择器1的逻辑功能

数据选择器1,用于在9位的数据/校验位当中,选择输出8位数据位:

在无校验时,高8位是数据位;在有校验时,低8位是数据位。

一十五.数据选择器2的逻辑功能

数据选择器2,用于选择3位信号中的1位输出:

当输入是0x时(无校验),则输出是1’b1;当输入是10时(偶校验),则输出是反向器的输出;当输入是0x时(奇校验),则输出是异或门的输出。

一十六.发送模块的基本构成

发送模块的核心是一个“并入串出”的移位寄存器子模块,它在(去抖动后的)K1按键信号的控制下,可以接收并行的拨码开关信号(还包括起始位和校验位);并在发送时钟的控制下,可以数据的移位,并把最低位进行输出到Txd引脚上。

发送模块还应该包括一个去抖动子模块,用于K1按键的去抖动。

由于我们的发送模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中还应该有一个发送控制子模块,它的功能如下:

1转发发送时钟信号——在使能信号有效的情况下,把系统传来发送时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。

2转送拨码开关信号——在不同的数据格式下,传给移位寄存器模块的拨码开关信号是不一样的,有些时候要屏蔽掉一些位,还要处理校验位。

一十七.移位寄存器模块的I/O信号

移位寄存器模块应该通过Txd信号线与RS-232电平转换芯片连接。

移位寄存器模块接收的控制信号是去抖动后的K1按键信号,它决定移位寄存器是接收并行数据,还是进行串行移位。

移位寄存器模块接收的并行数据共有9位,包括8位拨码开关信号和1位校验位信号。

发送模块所需要的时钟信号是经过转发的串行数据发送时钟信号。

一十八.去抖动模块的I/O信号

去抖动子模块,用于按键的去抖动,这比较简单,只要一个D触发器就可以完成:

触发器的数据输入端D接按键,CP端接50Hz时钟信号,触发器的输出信号就是我们需要的去抖动后的信号。

一十九.发送控制模块的I/O信号

发送控制模块的输入的控制信号就是系统传来的5位控制信号,包括使能信号(1位)、数据位位数控制信号(2位)、校验方式控制信号(2位)。

因为要转发发送时钟信号,所以要有1位时钟输入信号和1位时钟输出信号。

又因为要转送拨码开关信号,所以要有8位数据输入信号,而输出给移位寄存器模块的信号应该包含校验位,所以输出的数据信号有9位。

二十.发送模块的逻辑框图

按照前面的分析,发送模块的逻辑框图如下:

二十一.发送移位寄存器模块的基本构成

发送模块移位寄存器(并入串出)模块应该由11位移位寄存器构成,在(去抖动后)的K1按键控制下,或接收并行数据(K1信号为1),或进行移位(K1信号为0),最低位作为串行数据输出(Txd)。

在接收并行数据时,最低位的值固定为1,这是因为一旦接收了并行数据,Txd引脚上就马上出现最低位的信号,而这时显然还没到发送数据的时候,所以应该发出高电平的“空闲位”。

在接收并行数据时,而次低位的值固定为0,这是起始位。

在接收并行数据时,高9位是控制模块转送的拨码开关信号和校验位信号(当数据位不足8位时,由发送控制模块在高位上添加上“1”)。

在进行移位时,在发送时钟信号的控制下,11位数据向低位方向移动,最高位固定补“1”(形成停止位)。

二十二.发送移位寄存器模块的逻辑框图

按照前面的分析,发送移位寄存器模块的逻辑框图如下:

 

二十三.接收模块的基本构成

由于在接收过程中,要防止干扰,因此在同一波特率的情况下,接收时钟的频率要高于发送时钟的频率,在我们的系统中,接收时钟的频率是波特率的3倍。

接收模块的也有一个移位寄存器子模块,它由10位构成,接收数据位、校验位和停止位。

这个移位寄存器是“串入并出”的,它负责在(经3分频后的)接收时钟信号控制下,接收串行数据,并把收到的数据送发光管显示。

即使在使能信号有效的情况下,上述移位寄存器也不总是进行移位操作的——只有发现了起始位,才开始进行移位,在收到停止位后,应结束移位操作。

直接连接Rxd引脚的是一个只有3位的移位寄存器(也是“串入并出”),它在(未分频的)接收时钟信号控制下,接收串行数据,把一位串行数据转换成3位并行数据。

在空闲状态下,如果发现连续两个0,则认为是收到了起始位,立即启动前述10位移位寄存器的移位操作。

在进行10位移位寄存器移位时,其串行输入信号不要直接从Rxd引脚上输入,而是从3位的移位寄存器的并行输出再经过“判多”电路模块而来,这个判多模块实现这样一个功能:

若3位输入中有2位或3位输入为1,则输出为1;否则输出为0。

由于我们的接收模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中也应该有一个接收控制子模块,它的功能如下:

3转发接收时钟信号——在使能信号有效的情况下,把系统传来接收时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。

4控制10位移位寄存器的移位操作,即给它提供经过3分频的接收时钟信号。

5检验接收的数据是否有差错,从而向蜂鸣器输出警示信号。

二十四.接收控制模块的基本构成

接收控制模块主要由格雷码计数器、译码器、数据选择器、3分频器以及一些逻辑门电路构成。

二十五.接收模块的逻辑框图

按照前面的分析,接收模块的逻辑框图如下:

二十六.格雷码计数器的逻辑功能

格雷码计数器在值为0时(即空闲状态),不进行计数,在收到检测信号时,计数器被异步置1,以后在时钟信号的作用下,计数值按照格雷码当方式不断加1;当加到与输入的比较值相同时,计数器清零。

二十七.译码器的逻辑功能

译码器有2组输出,第一组输出用于指示格雷码计数器的最大值,在没有校验位时,若数据位控制是00(8位数据位),则输出应是9的格雷码;若数据位控制是01(7位数据位),则输出应是8的格雷码;若数据位控制是10(6位数据位),则输出应是7的格雷码;若数据位控制是11(6位数据位),则输出应是6的格雷码。

如果有校验位,则输出应比上述值多1。

译码器第二组输出根据数据位控制信号输出相应的屏蔽信号:

在没有校验位时,若输入是00(8位数据位),则输出为1110;当输入是01(7位数据位),则输出为1100;当输入是10(6位数据位),则输出为1000;当输入是11(5位数据位),则输出为0000。

在有校验位时,若输入是00(8位数据位),则输出为1111;当输入是01(7位数据位),则输出为1110;当输入是10(6位数据位),则输出为1100;当输入是11(5位数据位),则输出为1000。

二十八.数据选择器1的逻辑功能

数据选择器1,用于在9位的数据/校验位当中,选择输出8位数据位:

在无校验时,高8位是数据位;在有校验时,低8位是数据位。

二十九.数据选择器2的逻辑功能

数据选择器2,用于选择3位信号中的1位输出:

当输入是0x时(无校验),则输出是1’b1;当输入是10时(偶校验),则输出是反向器的输出;当输入是0x时(奇校验),则输出是异或门的输出。

三十.10位移位寄存器模块的I/O信号

10位移位寄存器模块显然有1位串行数据输入信号线。

该模块另外还应该有10位并行数据输出信号线。

该模块还应该有1个用于移位的接收时钟信号线。

三十一.3位移位寄存器模块的I/O信号

3位移位寄存器模块显然有1位串行数据输入信号线。

该模块另外还应该有3位并行数据输出信号线。

该模块还应该有1个用于移位的接收时钟信号线。

另外该模块还应该附加一个或门,用于判断起始位(连续收到两位低电平信号,可以认为是起始位)。

三十二.判多模块的I/O信号

在我们的系统中,判多电路模块用于减少干扰信号,它应有3位输入信号,输出是1位信号。

三十三.接收控制模块的I/O信号

接收控制模块要负责转发接收时钟信号,因此它有1位接收时钟输入信号和1位接收时钟输出信号。

还要输出1位(经3分频后的)接收时钟输出信号。

接收控制模块输入的控制信号包括系统传来的5位控制信号,包括使能信号(1位)、数据位位数控制信号(2位)、校验方式控制信号(2位)。

接收控制模块输入的控制信号还有从3位移位寄存器传来的起始位检测信号。

接收控制模块还要对收到的数据进行检验,所以它应该输入由10位移位寄存器模块而来的数据信号。

接收控制模块还要把其中的数据位送到发光管上,所以还需要8位输出数据信号。

接收控制模块还要转发1000Hz的警示信号,所以它应该有1位输入的1000Hz时钟信号和1位输出的1000Hz时钟信号。

三十四.接收模块的逻辑框图

按照前面的分析,接收模块的逻辑框图如下:

串行通信接口项目收发模块设计分析

三十五.收发模块的基本构成

收发模块负责进行串行数据的发送和接收,显然该收发模块又可以分成2个子模块:

发送模块(进行串行信号的发送)、接收模块(进行串行信号的接收)。

三十六.发送模块的I/O信号

发送模块应该通过Txd信号线与RS-232电平转换芯片连接。

发送模块接收的控制信号包括:

串行通信的使能信号、校验方式控制信号、数据位位数信号,共5位信号。

发送模块应该连接拨码开关和K1按键,以控制进行串行数据的发送,共9位信号。

发送模块所需要的时钟信号有:

50Hz信号(用于K1按键去抖动)、串行数据发送时钟信号(用于串行数据发送),共2位信号。

三十七.接收模块的I/O信号

接收应该通过Rxd信号线与RS-232电平转换芯片连接。

接收模块也应该从控制模块获得控制信号包括:

串行通信的使能信、校验方式控制信号、数据位位数信号,共5位信号。

接收模块应该连接8个发光管和蜂鸣器,用以显示接收到的串行数据,并警示数据的差错,共9位信号。

收发模块所需要的时钟信号有:

1000Hz信号(用于蜂鸣器的发声)、串行数据接收时钟信号(用于串行数据接收),共2位信号。

三十八.收发模块的逻辑框图

按照前面的分析,收发模块的逻辑框图如下:

 

2.对各个功能按钮进行函数初始化定义,并通过程序编译实现函数作用.

3.实现Clock(),Ctonrol(),Show(),Send(),Recv()函数功能。

4.实现K1,K2,K3函数,控制显示消息和接收消息。

5.主要功能函数的流程图

开始(输入信号参数)

主模块收发函数

Ctrl控制模块

Clock发送模块

输出结束

Show显示模块

Ctrl控制模块

 

6.创新点

利用做这个项目学习到的知识可以尝试做其他新的项目,比如电子琴,或闹钟以及音乐闪烁灯等;在原有的原理和基础上对现在项目进行完善,使其操作和使用变得更简单功能更齐全,不过这些创新功能还需要更多知识和老师的指点;

 

四、程序框架

Module

ALL(k1,k2,k3,Hz24,sw,L4BitSel,L1Seg,L4Seg,Txd,Rxd,shineled,beep);

inputk1,k2,k3,Hz24,Rxd;

input[7:

0]sw;

output[7:

0]L1Seg,L4Seg,shineled;

output[3:

0]L4BitSel;

outputTxd,beep;

wireenable;

wire[15:

0]bcd;

wire[4:

0]shine;

wireHz1,Hz50,Hz400,Hz1000,df,dj;

wire[1:

0]baud,chk,bits;

shudianClock(Hz24,baud,Hz1,Hz50,Hz400,Hz1000,dj,df);//时钟模块

Control(k2,k3,Hz50,chk,baud,bits,bcd,shine,enable);//控制模块

Show(bcd,Hz400,chk,shine,Hz1,L1Seg,L4Seg,L4BitSel);//显示模块

Sendsend1(sw,k1,Hz50,enable,df,bits,chk,Txd);//发送模块

Recvrecv_1(dj,Hz1000,enable,bits,chk,Rxd,beep,shineled);//接收模块

endmodule

 

五、完成项目的RTL图形

1﹑主模块图形:

 

2﹑控制模块图形:

3、时钟模块图形:

4﹑显示模块图形:

5﹑发送模块图形:

6﹑接收模块图形:

六﹑所遇到问题及解决办法、想法﹑学习心得:

完成这个项目的过程中遇到的问题既有软件方面也有硬件使用方面的。

起初,在使用软件时因为有好几个地方不知道它们的作用以及如何利用他们来实现程序编译和调试错误而耽误了不少时间但是在老师和同学的帮助下这方面的问题及时得到了解决。

然后,就是程序代码的编写和编译。

在最初的时钟模块就遇到了一些问题,因为我们对于分频器这块概念不是很清楚,所以在分频时遇到分频出错的问题。

另外对于寄存器的位数没能很好的思考也出现寄存器声明的存储位数不满足寄存量的情况;时钟模块完成后接着实现的是控制模块,控制模块主要有抖动模块﹑进制计数器﹑数据分配器﹑闪烁控制译码器﹑波特率译码器﹑数据位译码器﹑显示模块﹑数据位选择器﹑变量译码器;这部分所遇到的问题主要有译码器和变量译码器的理解和运用,在显示模块因为没能将显示信号完全定义,所以开始时并没有达到理想效果,不过经过几次编译和改正后满足了项目要求;接着是发送模块的程序编写,这部分包括发送控制模块,译码器﹑数据选择器和移位寄存器。

开始时没能将信号输入和输出头绪理好

没能成功的发送数据。

信号理好后移位寄存器由于移动位位置没有写正确没能实现发送数据的效果,这部分我在询问过老师和同学改正错误后最终实现了发送数据的要求;在编写接收模块程序时遇到的最大问题是格雷码的转换很编写,因为最初我没能理解格雷码编写规律所以编写的程序在运行时总是出现错误,通过看书和询问老师最后这个问题得以解决;

在完成这个项目后,我有一些小的成就感。

因为这毕竟还算是自己完成的一个小项目;另外,值得我高兴的是这次带我们科的老师又是一位有耐心,有能力又善于指导学生的老师。

我真觉得自己上大学能遇到这样的老师很幸运。

当然,在完成项目的同时我也学会了一些为人处事的道理,对于同学的帮助要及时道谢这样才能让他们觉得自己的能力得到了肯定;最重要的是要有耐心和毅力,当我们遇到困难时不能轻易就选择放弃和逃避,要学会通过自己的努力克服困难,只有这样我们在毕业后的生活道路上才能够走的更远更稳!

最后。

我想说我很感谢王老师和我的同学们,如果没有他们我想我的项目不会完成的那么快那么好。

谢谢你们!

 

学生签名:

王海静

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1