FPGA课程设计方案FPGA器件设计方案与实现UART

上传人:jin****ng 文档编号:50330060 上传时间:2022-01-20 格式:DOC 页数:27 大小:94KB
收藏 版权申诉 举报 下载
FPGA课程设计方案FPGA器件设计方案与实现UART_第1页
第1页 / 共27页
FPGA课程设计方案FPGA器件设计方案与实现UART_第2页
第2页 / 共27页
FPGA课程设计方案FPGA器件设计方案与实现UART_第3页
第3页 / 共27页
资源描述:

《FPGA课程设计方案FPGA器件设计方案与实现UART》由会员分享,可在线阅读,更多相关《FPGA课程设计方案FPGA器件设计方案与实现UART(27页珍藏版)》请在装配图网上搜索。

1、作者: Pan Hongliang仅供个人学习目录摘 要 IVABSTRAC.T V1 项目构成的基本原理 21.1、 UART简介 21.2、 UART勺基本特点 22 项目实现的基本原则42.1、FPGAUART系统组成如图2所示: 42.2、波特率发生器 42.3、UART接收器 42.4、UART发送器 52.5 芯片勺选择 63 程序设计 73.1 顶层程序 73.2 UART发送器程序 93.3 UART接收器程序 113.4 整体电路图 144 仿真 154.1 顶层仿真 154.2 波特率发生器仿真 154.3UART发送器仿真 164.4 UART接收器仿真 165 总结 1

2、76 参考文献18摘要基于 FPGA 设计和实现 UART ,可以用片上很少的逻辑单元实现 UART 的基本功能。 与传统设计相比, 能有效减少系统的 PCB 面积,降低系统的功耗, 提高设计的稳定性和可 靠性,并可方便地进行系统升级和移植。采用有限状态机模型形式化描述了 UART 的功能 ,在此基础上用硬件描述语言 VHDL 编程实现了 UART,并使用QuartusH软件中的嵌入式逻辑分析仪 SignalTap对数据传输进 行了检测 ,验证了设计的正确性。本设计具有较大的灵活性,通过调整波特率发生器的分频参数,就可以使其工作在不 同的频率。采用 16 倍波特率的采样时钟,可以实时有效探测数

3、据的起始位,并可对数据 位进行“对准”中央采样,保证了所采样数据的正确性。该模块可以作为一个完整的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. Compared with the traditional design, can eff

4、ectively 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 machinemodel, by the way, UART is realized on the ba

5、sis of VHDL . Moreover, the data transmission is detected with SignalTap which is an embedded logic analyzer in QuartuS . The result proves the validity of the design.This design has great flexibility, by adjusting the frequency division baud rate generator parameters, you can make it work on a diff

6、erent 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 complete IP nuclear transplantation into various kinds of

7、 FPGA, in the actual application can be embedded into other systems, is easy to implement and the remote PC asynchronous communication.Key word: FPGA;UART;finite state machine;SignalTap引言随着电子设备功能的不断增强,复杂度也在不断提高,对这些系统的测试要求也越来越 高,因而促进了自动测试系统的发展。而数字I/O模块作为自动测试系统重要的测试模块它既可以作为信号源激励被测系统,也可以检测被测系统的输出,在很多领域

