基于FPGA的串口通信系统

基于FPGA的串口通信系统

ID:38133372

大小:651.67 KB

页数:4页

时间:2019-05-31

上传者:U-2517
基于FPGA的串口通信系统_第1页
基于FPGA的串口通信系统_第2页
基于FPGA的串口通信系统_第3页
基于FPGA的串口通信系统_第4页
资源描述:

《基于FPGA的串口通信系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

基于FPGA的串口通信系统设计郭凤(西南科技大学信息工程学院,四川绵阳621000)摘要:该设计是基于FPGA的串口通信系统模拟仿真,通过对RS-232串行总线接口的设计,掌握发送与接收电路的基本思路,并进行串口通信。采用VerilogHDL语言对UART波特率产生模块、数据发送模块、接收模块进行硬件描述,再将其整合为一个RS-232收发模块,最终在顶层模块中将两个RS-232模块例化,实现两块FPGA芯片全双工通信的设计。关键词:串口通信;VerilogHDL;FPGA;模拟仿真AserialportcommunicationsystemdesignbasedonFPGAGuoFeng(SchoolofInformationEngineering,SouthwestUniversityofScienceandTechnology,Mianyang621000,China)Abstract:ThedesignisbasedontheFPGAserialportcommunicationsystemsimulation,throughthedesignoftheRS-232serialbusinterface,tomasterthebasicwayofsendingandreceivingcircuitandcompleteserialcommunication.UsingVerilogHDLlanguagetoUARTbaudrategenerationmodule,datasendingmodule,receivingmodulehardwaredescription,makeitintoRS-232transceivermodule,finallyinthetop-levelmodulewillinstantiatetwoRS-232module,realizethedesignoftwopiecesoftheFPGAchipfull-duplexcommunication.Keywords:serialportcommunication;VerilogHDL;FPGA;simulation0引言通用异步收发器(UniversalAsynchronousReceiverTransmitter,UART)是一种广泛应用于短距离、低速、低成本、可靠性高、实现简单等优点,广泛应用于微机和外设的数据交换,如和鼠标、键盘、调制解调器、打印机之间以及微机与微机之间的串行数据传输。同时在当今的嵌入式微处理器芯片设计中,UART接口已成为标准配置。目前大部分处理器芯片中都集成了UART功能,但是在FPGA芯片中一般没有集成UART,这增加了FPGA芯片与其他处理器间数据交换的复杂性。为提高FPGA设计的灵活性,我们可以用硬件描述语言编写一个具有UART功能的模块,然后把这个模块配置到FPGA芯片中。利用FPGA自身的优点来设计设备间串行通信接口,具有较高的实用价值和重大意义。1UART通信原理在异步通信中,是以字符为单位传送数据,是从低位到高位逐位传送,一个字符表示一帧信息。串行异步通信协议中字符代码传输格式如图2.3所示,通常UART的一帧数据由四部分组成:一个起始位S(一般逻辑为“0”),后面是数据长度可变的数据位D0~D7(一般为6位到8位之间可变,数据的低位在前),一 个可选的校验位PB(可选奇校验、偶检验或不需要检验),随后是一定长度的停止位P(可选1位、1.5位、或2位),停止位必须为逻辑“1”。在没有数据被传输时,数据线会一直处于逻辑“1”状态。其字符帧格式如下图1所示:图1字符帧格式2软件设计该设计的最顶层TOP层由两个相同RS-232模块(my_uart_top)构成,用于模拟两个FPGA芯片通信,例化名分别为uart1_init和uart2_init。在my_uart_top层中又由波特率发生器(speed_select)、UART接收器(my_uart_rx)和UART发送器(my_uart_tx)构成。波特率发生器分别由两个相同模块(speed_rx,speed_tx)构成,产生一个远高于波特率的本地时钟信号对数据不断采样,使接收器与发送器保持同步;发送器的用途是将准备输出的并行数据按照UART帧格式转化为TXD信号串行输出;接收器接收RXD串行信号,并将其转化为并行数据存到内部寄存器中。顶层模块RTL级图如下图2所示:图2顶层模块RLT级图3设计结果及仿真分析3.1波特率模块仿真为方便波特率发生器模块仿真,便于观察波形,把分频系数设为了10。下图3为仿真波形图:图3分频模块仿真波形图当rst_n复位,接到数据后波特率时钟启动置位信号bps_start,开始计数。波特率发生器每经过10个时钟周期输出一个完整的波特率时钟周期clk_bps。图中 两条竖线之间的时间差值为200ns左右,即一个完整的波特率时钟周期,与设计的分频系数一致。模块中计数值参数BPS_PARA可任意设置,即可实现任意波特率。3.2接收模块仿真串行数据从接收模块的输入端口rs232_rx进入,从低位到高位按顺序接收,然后经过移位寄存器(rx_temp_data)的串并转换,最终把并行数据送到接收缓冲寄存器(rx_data)中,接收完成后rx_int由高变低,发出信号。clk_bps波形中两个虚线之间为一个波特率周期,间隔为52μs,所以波特率为19.2kbps;初始时rx_data[7:0]的值为0,完成数据串行传输后,rx_int波形拉低,rx_data[7:0]中的数据为00011000。其仿真波形如下图4所示:图4接收模块仿真波形图3.3发送模块仿真待发送的数据存于tx_data[7:0]中,通过移位寄存器变为串行数据从rs232_tx接口发出,从低位顺序发送,发出的序列位中第1位为起始位,中间8位为数据位,最后为结束位。其功能仿真图如下图5所示:图5发送波形仿真图3.4两块FPGA模块通信仿真该模块仿真的是两个RS-232模块同时收发的过程,以模拟两块FPGA通信。在testbench中将rs232_tx_1接rs232_rx_2,rs232_rx_1接rs232_tx_2,并分别给tx_data_1[7:0]待发数据01010000,给tx_data_2[7:0]待发数据10101010。其仿真波形图如下图6所示: 图6两片FPGA通信如上图所示:第1个clk_bps周期内tx_data_1[7:0]中的数据为01010000,tx_data_2[7:0]中的数据为10101010,rx_data_1[7:0]中的数据为0,rx_data_2[7:0]中的数据为0;第1到第12个clk_bps周期期间,rs232_tx_1和rs232_rx_2的序列为:000001010111,第1位为起始位0,接下来8位为00001010,为从低位开始传输的数据位,与tx_data_1[7:0]中的数据一致;rs232_rx_1和rs232_tx_2的序列为:00101010111,第1位为起始位0,接下来8位为01010101,是从低位开始的倒序的tx_data_2[7:0]中的数据,传输正确。当传输完成后,rx_data_1[7:0]中的数据为10101010,rx_data_2[7:0]中的数据为01010000,接收正确,rx_int_1和rx_int_2由高变低,表示接收完成。该仿真波形正确,基于FPGA的串口通信模拟仿真成功。4总结通过设计与仿真分析,该串行通信系统能够准确地完成两块FPGA芯片的全双工通信,实现数据的串行发送和接收,成功完成了全双工通信系统的模拟,有助于初学者对通信协议及FPGA的理解和学习。参考文献[1].韩德红.基于FPGA的串口控制器设计与实现[J].空军雷达学院学报,2008,(02):13-116[2].杨扬,叶芃,李力.基于FPGA的UART设计与实现[J].电子测量技术,2011,34(07)[3].姜宁,范多旺.基于FPGA/CPLD的通用异步通信接口UART的设计[J].信息技术与信息化,2006,(01):86-87[4].史故臣,石旭刚,左绪勇.基于FPGA的UART设计与实现[J].中国新通信,2009,(07):62-64[5].杨夏,王平,张军.基于FPGA的简化UART电路设计[J].微计算机信息,2008,(8-2):226-227[6].张德,马淑芬,李海.专用异步串行通信电路的FPGA实现[J].微计算机信息,2005,(03):152-153

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