您好,欢迎访问三七文档
《基于串口通信CPLD》项目报告学生信息(学生填写)班级计应095日期2011/5/10姓名王海静学号0908143527计算机学院1一﹑项目要求:串行通信接口项目在实验板上构成一个全双工的串行通信接口,用户利用这个串行接口,可以与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.项目的设计思路首先利用利用老师所给的主框架图如下:2最初是从时钟模块着手的,这块据老师说是较简单的部分,在这一部分程序编写中主要是分频器和分频器分频的设计,一.时钟模块的基本构成根据设计要求,时钟模块主要为系统各部分提供各种频率的时钟信号,因此该模块主要由几个分频器构成。另外由于输出的发送和接收时钟信号的具体频率,受控制模块传来的信号控制,所以还需要一个数据选择器。二.时钟模块的逻辑框图按照前面的分析,时钟模块的逻辑框图如下:3三.控制模块的基本构成根据设计要求,该系统可以分成这几个模块:去抖动模块(用于K2、K3按键)、一个表示系统状态的四进制计数器、一个3进制计数器用于表示校验方式、另外两个4进制计数器分别用于表示数据位位数和波特率,另外还有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;5十.接收控制模块的基本构成接收控制模块主要由格雷码计数器、译码器、数据选择器、3分频器以及一些逻辑门电路构成。十一.接收模块的逻辑框图按照前面的分析,接收模块的逻辑框图如下:十二.格雷码计数器的逻辑功能格雷码计数器在值为0时(即空闲状态),不进行计数,在收到检测信号时,计数器被异步置1,以后在时钟信号的作用下,计数值按照格雷码当方式不断加1;当加到与输入的比较值相同时,计数器清零。6十三.译码器的逻辑功能译码器有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按键的去抖动。由于我们的发送模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中还应该有一个发送控制子模块,它的功能如下:①转发发送时钟信号——在使能信号有效的情况下,把系统传来发送时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实7现。②转送拨码开关信号——在不同的数据格式下,传给移位寄存器模块的拨码开关信号是不一样的,有些时候要屏蔽掉一些位,还要处理校验位。十七.移位寄存器模块的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位。二十.发送模块的逻辑框图按照前面的分析,发送模块的逻辑框图如下:8二十一.发送移位寄存器模块的基本构成发送模块移位寄存器(并入串出)模块应该由11位移位寄存器构成,在(去抖动后)的K1按键控制下,或接收并行数据(K1信号为1),或进行移位(K1信号为0),最低位作为串行数据输出(Txd)。在接收并行数据时,最低位的值固定为1,这是因为一旦接收了并行数据,Txd引脚上就马上出现最低位的信号,而这时显然还没到发送数据的时候,所以应该发出高电平的“空闲位”。在接收并行数据时,而次低位的值固定为0,这是起始位。在接收并行数据时,高9位是控制模块转送的拨码开关信号和校验位信号(当数据位不足8位时,由发送控制模块在高位上添加上“1”)。在进行移位时,在发送时钟信号的控制下,11位数据向低位方向移动,最高位固定补“1”(形成停止位)。二十二.发送移位寄存器模块的逻辑框图按照前面的分析,发送移位寄存器模块的逻辑框图如下:9二十三.接收模块的基本构成由于在接收过程中,要防止干扰,因此在同一波特率的情况下,接收时钟的频率要高于发送时钟的频率,在我们的系统中,接收时钟的频率是波特率的3倍。接收模块的也有一个移位寄存器子模块,它由10位构成,接收数据位、校验位和停止位。这个移位寄存器是“串入并出”的,它负责在(经3分频后的)接收时钟信号控制下,接收串行数据,并把收到的数据送发光管显示。即使在使能信号有效的情况下,上述移位寄存器也不总是进行移位操作的——只有发现了起始位,才开始进行移位,在收到停止位后,应结束移位操作。直接连接Rxd引脚的是一个只有3位的移位寄存器(也是“串入并出”),它在(未分频的)接收时钟信号控制下,接收串行数据,把一位串行数据转换成3位并行数据。在空闲状态下,如果发现连续两个0,则认为是收到了起始位,立即启动前述10位移位寄存器的移位操作。在进行10位移位寄存器移位时,其串行输入信号不要直接从Rxd引脚上输入,而是从3位的移位寄存器的并行输出再经过“判多”电路模块而来,这个判多模块实现这样一个功能:若3位输入中有2位或3位输入为1,则输出为1;否则输出为0。由于我们的接收模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中也应该有一个接收控制子模块,它的功能如下:③转发接收时钟信号——在使能信号有效的情况下,把系统传来接收时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。④控制10位移位寄存器的移位操作,即给它提供经过3分频的接收时钟信号。⑤检验接收的数据是否有差错,从而向蜂鸣器输出警示信号。二十四.接收控制模块的基本构成接收控制模块主要由格雷码计数器、译码器、数据选择器、3分频器以及一些逻辑门电路构成。二十五.接收模块的逻辑框图按照前面的分析,接收模块的逻辑框图如下:10二十六.格雷码计数器的逻辑功能格雷码计数器在值为0时(即空闲状态),不进行计数,在收到检测信号时,计数器被异步置1,以后在时钟信号的作用下,计数值按照格雷码当方式不断加1;当加到与输入的比较值相同时,计数器清零。二十七.译码器的逻辑功能译码器有2组输出,第一组输出用于指示格雷码计数器的最大值,在没有校验位时,若数据位控制是00(8位数据位),则输出应是9的格雷码;若数据位控制是01(7位数据位),则输出应是8的格雷码;若数据位控制是10(6位数据位),则输出应是7的格雷码;若数据位控制是11(6位数据位),则输出应是6的格雷码。如果有校验位,则输出应比上述值多1。译码器第二组输出根据数据位控制信号输出相应的屏蔽信号:在没有校验位时,若输入是00(8位数据位),则输出为1110;当输入是01(7位数据位),则输出为1100;当输入是1
本文标题:串口通信项目报告
链接地址:https://www.777doc.com/doc-312986 .html