8、得到了非常广 泛的应用。当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不 断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集 成电路(VLSIC儿J以竹以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师 们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好 是在实验室里就能设计出合适的 ASIC芯片,并且立即投入实际应用之中,因而出现了现 场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程

9、 逻辑器件(CPLD)。1项目构成的基本原理1.1、UART 简介UART( Un iversal Asy nchron ous Receiver Tran smitter通用异步收发器)是一种应用广泛的短距离串行传输接口。常常用于短距离、低速、低成本的通讯中。8250、8251、NS16450等芯片都是常见的 UART器件。基本的UART通信只需要两条信号线(RXD TXD就可以完成数据的相互通 信,接收与发送是全双工形式。TXD是 UART发送端,为输出;RXD是 UART接收 端,为输入。1.2、UART的基本特点(1)在信号线上共有两种状态,可分别用逻辑 1 (高电平)和逻辑0 (低电

10、 平)来区分。在发送器空闲时,数据线应该保持在逻辑高电平状态。(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送, 起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。(3)数据位(Data Bits ):起始位之后就是传送数据位。数据位一般为 8 位一个字节的数据(也有6位、7位的情况),低位(LSB在前,高位(MSB 在后。(4)校验位(parity Bit ):可以认为是一个特殊的数据位。校验位一般用 来判断接收的数据位有无错误,一般是奇偶校验。在使用中,该位常常取消。(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻 辑1状态。(6)位时

11、间:即每个位的时间宽度。起始位、数据位、校验位的位宽度是 一致的,停止位有0.5位、1位、1.5位格式,一般为1位。(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。8)波特率:UART勺传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600=9600bps (位/秒)。UART勺数据帧格式为如图1所示图1: UART勺数据帧格式2项目实现的基本原则2.1、FPGA UART系统组成如图2所示:图2 : FPGA UART系统组成FPGA UAR由三个子模块组成:(1)波特率发生器;(2)接收模块;

12、(3)发送模块;2.2、波特率发生器波特率发生器实际上就是一个分频器。 可以根据给定的系统时钟频率(晶振 时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器 的分频数。波特率分频因子可以根据不同的应用需要更改。2.3、UART接收器由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个 数据帧的起始位。然而,为了避免毛刺影响,能够得到正确的起始位信号,必须 要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。由于内部采样时钟bclk周期(由波特率发生器产生) 是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续b

13、clk周期 的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。如果起始位的确是 16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。图3 : UART接收器的接收状态机R_STAR状态:当UART接收器复位后,接收状态机将处于这一个状态。在此状态,状态机一直在等待 RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入 R_CENTE状态。状态图中的 RXD_SYN信号是RXD的同步信号,因为在进行逻辑 1或逻辑0判断时,不希望检测的信号是不稳

14、定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYN信号。R_CENTE状态:对于异步串行信号,为了使每一次都检测到正确的位信号, 而且在较后的数据位检测时累计误差较小, 显然在每位的中点检测是最为理想的。 在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT1), 但计数值不是想当然的“ 1000”,要考虑经过一个状态,也即经过了一个 bclk 周期,所希望得到的是在采样时1/2位。另外,可能在R_STAR状态检测到的起 始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的

15、信号一定 是起始位。R_WAIT犬态:当状态机处于这一状态,等待计满 15个bclk,在第16个 bclk是进入R_SAMPL犬态进行数据位的采样检测,同时也判断是否采集的数据 位长度已达到数据帧的长度(FRAMELEN如果到来,就说明停止位来临了。 FRAMELE设计时是可更改的(使用了 Ge neric ),在本设计中默认为8,即对 应的UART工作在8位数据位、无校验位格式。R_SAMPL状态:即数据位采样检测,完成后无条件状态机转入R_WAIT犬态,等待下次数据位的到来。R_STO状态:无论停止位是1还是1.5位,或是2位,状态机在R_STOP不具体检测RXD只是输出帧接收完毕信号(R

16、ECJDOEv1),停止位后状态机转回到RjSTAR状态,等待下一个帧的起始位2.4、UART发送器发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,第8位是停止位。在本设计中没有校验位,但只要改变Gen eric参数FrameLen,也可以加入校验位,停止位是固定的1位格式。图4 :发送状态机的状态图X_IDLE状态:当UART被复位信号复位后,状态机将立刻进入这一状态。 在这个状态下,UART勺发送器一直在等待一个数据帧发送命令 XMIT_CMD XMIT_CMD_信号是对XMIT_CM的处理,XMIT_CMDJP个短脉冲信号。这时由 于XMIT_CM是一个外加信号

17、,在 FPGA之外,不可能对XMIT_CM的脉冲宽度进 行限制,如果XMIT_CMDr效在UART发完一个数据帧后仍然有效,那么就会错误 地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。在此对 XMIT_CM进行了脉冲宽度的限定, XMIT_CMDJP是一个处理后的信号。当XMIT_CMD_P=1 ,状态机转入X_START 准备发送起始位。X_START状态:在这个状态下,UART的发送器一个位时间宽度的逻辑 0 信号至TXD即起始位。紧接着状态机转入 X_WAIT状态。XCNT16是 bclk的计数器X_WAIT犬态:同UART接

18、收状态机中的 R_WAIT状态类似。X_SHIFT状态:当状态机处于这一状态时,实现待发数据的并串转换。转 换完成立即回到X_WAIT犬态。X_STOP:停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发 送16个bclk周期的逻辑1信号,即1位停止位。状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。2.5芯片的选择1. Quartus II 软件2. Altera CycloneU EP2C8Q208C8N3. EM1715A稳压电源3程序设计3.1顶层程序library IEEE;en tity top isPort (clk32mhz,reset,rxd,xm

19、it_cmd_p_in:in stdogic;-总的输入输出信号的定义rec_ready,txd_out,txd_d on e_out:out std_logic;txdbuf_i n:in std_logic_vector(7 dow nto 0);-待发送数据输入rec_buf:out std_logic_vector(7 downto 0);-接收数据缓冲 end top;architecture Behavioral of top iscomp onent recieverPort (bclkr,resetr,rxdr:in std_logic;r_ready:out std_logi

20、c;rbuf:out stdo gic_vector(7 dow nto 0);end comp onent;comp onent tran sferPort (bclkt,resett,xmit_cmd_p:in std_logic;txdbuf:in stdogic_vector(7 downto 0);txd:out std_logic;txd_d on e:out std_logic);end comp onent;comp onent baudPort (clk,resetb:in std_lo gic;bclk:out std_logic);end comp onent;sig n

21、al b:std_logic;begi nuOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000001:baud port map (clk=clk32mhz,resetb=reset,bclk=b);-顶层映

22、射u2:reciever port map(bclkr=b,resetr=reset,rxdr=rxd,r_ready=rec_ready, rbuf=rec_buf);u3:tra nsfer port map(bclkt=b,resett=reset,xmit_cmd_p=xmit_cmd_p_i n,txdbuf=txdbuf_i n, txd=txd_out,txd_d on e=txd_d on e_out);end Behavioral;3.2波特率发生器程序library IEEE;en tity baud isPort (clk,resetb:in std_lo gic;bcl

23、k:out std_logic);end baud;architecture Behavioral of baud isbegi nprocess(clk,resetb)variable cn t:i nteger;begi nif resetb=1 then cn t:=0; bclk=208 then cnt:=0; bclk=1;频系数else cn t:=c nt+1; bclk=0;end if;end if;end process;end Behavioral;3.2 UART发送器程序library IEEE;en tity tran sfer isgen eric(framle

24、 nt:i nteger:=8);Port (bclkt,resett,xmit_cmd_p:in std_logic;出信号txdbuf:in std_logic_vector(7 downto 0):=11001010;txd:out std_logic;txd_d on e:out std_logic);end tran sfer;architecture Behavioral of tran sfer is-复位-设置分-定义输入输-定义个子状态type states is (x_idle,x_start,x_wait,x_shift,x_stop);sig nal state:sta

25、tes:=x_idle;sig nal ten t:i nteger:=O;begi nprocess(bclkt,resett,xmit_cmd_p,txdbuf)-主控时序、组合进程variable xcnt16:std_logic_vector(4 dow nto 0):=00000;-定义中间变量variable xbitc nt: in teger:=0;variable txds:stdo gic;begi nif resett=1 the n state=x_idle; txd_d on e帧发送命令if xmit_cmd_p=1 then state=x_start; txd_

26、done=0;else state-状态 2,发送信号至起始位if xcnt16=01111 then state=x_wait; xcnt16:=00000;else xen t16:=xc nt16+1; txds:=0; state-状态 3,等待状if xcnt16=01110 thenif xbitcnt=framlent then state=x_stop; xbitcnt:=0; else state=x_shift;end if;xcnt16:=00000;else xcn t16:=xc nt16+1; statetxds:=txdbuf(xbitcnt); xbitcnt:

27、=xbitcnt+1; state-状态5,停止位发送状态if xcnt16=01111 the nif xmit_cmd_p=O then state=x_idle; xc nt16:=00000;else xcnt16:=xcnt16; state=x_stop;end if; txd_d on e=1;else xcn t16:=xc nt16+1; txds:=1; statestate=x_idle;end case;end if;txd=txds;end process;end Behavioral;3.3 UART接收器程序library IEEE;en tity recieve

28、r isgen eric(framle nr:i nteger:=8);Port (bclkr,resetr,rxdr:in std_logic;-定义输入输出信号r_ready:out std_logic;rbuf:out stdo gic_vector(7 dow nto 0);end reciever;architecture Behavioral of reciever istype states is (r_start,r_ce nter,r_wait,r_sample,r_stop);状态signal state:states:=r_start;sig nal rxd_syn c:

29、std_logic;begi npro1:process(rxdr)begi nif rxdr=0 the n rxd_s yn c=0;else rxd_s yn c=1;end if;end process;pro2:process(bclkr,resetr,rxd_s ync)组合进程variable count:stdogic_vector(3 downto 0);变量variable rcn t: in teger:=0;variable rbufs:stdogic_vector(7 downto 0);begi nif resetr=1 then state待起始位if rxd_s

30、 yn c=0 the n state=r_ce nter; r_ready=0; rcn t:=0;-定义各子-主控时序、-定义中间-复位-状态1,等else state=r_start; r_ready-状态2,求出每位的中点if rxd_syn c=0 the nif cou nt=O1OO then state=r_wait; cou nt:=OOOO;else coun t:=co un t+1; state=r_ce nter;end if;else state-状态 3,等待状态if count=111O thenif rcnt=framlenr then state=r_sto

31、p;else state=r_sample;end if;cou nt:=OOOO;else coun t:=co un t+1; staterbufs(rc nt):=rxd_s ync; rcnt:=rcnt+1;stater_ready=1; rbuf=rbufs; statestate=r_start;end case;end if;end process;end Behavioral;3.4整体电路图整个系统的:整体电路图如图5所示:图5:系统的整体电路图4仿真4.1顶层仿真仿真波形图如图4所示。图6仿真波形4.2波特率发生器仿真仿真波形如图7所示。图7波特率发生器的仿真波形4.3U

32、ART发送器仿真仿真波形如图8所示图8 UART发送器的仿真波形4.4 UART接收器仿真UART接收器的仿真波形如图9所示。图9UART接收器的仿真波形5总结利用Verilog设计的灵活性实现了 UART通信功能,可以实现对数据的接 收和发送,并可以在接收数据时对其校验位、停止位进行判断,在发送数据时可以 形成完整的一帧数据格式其接收和发送数据的时钟有内部波特率发生器产生, 根据预置的分频计系数,对外部时钟进行分频,产生需要的接收或发送时钟将 该UART设计作为一功能块嵌入到一个 FPGA/CPLD实现的数据采集与处理系 统中,可以成功地实现和远端的 PC机进行异步串行通信实验证明该UART

33、 设计占用资源少,工作稳定可靠,可运用在中低端的异步通信系统中。回顾起此设计过程,至今我仍感慨颇多,的确,从选题到定稿,从理论到实 践,在短短一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的 东西,同时不仅可以巩固了以前所学过的知识, 而且学到了很多在书本上所没有 学到过的知识。通过这次设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出 结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇 到过各种各样的问题,同时在设计的过程

34、中发现了自己的不足之处, 对以前所学 过的知识理解得不够深刻,掌握得不够牢固。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论 性的东西与在实际运用中的还是有一定的出入的, 所以有些问题不但要深入地理 解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决, 而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西, 它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此 在整个设计过程中大部分时间是用在程序上面的。 很多子程序是可以借鉴书本上 的,但怎样衔接各个

35、子程序才是关键的问题所在,这需要对系统的结构很熟悉。 通过这次设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。6参考文献1 罗朝霞高书莉.CPLD/FPGA设计及应用.人民邮电出版社.2007.2 常胜,黄启俊.基于异步FIFO实现不同时钟域间数据传递的设计J.电子设计应用,2004(8):57-59.3 阎石.数字电子技术基础(第四版/第五版)M.北京:高等教育出版社.2006.4 伍时和.数字电子技术基础.清华大学出版社.2009.康华光.电子技术基础 数字部分.高等教育出版社.2006.谢自美.电子线路设计实验测

36、试.华中科技出版社.2005.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有This article in eludes someparts, in cludi ng text, pictures, and desig n. Copyright is Pan Hon glia ngs pers onal own ership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律 的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本 文任何内容或服务用于其他用途时,须征得本人及相关权利人

37、的书面 许可,并支付报酬。Users may use the contents or services of this articlefor pers onal study, research or appreciati on, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisi ons of copyright law and other releva nt laws, and shall n ot infringe upon the le

38、gitimate rights of this website and its releva nt obligees. In additi on, when any content or service of this article is used for other purposes, writte n permissi on and remun erati on shall be obta ined from the pers on concerned and the releva nt obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为 使用目的的合理、善意引用,不

39、得对本文内容原意进行曲解、修改, 并自负版权等法律责任。Reproducti on or quotatio n of the content of this articlemust be reas on able and good-faithcitati onfor the use of n ewsor in formative public free in formatio n. It shall notmisinterpret or modify the original intention of the contentof this article, and shall bear legal liability such as copyright.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!