ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:283.23KB ,
资源ID:11361787      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11361787.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(串行通信接口cpld.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

串行通信接口cpld.docx

1、串行通信接口cpld 常州信息职业技术学院 计算机学院(软件学院) 项目报告 学期: 2011第二学期院(系): 计算机/软件学院项目名称: 串行通信接口指导老师: 王璐、孙飞班级: 计应094 学号: 0908143407姓名: 谢海燕 项目时间: 2011/3/172011/4/17 目录一、项目要求二、模块的构成三、模块分析设计I、主模块分析设计 1、收发模块的I/O信号 2、 示模块的I/O信号 3、 控制模块的I/O信号 4 、时钟模块的I/O信号II、时钟模块分析设计III、控制模块分析设计 1、控制模块的逻辑框图 2、数据分配器的逻辑功能 3、译码器1的逻辑功能 4、译码器2的逻

2、辑功能 5、译码器3的逻辑功能 6、译码器4的逻辑功能IV、显示模块分析设计 1、显示模块设计的框图、发送模块分析设计 1、移位寄存器模块的I/O信号 2、去抖动模块的I/O信号 3、发送控制模块的I/O信号 4、发送模块的逻辑框图VI、发送控制模块分析设计 1、发送控制模块的基本构成 2、发送控制模块的逻辑框图 3、译码器1的逻辑功能 4、译码器2的逻辑功能VII、发送移位寄存器模块分析设计 1、发送移位寄存器模块的基本构成 2、发送移位寄存器模块的逻辑框 VIII、接收模块分析设计 1、接收模块的基本构成 2、10位移位寄存器模块的I/O信号 3 、3位移位寄存器模块的I/O信号 4 、判

3、多模块的I/O信号 5 、接收控制模块的I/O信号 6 、接收模块的逻辑框图IX、接收控制模块分析设计 1 、 接收控制模块的基本构成 2 、 接收模块的逻辑框图 3 、 格雷码计数器的逻辑功能 4 、 译码器的逻辑功能 5 、 数据选择器1的逻辑功能 6 、 数据选择器2的逻辑功能X 、收发模块设计分析四、程序改错五、引脚锁定 1、单独数码管引脚锁定 2、 8个LED灯引脚锁定 3、四段数码管片选引脚锁定 4、四段数码管引脚锁定 5、码开关引脚锁定 6、其他引脚锁定 六、项目小结 一、项目要求 串行通信接口项目在实验板上构成一个全双工的串行通信接口,用户利用这个串行接口,可以与PC机或其它设

4、备进行串行通信,并可以设置串行通信的格式。系统的状态分成工作状态和设置状态:在工作状态下,进行串行通信;在设置状态下,进行通信格式的设置。该系统用5个数码管(一个单独的数码管和一个4位数码管)显示串行通信的格式,比如串行通信的波特率是4800,7位数据位,校验方式为偶校验,则数码管显示为“E 48-7”。当系统处于工作状态时,如果收到串行数据,则把该数据显示在发光管上,如果接收到的数据有错误(包括奇偶校验错误和帧错误),则让蜂鸣器发出响声。在工作状态下,若用户按下K1按键,则把拨码开关上的数据发送出去。在工作状态下,如果用户按下K2按键,进入设置状态,首先设置进行校验方式的设置:这时单独的数码

5、管闪烁显示,若用户按下K3按键可以改变校验方式(共有O、E、n三个取值)。在此过程中,如果用户再次按下K2按键,可以进行波特率的设置:这时4位数码管的高两位闪烁,若用户按下K3按键可以改变波特率(共有96、48、24、12四个取值)。在此过程中,如果用户再次按下K2按键,可以改变数据位位数:这时4位数码管的最低位闪烁,用户按下K3按键可以改变数据位的位数(共有8、7、6、5四个取值)。在此过程中,如果用户再次按下K2按键,则系统又回到工作状态。此项目通过用Verilog HDL语言,在QuartusII7.2环境下进行编程,完成电路图的设计,最后通过实验板下载,完成项目的功能的实现。由于项目比

6、较复杂,代码比较多,模块比较多,利用模块化进行设计,在进行项目设计时,模块化设计是非常好好的方法,可以给设计人员带来很大的便利。二、项目模块的构成项目运用模块化进行设计。这个项目总共分成以下几个模块:1、 主模块分析设计2、 时钟模块分析设计3、 控制模块分析设计4、 显示模块分析设计5、 发送模块分析设计a、发送控制模块分析设计b、发送移位寄存器模块分析设计 6、接收模块分析设计 a、接收控制模块分析设计 b、接收移位寄存器模块分析设计 c、判多模块分析设计三、模块分析过程设计 I、主模块分析设计根据设计要求,该系统可以分成4个模块:收发模块(进行串行通信的发送和接收)、显示模块(显示通信的

7、数据格式)、控制模块(控制系统的工作)、时钟模块(向系统各部分提供各种频率的时钟信号)。 1、收发模块的I/O信号收发模块是实际进行串行通信的模块,它应该通过Txd和Rxd两条线与RS-232电平转换芯片连接,串行数据就是通过这两条线进行发送和接收的。控制模块应该向收发提供一组控制信号,包括是否可以进行串行通信的控制信号、校验方式控制信号、数据位位数信号,共5位信号。该模块应该连接拨码开关和K1按键,以控制进行串行数据的发送,共9位信号。该模块还应该连接8个发光管和蜂鸣器,用以显示接收到的串行数据,并警示数据的差错,共9位信号。收发模块所需要的时钟信号有:50Hz信号(用于K1按键的去抖动)、

8、1000Hz信号(用于蜂鸣器的发声)、串行数据发送时钟信号(用于串行数据发送)、串行数据接收时钟信号(用于串行数据接收),共4位信号。2 、显示模块的I/O信号显示模块要控制一个单独的数码管和一个4位数码管显示串行通信的数据格式。显示模块的输出有:控制单个数码管显示的8位信号、控制4位数码管显示的4位位选信号和8位字段码信号,共20位信号。显示模块输入的数据信号有:单个数码管的显示数据信号(4位)、4位数码管的显示数据信号(44位),共20位信号。显示模块所输入的控制信号就是5个数码管的闪烁信号,当某个数码管需要闪烁,则对应位为“1”。显示模块所需要的时钟信号有:400Hz时钟信号(用于数码管

9、动态显示)、1Hz时钟信号(用于数码管的闪烁)。3、 控制模块的I/O信号控制模块应该连接K2、K3按键,用于设置串行通信的格式。控制模块向收发模块发出1组控制信号,用于串行通信的使能信号、校验方式控制信号、数据位位数信号,共5位信号。控制模块还要向显示模块输出数据信号,包括:单个数码管的显示数据信号(4位)、4位数码管的显示数据信号(44位),共20位信号。控制模块还要向显示模块输出闪烁控制信号,共5位信号。控制模块还要向时钟模块发出两位控制信号,用于控制串行数据发送时钟、接收时钟的实际频率。控制模块需要输入的时钟信号只有一个:50Hz的时钟信号(用于K2、K3按键去抖动)。4、时钟模块的I

10、/O信号时钟模块的输入信号是系统提供的24MHz时钟信号。它输出的信号有:1Hz信号、50Hz信号、400Hz信号、1000Hz信号、串行数据发送时钟信号、串行数据接收时钟信号(这两个信号的实际频率由控制信号决定),一共6位信号。时钟模块接收的控制信号用于控制串行数据发送时钟、接收时钟的实际频率,共2位信号。按照前面的分析,主模块的逻辑框图如下: II、时钟模块分析设计根据设计要求,时钟模块主要为系统各部分提供各种频率的时钟信号,因此该模块主要由几个分频器构成。另外由于输出的发送和接收时钟信号的具体频率,受控制模块传来的信号控制,所以还需要一个数据选择器。按照前面的分析,时钟模块的逻辑框图如下

11、:III、控制模块分析设计 根据设计要求,该系统可以分成这几个模块:去抖动模块(用于K2、K3按键)、一个表示系统状态的四进制计数器、一个3进制计数器用于表示校验方式、另外两个4进制计数器分别用于表示数据位位数和波特率,另外还有4个译码器以及少量门电路。、控制模块的逻辑框图按照前面的分析,控制模块的逻辑框图如下: 2、数据分配器的逻辑功能该模块的数据分配器,用于控制(去抖动后的)K3按键信号的传递对象,当控制信号是00时,输出信号全是1;当控制信号是01时,K3按键信号传递给校验方式计数器,另两个输出信号是1;当控制信号是10时,K3按键信号传递给波特率计数器,另两个输出信号是1;当控制信号是

12、11时,K3按键信号传递给数据位数计数器,另两个输出信号是1。3、译码器1的逻辑功能译码器1用于控制,当输入信号是00时(工作状态),输出是00000(无闪烁);当输入信号是01时(设置校验方式),输出是10000(单独数码管闪烁);当输入信号是10时(设置波特率),输出是01100(4位数码管高2位闪烁);当输入信号是11时(设置波特率),输出是00001(4位数码管最低位闪烁)。4、译码器2的逻辑功能译码器2用于给单个数码管传送显示数据,而显示的内容为“n”、“O”、“E”,当输入为0x时(无校验),输出为1010(显示“n”);当输入为10时(偶校验),输出为1110(显示“E”); 当

13、输入为11时(奇校验),输出为0000(显示“O”)。5、译码器3的逻辑功能译码器3用于给4位数码管的高2位传送显示数据,当输入为00时(9600波特率),输出为8h96;当输入为01时(4800波特率),输出为8h48;当输入为10时(2400波特率),输出为8h24;当输入为11时(1200波特率),输出为8h12。6、译码器4的逻辑功能译码器4用于给4位数码管的最低位传送显示数据,当输入为00时(8位数据位),输出为4h8;当输入为01时(7位数据位),输出为4h7;当输入为10时(6位数据位),输出为4h6;当输入为11时(5位数据位),输出为4h5; IV、显示模块分析设计显示译码器

14、由显示译码器、数据选择器、变量译码器、四进制计数器以及一些门电路构成。1、显示模块设计的框图按照前面的分析,显示模块的逻辑框图如下:V、发送模块分析设计发送模块的核心是一个“并入串出”的移位寄存器子模块,它在(去抖动后的)K1按键信号的控制下,可以接收并行的拨码开关信号(还包括起始位和校验位);并在发送时钟的控制下,可以数据的移位,并把最低位进行输出到Txd引脚上。发送模块还应该包括一个去抖动子模块,用于K1按键的去抖动。由于我们的发送模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中还应该有一个发送控制子模块,它的功能如下:1 转发发送时钟信号在使能信号有效的情况下,把系统传来发送

15、时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。2 转送拨码开关信号在不同的数据格式下,传给移位寄存器模块的拨码开关信号是不一样的,有些时候要屏蔽掉一些位,还要处理校验位。1、移位寄存器模块的I/O信号移位寄存器模块应该通过Txd信号线与RS-232电平转换芯片连接。移位寄存器模块接收的控制信号是去抖动后的K1按键信号,它决定移位寄存器是接收并行数据,还是进行串行移位。移位寄存器模块接收的并行数据共有9位,包括8位拨码开关信号和1位校验位信号。发送模块所需要的时钟信号是经过转发的串行数据发送时钟信号。2、去抖动模块的I/O信号去抖动子模块,用于按键的去抖动,这

16、比较简单,只要一个D触发器就可以完成:触发器的数据输入端D接按键,CP端接50Hz时钟信号,触发器的输出信号就是我们需要的去抖动后的信号。3、发送控制模块的I/O信号发送控制模块的输入的控制信号就是系统传来的5位控制信号,包括使能信号(1位)、数据位位数控制信号(2位)、校验方式控制信号(2位)。因为要转发发送时钟信号,所以要有1位时钟输入信号和1位时钟输出信号。又因为要转送拨码开关信号,所以要有8位数据输入信号,而输出给移位寄存器模块的信号应该包含校验位,所以输出的数据信号有9位。4、发送模块的逻辑框图按照前面的分析,发送模块的逻辑框图如下:VI、发送控制模块分析设计1、发送控制模块的基本构

17、成 发送控制模块要转发发送时钟信号,在使能信号有效的情况下,把系统传来发送时钟信号再转发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。该模块要产生校验位,这可以把拨码开关上的数据相互进行异或而成,因为数据位的位数也是可变的,所以要先把这些数据的一些位进行清0(通过译码器1和与门实现),然后再进行异或。然后再根据校验的方式进行处理:如果是奇校验则不处理,如果是偶校验则取反,如果是无校验则固定为“1”。这里还需要另一个译码器(译码器2),它完成数据位高3位和校验位的处理。2、发送控制模块的逻辑框图按照前面的分析,发送控制模块的逻辑框图如下:3、译码器1的逻辑功能译码器1就是根

18、据数据位控制信号输出相应的屏蔽信号:当输入是00(8位数据位),则输出为111;当输入是01(7位数据位),则输出为011;当输入是10(6位数据位),则输出为001;当输入是11(5位数据位),则输出为000。4、译码器2的逻辑功能译码器2,根据数据位控制信号完成数据位高3位和校验位的处理。当数据位控制信号是00(8位数据位),则输出为:校验位、000;当数据位控制信号是01(7位数据位),则输出为:1、校验位、00;当数据位控制信号是10(6位数据位),则输出为:11、校验位、0;当数据位控制信号是00(5位数据位),则输出为:111、校验位。VII、发送移位寄存器模块分析设计1、发送移位

19、寄存器模块的基本构成 发送模块移位寄存器(并入串出)模块应该由11位移位寄存器构成,在(去抖动后)的K1按键控制下,或接收并行数据(K1信号为1),或进行移位(K1信号为0),最低位作为串行数据输出(Txd)。在接收并行数据时,最低位的值固定为1,这是因为一旦接收了并行数据,Txd引脚上就马上出现最低位的信号,而这时显然还没到发送数据的时候,所以应该发出高电平的“空闲位”。在接收并行数据时,而次低位的值固定为0,这是起始位。在接收并行数据时,高9位是控制模块转送的拨码开关信号和校验位信号(当数据位不足8位时,由发送控制模块在高位上添加上“1”)。在进行移位时,在发送时钟信号的控制下,11位数据

20、向低位方向移动,最高位固定补“1”(形成停止位)。2、发送移位寄存器模块的逻辑框图程序:module yiweijicun(clk_out,key1_out,jiaoyan,txd);input clk_out,key1_out;input8:0jiaoyan;output txd;reg10:0send_reg;always(negedge clk_out)begin if(key1_out=1b1) send_reg10:0=1b1,send_reg10:1; else send_reg10:0=jiaoyan,2b01;end assign txd=send_reg0;/把最低位送到发送

21、引脚上endmoduleVIII、接收模块分析设计 1、接收模块的基本构成 由于在接收过程中,要防止干扰,因此在同一波特率的情况下,接收时钟的频率要高于发送时钟的频率,在我们的系统中,接收时钟的频率是波特率的3倍。接收模块的也有一个移位寄存器子模块,它由10位构成,接收数据位、校验位和停止位。这个移位寄存器是“串入并出”的,它负责在(经3分频后的)接收时钟信号控制下,接收串行数据,并把收到的数据送发光管显示。即使在使能信号有效的情况下,上述移位寄存器也不总是进行移位操作的只有发现了起始位,才开始进行移位,在收到停止位后,应结束移位操作。直接连接Rxd引脚的是一个只有3位的移位寄存器(也是“串入

22、并出”),它在(未分频的)接收时钟信号控制下,接收串行数据,把一位串行数据转换成3位并行数据。在空闲状态下,如果发现连续两个0,则认为是收到了起始位,立即启动前述10位移位寄存器的移位操作。 在进行10位移位寄存器移位时,其串行输入信号不要直接从Rxd引脚上输入,而是从3位的移位寄存器的并行输出再经过“判多”电路模块而来,这个判多模块实现这样一个功能:若3位输入中有2位或3位输入为1,则输出为1;否则输出为0。由于我们的接收模块可以采用多种数据格式,并受到使能信号的控制,所以该模块中也应该有一个接收控制子模块,它的功能如下:3 转发接收时钟信号在使能信号有效的情况下,把系统传来接收时钟信号再转

23、发给移位寄存器模块,若使能信号无效,则不转发,这可以用一个与非门实现。4 控制10位移位寄存器的移位操作,即给它提供经过3分频的接收时钟信号。检验接收的数据是否有差错,从而向蜂鸣器输出警示信号。2、10位移位寄存器模块的I/O信号 10位移位寄存器模块显然有1位串行数据输入信号线。该模块另外还应该有10位并行数据输出信号线。该模块还应该有1个用于移位的接收时钟信号线。3、3位移位寄存器模块的I/O信号 3位移位寄存器模块显然有1位串行数据输入信号线。该模块另外还应该有3位并行数据输出信号线。该模块还应该有1个用于移位的接收时钟信号线。另外该模块还应该附加一个或门,用于判断起始位(连续收到两位低

24、电平信号,可以认为是起始位)。4、判多模块的I/O信号在我们的系统中,判多电路模块用于减少干扰信号,它应有3位输入信号,输出是1位信号5、接收控制模块的I/O信号 接收控制模块要负责转发接收时钟信号,因此它有1位接收时钟输入信号和1位接收时钟输出信号。还要输出1位(经3分频后的)接收时钟输出信号。接收控制模块输入的控制信号包括系统传来的5位控制信号,包括使能信号(1位)、数据位位数控制信号(2位)、校验方式控制信号(2位)。接收控制模块输入的控制信号还有从3位移位寄存器传来的起始位检测信号。接收控制模块还要对收到的数据进行检验,所以它应该输入由10位移位寄存器模块而来的数据信号。接收控制模块还

25、要把其中的数据位送到发光管上,所以还需要8位输出数据信号。6、接收模块的逻辑框图 按照前面的分析,接收模块的逻辑框图如下:/判多模块module panduo(in,out);input2:0 in; /三位数据输入output out; /1位数据输出assign out = in2 & in1 | in2 & in0 | in1 & in0;endmoduleIX、接收控制模块分析设计 1、接收控制模块的基本构成接收控制模块主要由格雷码计数器、译码器、数据选择器、3分频器以及一些逻辑门电路构成 2、接收模块的逻辑框图 按照前面的分析,接收模块的逻辑框图如下: 3、格雷码计数器的逻辑功能 格

26、雷码计数器在值为0时(即空闲状态),不进行计数,在收到检测信号时,计数器被异步置1,以后在时钟信号的作用下,计数值按照格雷码当方式不断加1;当加到与输入的比较值相同时,计数器清零。4、译码器的逻辑功能 译码器有2组输出,第一组输出用于指示格雷码计数器的最大值,在没有校验位时,若数据位控制是00(8位数据位),则输出应是9的格雷码;若数据位控制是01(7位数据位),则输出应是8的格雷码;若数据位控制是10(6位数据位),则输出应是7的格雷码;若数据位控制是11(6位数据位),则输出应是6的格雷码。如果有校验位,则输出应比上述值多1。译码器第二组输出根据数据位控制信号输出相应的屏蔽信号:在没有校验

27、位时,若输入是00(8位数据位),则输出为1110;当输入是01(7位数据位),则输出为1100;当输入是10(6位数据位),则输出为1000;当输入是11(5位数据位),则输出为0000。在有校验位时,若输入是00(8位数据位),则输出为1111;当输入是01(7位数据位),则输出为1110;当输入是10(6位数据位),则输出为1100;当输入是11(5位数据位),则输出为1000。5、数据选择器1的逻辑功能 数据选择器1,用于在9位的数据/校验位当中,选择输出8位数据位:在无校验时,高8位是数据位;在有校验时,低8位是数据位。6、数据选择器2的逻辑功能数据选择器2,用于选择3位信号中的1位

28、输出:当输入是0x时(无校验),则输出是1b1;当输入是10时(偶校验),则输出是反向器的输出;当输入是0x时(奇校验),则输出是异或门的输出.X 、收发模块设计分析1、收发模块的基本构成收发模块负责进行串行数据的发送和接收,显然该收发模块又可以分成2个子模块:发送模块(进行串行信号的发送)、接收模块(进行串行信号的接收)。2、发送模块的I/O信号发送模块应该通过Txd信号线与RS-232电平转换芯片连接。发送模块接收的控制信号包括:串行通信的使能信号、校验方式控制信号、数据位位数信号,共5位信号。发送模块应该连接拨码开关和K1按键,以控制进行串行数据的发送,共9位信号。发送模块所需要的时钟信

29、号有:50Hz信号(用于K1按键去抖动)、串行数据发送时钟信号(用于串行数据发送),共2位信号。3、接收模块的I/O信号接收应该通过Rxd信号线与RS-232电平转换芯片连接。接收模块也应该从控制模块获得控制信号包括:串行通信的使能信、校验方式控制信号、数据位位数信号,共5位信号。接收模块应该连接8个发光管和蜂鸣器,用以显示接收到的串行数据,并警示数据的差错,共9位信号。收发模块所需要的时钟信号有:1000Hz信号(用于蜂鸣器的发声)、串行数据接收时钟信号(用于串行数据接收),共2位信号。4、收发模块的逻辑框图按照前面的分析,收发模块的逻辑框图如下:四、程序错误1、程序中的main中的函数名要

30、和工程名一致;2、程序出错,如果出现reform是多长,现在多长,则是宽度定义不对;3、顶层模块调用小模块时输入输出口和小模块顺序不一致;4、编译错误提示:“Error:Cant access JTAG chain ; Error Operation failed 这是电缆线没有接好或者损坏或者电源没打开;5、引脚错误会出现显示乱码、顺序错误等问题,调试前应先仔细检查各个引脚,确保无误;6、顶层模块调用要记得定义连线(wire);五、引脚锁定单独数码管引脚锁定8个LED灯引脚锁定.四段数码管片选引脚锁定.四段数码管引脚锁定拨码开关引脚锁定其他引脚锁定K1、K2、K3、串行输入输出、蜂鸣器的引脚锁定六、项目小结这学期开始的第二个项目,感觉上就和之前的教学方案不同,这学期很系统的,把所学的知识合并一起来完成一个项目,这样有目的性的学习,让我更了解自己学的这个CPLD知识到底能用在哪些地方,怎么用,给同学指明了方向。CPLD与单片机的思想不能等同,所以我们不能以C语言的思想考虑问题,就如:三分频里面的,begin if(count=2b10) count=2b00;else count=count+1b1; end 用C语言思想可以反过来,但是在CPLD不一样,在CPLD里面应该考虑电路板怎么工作。而CPLD与单片机不同之处是,用模块化的方法编写程序,

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

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