《2022年FPGA课程设计方案FPGA器件设计方案与实现UART.docx》由会员分享,可在线阅读,更多相关《2022年FPGA课程设计方案FPGA器件设计方案与实现UART.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源封面欢迎下载精品学习资源作者: PanHongliang仅供个人学习目录摘要 III ABSTRACTIV引言 1欢迎下载精品学习资源1 工程构成的基本原理 21.1 、UART简介 21.2 、UART的基本特点 2 2 工程实现的基本原就 32.1 、FPGAUART系统组成如图 2 所示: 32.2 、波特率发生器 32.3 、UART接收器 32.4 、UART发送器 52.5 芯片的选择 5 3 程序设计 63.1 顶层程序 63.2 UART发送器程序 83.3 UART接收器程序 103.4 整体电路图 12 4 仿真 124.1 顶层仿真 124.2 波特率发生器仿
2、真 13 4.3UART发送器仿真 134.4 UART接收器仿真 13 5 总结 136 参考文献 14摘 要基于 FPGA 设计和实现UART ,可以用片上很少的规律单元实现UART 的基本功能;与传统设计相比,能有效削减系统的PCB 面积,降低系统的功耗,提高设计的稳固性和牢靠性,并可便利地进行系统升级和移植;接受有限状态机模型形式化描述了UART 的功能 ,在此基础上用硬件描述语言VHDL编程实现了 UART ,并使用 Quartus软件中的嵌入式规律分析仪SignalTap对数据传输进行了检测,验证了设计的正确性;本设计具有较大的灵敏性,通过调整波特率发生器的分频参数,就可以使其工作
3、在不 同的频率;接受 16 倍波特率的采样时钟,可以实时有效探测数据的起始位,并可对数据位进行“对准”中心采样,保证了所采样数据的正确性;该模块可以作为一个完整的IP核移植进各种 FPGA 中,在实际应用时可嵌入到其他系统中,很简洁实现和远端上位机欢迎下载精品学习资源的异步通信;关键字 : FPGA;UART ;有限状态机; SignalTapAbstractDesign and implementation based on FPGA UART, can be used on a few logical unit realizes the basic function of UART. Co
4、mpared with the traditional design, can effectively reduce the PCB area system, reduce the power consumption of the system, and improve the design of the stability and reliability, and easy system upgrades and migration.The functions of UART are described formally by using the finite state machinemo
5、del, by the way, UART is realized on the basis ofVHDL. Moreover, the data transmission is detected欢迎下载精品学习资源with SignalTap which is an embedded logic analyzer in Quartusof the design. The result proves the validity欢迎下载精品学习资源This design has great flexibility,by adjusting the frequency division baud r
6、ate generator parameters, you can make it work on a different frequency. Using 16 times the baud rate of the sampling clock, can effectively detect real-time data of the start bit, and to on the central sampling of data bits, ensures the correctness of the sampled data. The module can be used as a c
7、omplete IP nuclear transplantation into various kinds of FPGA, in the actual application can be embedded intoothersystems, iseasy toimplementand the remote PC asynchronous communication.Key word: FPGA; UART ; finite state machine;SignalTap欢迎下载精品学习资源引言随着电子设备功能的不断增强 ,复杂度也在不断提高 ,对这些系统的测试要求也越来越高,因而促进了自动
8、测试系统的进展;而数字I/O 模块作为自动测试系统重要的测试模块, 它既可以作为信号源勉励被测系统,也可以检测被测系统的输出,在许多领域得到了特殊广泛的应用 ;当今社会是数字化的社会,是数字集成电路广泛应用的社会;数字集成电路本身在不断地进行更新换代;它由早期的电子管、晶体管、小中规模集成电路、进展到超大规模集成电路 VLSIC以及许多具有特定功能的专用集成电路;但是,随着微电子技术的进展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担;系统设计师们更愿意自己设计专用集成电路ASIC 芯片,而且期望ASIC 的设计周期尽可能短,最好是在试验室里就能设计出合适的ASIC 芯片,并且立刻投
9、入实际应用之中,因而显现了现场可编程规律器件 FPLD ,其中应用最广泛的当属现场可编程门阵列FPGA和复杂可编程规律器件 CPLD ;欢迎下载精品学习资源1 工程构成的基本原理1.1 、UART 简介UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口;常常用于短距离、低速、低成本的通讯 中;8250、8251、NS16450等芯片都是常见的 UART器件;基本的 UART通信只需要两条信号线( RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式; TXD是 UART发送端,为输出;
10、RXD是 UART接收端,为输入;1.2 、UART 的基本特点(1) 在信号线上共有两种状态,可分别用规律1(高电平)和规律 0(低电平)来区分;在发送器闲暇时,数据线应当保持在规律高电平状态;(2) 起始位( Start Bit):发送器是通过发送起始位而开头一个字符传送,起始位使数据线处于规律 0 状态,提示接受器数据传输即将开头;(3) 数据位( Data Bits):起始位之后就是传送数据位;数据位一般为8 位一个字节的数据(也有 6 位、7 位的情形),低位( LSB)在前,高位( MSB)在后;(4) 校验位( parity Bit):可以认为是一个特殊的数据位;校验位一般用来判
11、定接收的数据位有无错误,一般是奇偶校验;在使用中,该位常常取消;(5) 停止位:停止位在最终,用以标志一个字符传送的终止,它对应于规律 1 状态;(6) 位时间:即每个位的时间宽度;起始位、数据位、校验位的位宽度是一样的,停止位有 0.5 位、1 位、1.5 位格式,一般为 1 位;(7) 帧:从起始位开头到停止位终止的时间间隔称之为一帧;8)波特率: UART的传送速率,用于说明数据传送的快慢;在串行通信欢迎下载精品学习资源中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率;如波特率 9600=9600bps(位/ 秒); UART的数据帧格式为如图 1 所示
12、图 1: UART的数据帧格式2 工程实现的基本原就2.1 、FPGA UART系统组成如图 2 所示:欢迎下载精品学习资源FPGA UAR由T图 2: FPGA UART系统组成三个子模块组成:欢迎下载精品学习资源(1) 波特率发生器;(2) 接收模块;(3) 发送模块;2.2 、波特率发生器波特率发生器实际上就是一个分频器;可以依据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数;波特率分频因子可以依据不同的应用需要更换;2.3 、UART 接收器由于串行数据帧和接收时钟是异步的,由规律1 转为规律 0 可以被视为一个数据帧的起始位;然
13、而,为了防止毛刺影响,能够得到正确的起始位信号,必需要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于规律0 才可认定接收到的是起始位;由于内部采样时钟bclk 周期(由波特率发生器产生)是发送或接收波特率时钟频率的16 倍,所以起始位需要至少8 个连续bclk 周期的规律 0 被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔 16 个 bclk 周期被采样一次(即每一个波特率时钟被采样一次);假如欢迎下载精品学习资源起始位的确是 16 个 bclk 周期长,那么接下来的数据将在每个位的中点处被采样;图 3: UART接收器的接收状态机R_START状态:当 UART接收器
14、复位后,接收状态机将处于这一个状态;在 此状态,状态机始终在等待 RXD的电平跳转,从规律 1 变为规律 0,即起始位,这意味着新的一帧UART数据帧的开头,一旦起始位被确定,状态机将转入R_CENTE状R 态;状态图中的 RXD_SYN信C号是 RXD的同步信号,由于在进行逻 辑 1 或规律 0 判定时,不期望检测的信号是不稳固的,所以不直接检测RXD信号,而是检测经过同步后的 RXD_SYN信C 号;R_CENTE状R 态:对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差较小,明显在每位的中点检测是最为理想的;在本状态,就是由起始位求出每位的中点,通过对
15、bclk 的个数进行计数( RCNT1)6 ,但计数值不是想当然的“ 1000”,要考虑经过一个状态,也即经过了一个 bclk 周期,所期望得到的是在采样时1/2 位;另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然显现的干扰尖脉冲(负脉冲);这种干扰脉冲的周期是很短的,所以可以认为保持规律0超过 1/4 个位时间的信号确定是起始位;R_WAIT状态: 当状态机处于这一状态,等待计满 15 个 bclk ,在第 16 个bclk 是进入 R_SAMPL状E 态进行数据位的采样检测,同时也判定是否采集的数据位长度已达到数据帧的长度( FRAMELE)N,假如到来,就说
16、明停止位来临了;FRAMELE在N设计时是可更换的(使用了 Generic ),在本设计中默认为8,即对应的 UART工作在 8 位数据位、无校验位格式;R_SAMPL状E 态:即数据位采样检测,完成后无条件状态机转入R_WAIT状态,等待下次数据位的到来;R_STOP状态:无论停止位是 1 仍是 1.5 位,或是 2 位,状态机在 R_STOP不具体检测 RXD,只是输出帧接收完毕信号( REC_DONEclk32mhz,resetb=reset,bclk=b ;-顶层映射u2:reciever port mapbclkr=b,resetr=reset,rxdr=rxd,r_ready=re
17、c_ready, rbuf=rec_buf;u3:transfer port mapbclkt=b,resett=reset,xmit_cmd_p=xmit_cmd_p_in,txdbuf=txdbuf_in,txd=txd_out,txd_done=txd_done_out;end Behavioral;3.2 波特率发 生器程序library IEEE;use IEEE.STD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity baud isPort clk,reset
18、b:in std_logic;bclk:out std_logic;end baud;architecture Behavioral of baud is欢迎下载精品学习资源begin processclk,resetb variable cnt:integer;beginif resetb=1 then cnt:=0; bclk=208 then cnt:=0; bclk=1;-设置分频系数else cnt:=cnt+1; bclk=0;end if;end if;end process;end Behavioral;3.2 UART 发送器程序library IEEE;use IEEE.S
19、TD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity transfer is genericframlent:integer:=8;Port bclkt,resett,xmit_cmd_p:in std_logic;-定义输入输出信号txdbuf:in std_logic_vector7 downto 0:=11001010;txd:out std_logic;txd_done:out std_logic;end transfer;architecture Behavio
20、ral of transfer is欢迎下载精品学习资源type states is x_idle,x_start,x_wait,x_shift,x_stop; signal state:states:=x_idle;-定义个子状态欢迎下载精品学习资源signal tcnt:integer:=0;beginprocessbclkt,resett,xmit_cmd_p,txdbuf-主-控时序、组合进程欢迎下载精品学习资源variable xcnt16:std_logic_vector4 downto 0:=00000;-定义中间变量variable xbitcnt:integer:=0;var
21、iable txds:std_logic;beginif resett=1 then state=x_idle; txd_done-状态 1,等待数据帧发送命令if xmit_cmd_p=1 then state=x_start;txd_done=0;else state-状态 2,发送信号至起始位if xcnt16=01111 then state=x_wait; xcnt16:=00000;else xcnt16:=xcnt16+1; txds:=0; state -状态 3,等待状态if xcnt16=01110 thenif xbitcnt=framlent then state=x_
22、stop; xbitcnt:=0 ;else state=x_shif;tend if;xcnt16:=00000;else xcnt16:=xcnt16+1; statetxds:=txdbufxbitcnt;xbitcnt:=xbitcnt+1;state-状态 5,停止位发送状态if xcnt16=01111 thenif xmit_cmd_p=0 then state=x_idle; xcnt16:=00000;else xcnt16:=xcnt16; state=x_stop;end if; txd_done=1;else xcnt16:=xcnt16+1; txds:=1; sta
23、testate=x_idle;end case;end if;txd=txds; end process; end Behavioral;3.3 UART 接收器程序library IEEE;use IEEE.STD_LOGIC_1164.ALL ;use IEEE.STD_LOGIC_ARITH.ALL ;use IEEE.STD_LOGIC_UNSIGNED.ALL ;entity reciever is genericframlenr:integer:=8;Port bclkr,resetr,rxdr:in std_logic;-定义输入输出信号r_ready:out std_logic
24、;rbuf:out std_logic_vector7 downto 0;end reciever;architecture Behavioral of reciever is欢迎下载精品学习资源type states is r_start,r_center,r_wait,r_sample,r_stop; signal state:states:=r_star;t-定义各子状态欢迎下载精品学习资源signal rxd_sync:std_logic;beginpro1:processrxdr beginif rxdr=0 thenrxd_sync=0;else rxd_sync=1;end if
25、;end process;pro2:processbclkr,resetr,rxd_sync主-控时序、组合进程欢迎下载精品学习资源variable count:std_logic_vector3 downto 0;-定义中间变量variable rcnt:integer:=0;variable rbufs:std_logic_vector7 downto 0;begin欢迎下载精品学习资源if resetr=1 then state-状态 1,等待起始位欢迎下载精品学习资源if rxd_sync=0 thenstate=r_cente;relse state=r_star;t end if;
26、r_ready=0; rcnt:=0;r_ready-状态 2,求出每位的中点if rxd_sync=0 thenif count=0100 then state=r_wait; count:=0000 ;else count:=count+1; state=r_cente;rend if;else state-状态 3,等待状态if count=1110 then欢迎下载精品学习资源if rcnt=framlenr then state=r_stop;else state=r_sample;end if;count:=0000;else count:=count+1; staterbufsr
27、cnt:=rxd_sync; rcnt:=rcnt+1;stater_readystate=r_star;t end case;end if;end process; end Behavioral;3.4 整体电路图rbuf=rbufs; state=r_star;t-状态 4,输出帧接收欢迎下载精品学习资源整个系统的 : 整体电路图如图 5 所示:图 5:系统的整体电路图4 仿真4.1 顶层仿真欢迎下载精品学习资源仿真波形图如图 4 所示;图 6 仿真波形欢迎下载精品学习资源4.2 波特率发生器仿真仿真波形如图 7 所示;图 7 波特率发生器的仿真波形4.3 UART 发送器仿真仿真波形如图
28、 8 所示图 8 UART 发送器的仿真波形4.4 UART 接收器仿真UART 接收器的仿真波形如图 9 所示;图 9UART 接收器的仿真波形5 总结利用 Verilog 设计的灵敏性实现了 UART 通信功能 ,可以实现对数据的接收和发送,并可以在接收数据时对其校验位、停止位进行判定,在发送数据时可以形成完整的一帧数据格式 . 其接收和发送数据 的时钟有内部波特率发生器产生 ,依据预置的分频 计系数 ,对外部时钟进行分频 ,产生需要的接收或发送时钟 . 将该UART 设计作为一功能块嵌入到一个FPGA/CPLD 实现的数据采集与处理系统中, 可以成功地实现和远端的 PC 机进行异步串行通
29、信 . 试验证明该 UART 设计占用资源少 , 工作稳固牢靠,可运用在中低端的异步通信系统中;回忆起此设计过程,至今我仍感叹颇多,的确,从选题到定稿,从理论到实践,在短短一个星期的日子里,可以说得是苦多于甜,但是可以学到许多许多的东西,同时不仅可以巩固了以前所学过的学问,而且学到了许多在书本上所没有学到过的学问;通过这次设计使我懂得了理论与实际相结合是很重要的, 只有理论学问是远远不够的,只有把所学的理论学问与实践相结合起来,从理欢迎下载精品学习资源论中得出结论,才能真正为社会服务,从而提高自己的实际动手才能和独立摸索的才能;在设计的过程中遇到问题,可以说得是困难重重,这到底第一次做的,难免
30、会遇到过各种各样的问题,同时在设计的过程中发觉了自己的不足之处,对以前所学过的学问懂得得不够深刻,把握得不够牢固;在这次设计中遇到了许多实际性的问题,在实际设计中才发觉,书本上理论性的东西与在实际运用中的仍是有确定的出入的,所以有些问题不但要深化地懂得,而且要不断地更正以前的错误思维;一切问题必需要靠自己一点一滴的解决,而在解决的过程当中你会发觉自己在飞速的提升;对于教材治理系统, 其程序是比较简洁的,主要是解决程序设计中的问题,而程序设计是一个很灵敏的东西,它反映了你解决问题的规律思维和创新才能,它才是一个设计的灵魂所在;因此在整个设计过程中大部分时间是用在程序上面的;许多子程序是可以借鉴书
31、本上的,但怎样连接各个子程序才是关键的问题所在,这需要对系统的结构很熟识;通过这次设计我也发觉了自身存在的不足之处,虽然感觉理论上已经把握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决;6 参考文献1 罗朝霞 .高书莉 .CPLD/FPGA 设计及应用 .人民邮电出版社 .2007.2 常胜,黄启俊.基于异步 FIFO 实现不同时钟域间数据传递的设计 J. 电子设计应用,20048:57-59.3 阎石.数字电子技术基础(第四版 /第五版) M. 北京:高等训练出版社 .2006.4 伍时和 .数字电子技术基础 .清华高校出版社 .2021.5 康华光 .电子技术基础 数字
32、部分 .高等训练出版社 .2006.6 谢自美 .电子线路设计试验测试.华中科技出版社 .2005.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理;版权为潘宏亮个人全部欢迎下载精品学习资源This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliangs personal ownership.用户可将本文的内容或服务用于个人学习、争论或观看,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵害本网站及相关权益人的合法权
33、益;除此以 外,将本文任何内容或服务用于其他用途时,须征得本人及相关权益人的书面许可,并支付酬劳;Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, an
34、d shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必需是以新闻性或资料
35、性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修 改,并自负版权等法律责任;欢迎下载精品学习资源Reproduction or quotation of the content of thisarticle must be reasonable and good-faith citation for theuse of news or informative public free information. Itshall not misinterpret or modify the original intention ofthe content of this article, and shall bear legal liabilitysuch as copyright.欢迎下载