欢迎来到天天文库
浏览记录
ID:3145153
大小:2.54 MB
页数:12页
时间:2017-11-19
《基于fpga的uart设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一章设计要求一、设计一个全双工UART电路,具体要求如下:1)支持数据格式:起始位(1bit)+数据(8bit)+奇偶校验位(1bit)+终止位(1bit)2)奇/偶校验可配置3)可配置支持115200以下的常见波特率4)支持115200以下的波特率自适应,自适应过程如下:a.复位后,UART首先接收输入,不断自动调整波特率,直到以一定波特率正确连续接收到3个bytes的0x55b.接着UART以此波特率连续发送3个bytes0xaac.之后两端以此波特率进行通信d.波特率自适应只在电路复位后进行一次,如欲再次自适应波特率应对电路再次复位e.波特率自适应过程中不能对UART的波特率作任何
2、设置,自适应完成后可以对波特率作设置5)自动计算校验位用于发送数据;对接收到的校验位和数据进行校验,发现错误应设置错误标志,并丢弃数据6)对接收不正常数据(如无终止位、无校验位、数据位数不正确等)应能自动识别并设置错误标志、丢弃二、设计工具:1)所有电路采用VerilogHDL或原理图方法进行设计2)在QuartusII下进行设计3)综合和仿真可以采用其他工具,如综合可以采用Synplify,仿真可以采用ModelSim4)目标器件采用与实验箱相同的器件第二章相关理论与技术2.1UART相关内容简介2.1.1复杂可编程逻辑器件FPGA简介FPGA(Field-ProgrammableGat
3、eArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。2.1.2RS-232介绍RS232接口,就是普通电脑后面那个串口。一般为9针的,也有25针的。是197
4、0年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”(RS-232C,其中C表示此标准修改了三次).标准中包括了电气和机械方面的规定.该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定.后来随着设备的不断改进,成了目前大家普遍见到的9脚。在不使用传输控制信号的情况下,用3根线就可以传输了,9芯的是2收3发5地,25芯的是2发3收7地。两设备用RS232相连的时候为收——发,发——收,
5、地——地。2.3硬件结构设计UART处理的是并行数据转为串行信号和串行数据转为并行,但并不是简单的转换。分析UART的结构,可以看出UART主要由数据总线接口、控制逻辑接口、波特率发生器、发送逻辑和结束逻辑等部分组成,各部分间的关系如图1所示。图1UART通信接口结构图2.4软件设计软件采用Altera公司的MAX+PLUSⅡ设计逻辑结构,设计的内容包括通用I/O地址译码器、各个寄存器以及UART核。UART核主要包括3个部分:波特率发生器、数据发送部分和数据接收部分。I/O地址译码器和UART核使用硬件描述语言VHDL来编写实现。2.4软件设计软件采用Altera公司的MAX+PLUSⅡ
6、设计逻辑结构,设计的内容包括通用I/O地址译码器、各个寄存器以及UART核。UART核主要包括3个部分:波特率发生器、数据发送部分和数据接收部分。I/O地址译码器和UART核使用硬件描述语言VHDL来编写实现。地。第三章课题详细设计与实现3.1UART的整体设计一般UART通信通过两条信号线完成数据的全双工通信任务。其中,TxD是UART发送端,为输出;RxD是UART接收端,为输入。波特率发生器、接收器和发送器是UART的三个核心功能模块。我们所做的设计主要为数据接收模块。如图3所示的即为接收器的硬件连接示意图,数据从计算机的串口TxD端传送给FPGA的RxD端,最后由LED显示出数据。
7、我们采用状态机的方式来实现串口通讯功能,用一个接收状态寄存器state_rec来表示当前状态。空闲时state_rec=0,此时不断监测接收端口的电平,如果低电平连续保持两个时隙,则转向接受数据状态,state_rec的值从1-8跳转,接受8bit数据。如果低电平没有保持两个时隙,则重新回到空闲状态,state_rec=0。当八位数据接收完毕,则跳转到停止状态,state_rec=9,此时无论接收端口电平高低,均在下一个
此文档下载收益归作者所有