(2020年整理)基于FPGA的UART串口接收模块设计.doc

上传人:摩西的****12 文档编号:136466593 上传时间:2020-06-28 格式:DOC 页数:6 大小:349KB
返回 下载 相关 举报
(2020年整理)基于FPGA的UART串口接收模块设计.doc_第1页
第1页 / 共6页
(2020年整理)基于FPGA的UART串口接收模块设计.doc_第2页
第2页 / 共6页
(2020年整理)基于FPGA的UART串口接收模块设计.doc_第3页
第3页 / 共6页
(2020年整理)基于FPGA的UART串口接收模块设计.doc_第4页
第4页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《(2020年整理)基于FPGA的UART串口接收模块设计.doc》由会员分享,可在线阅读,更多相关《(2020年整理)基于FPGA的UART串口接收模块设计.doc(6页珍藏版)》请在金锄头文库上搜索。

1、学 海 无 涯UART串口接收模块设计实验目标:实现FPGA接收其他设备通过UART协议发送过来的数据。知识点:1、 URAT通信协议工业环境下数据接收实现。2、 In system sources and probes editor(ISSP)调试工具的使用。UART发送端发送一个字节数据时序图: 对于其中的每一位进行采样,一般情况下每一位数据的中间点是最稳定的,因此一般应用中,采集中间时刻时的数据即可,如下图所示:但是在工业应用中,往往有非常强的电磁干扰,只采样一次就作为该数据的电平判定,是不保险的,有可能恰好采集到被干扰的信号而导致结果出错,因此需要使用多次采样求概率的方式进行。以下为改

2、进型的单bit数据接收方式示意图:在这张图中,将每一位数据又平均分成了16小段,对于Bit_x这一位数据,考虑到数据在刚刚发生变化和即将发生变化的这一时期,数据极有可能不稳定的(用红色标出的两段),在这两个时间段采集数据,很有可能得到错误的结果,因此这两段时间的电平无效,采集时直接忽略。而中间这一时间段(用绿色标出),数据本身是比较稳定的,一般都代表了正确的结果。但是也不排除该段数据受强电磁干扰而出现错误的电平脉冲,因此对这一段电平,进行多次采样,并求高低电平发生的概率,6次采集结果中,取出现次数多的电平作为采样结果。例如,采样6次的结果分别为1/1/1/1/0/1/,则取电平结果为1,若为0

3、/0/1/0/0/0,,则取电平结果为0,当6次采样结果中1和0各占一半(各3次),则可判断当前通信线路环境非常恶劣,数据不具有可靠性。串口发送模块包含两个主要组件:1、 起始位检测进程(低电平,下降沿)2、 波特率产生模块3、 数据接收模块串口接收模块整体结构图:波特率时钟计算:系统时钟周期为System_clk_period波特率波特率周期波特率分频计数值System_clk_period = 20计数值9600104167ns104167/ System_clk_period/16325-11920052083ns52083/ System_clk_period/16163-138400

4、26041ns26041/ System_clk_period/1681-15760017361ns17361/ System_clk_period/1654-11152008680ns8680/ System_clk_period/1627-1Modelsim仿真图:在testbench文件中我们为设计输入了假定的信号,在仿真图中我们可以看到data_byte_r在Rx_done标志位产生的时候成功的将仿真数据data_byte_t接收到其中。实现了串口接收数据的功能,其余各状态表现正常。Rtl功能图附录:源程序:一, 顶层功能代码module uart_rx_top(Clk,Rst_n,R

5、s232_Rx);input Clk;input Rst_n;input Rs232_Rx;reg 7:0data_rx_r;wire 7:0data_rx;wire Rx_Done;uart_byte_rx uart_byte_rx(.Clk(Clk),.Rst_n(Rst_n),.baud_set(3d0),.Rs232_Rx(Rs232_Rx),.data_byte(data_rx),.Rx_Done(Rx_Done);issp issp(.probe(data_rx_r),.source();always(posedge Clk or negedge Rst_n)if(!Rst_n)d

6、ata_rx_r = 8d0;else if(Rx_Done)data_rx_r = data_rx;elsedata_rx_r = data_rx_r;endmodule二 testbench仿真文件timescale 1ns/1nsdefine clk_period 20module uart_byte_rx_tb;reg Clk;reg Rst_n;reg Rs232_Rx;wire 7:0data_byte_r;wire Rx_Done;reg 7:0data_byte_t;reg send_en;reg 2:0baud_set;wire Rs232_Tx;wire Tx_Done;w

7、ire uart_state;uart_byte_rx uart_byte_rx(.Clk(Clk),.Rst_n(Rst_n),.baud_set(baud_set),.Rs232_Rx(Rs232_Tx),.data_byte(data_byte_r),.Rx_Done(Rx_Done);uart_byte_tx uart_byte_tx(.Clk(Clk),.Rst_n(Rst_n),.data_byte(data_byte_t),.send_en(send_en),.baud_set(baud_set),.Rs232_Tx(Rs232_Tx),.Tx_Done(Tx_Done),.ua

8、rt_state(uart_state);initial Clk = 1;always#(clk_period/2)Clk = Clk;initial beginRst_n = 1b0;data_byte_t = 8d0;send_en = 1d0;baud_set = 3d4;#(clk_period*20 + 1 );Rst_n = 1b1;#(clk_period*50);data_byte_t = 8haa;send_en = 1d1;#clk_period;send_en = 1d0;(posedge Tx_Done)#(clk_period*5000);data_byte_t = 8h55;send_en = 1d1;#clk_period;send_en = 1d0;(posedge Tx_Done)#(clk_period*5000);$stop;endendmodule

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号