Spartan-6系列FPGA UART数据接收模块总结.pdf

Spartan-6系列FPGA UART数据接收模块总结.pdf

ID:47995151

大小:1.02 MB

页数:9页

时间:2020-01-11

Spartan-6系列FPGA UART数据接收模块总结.pdf_第1页
Spartan-6系列FPGA UART数据接收模块总结.pdf_第2页
Spartan-6系列FPGA UART数据接收模块总结.pdf_第3页
Spartan-6系列FPGA UART数据接收模块总结.pdf_第4页
Spartan-6系列FPGA UART数据接收模块总结.pdf_第5页
资源描述:

《Spartan-6系列FPGA UART数据接收模块总结.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Spartan-6系列FPGA的UART数据接收模块总结一、准备工作:1.UART通信协议(关键);2.开始的第一步,检测到RX数据线上下降沿(起始位);3.调试助手发送数据的波特率设置,进而设计采样频率;4.对接收的数据进行处理,去头去尾只留中间数据位(8位);5.对接收到的数据通过LED灯进行验证。UART通信协议(一帧11位):图1-1UART通信协议原理示意图二、功能框图:RXDetect_moduleH2L_Sig检测RX下降沿RX_En_Sigrx_controlcontrol_moduleRX_D

2、one_Sig_moduleCount_Sig数据接收总控制模控制模块RX_Data块BPS_moduleBPS_CLK数据采集脉冲模块LED灯rx_module图1-2各模块信息传输示意图1.详细过程说明:瞭望员(detect_module):正在安逸的晒太阳,突然警报拉响(detect_module检测到下降沿),瞭望员马上升旗放狼烟(输出H2L_Sig(HightoLow下降沿)为高),告诉后方人员有数据来袭(数据采取单个有序的进攻战法),准备好作战(数据接受工作)。战地指挥中心(rx_control

3、_module):一旦看到升旗放狼烟,指挥中心马上给第一团发指令(Count_Sig),情报中心(数据采集脉冲模块BPS_module):接收到指令后立即侦查敌情(数据传输波特率),并开始固定周期的不间断扫描,以匹配对方来袭速度(波特率),一旦发现目标,就给战地指挥中心发信号(BPS_CLK),然后战地指挥中心指挥狙击手逐个歼灭,并把歼灭和捕获的数据记录下来(存入RX_Data中)。总指挥(control_module):战争结束后,战地指挥中心向总指挥汇报指令(RX_Done_Sig),把歼灭和捕获的数据

4、(RX_Data)上报给总指挥,然后总指挥根据数据(RX_Data)控制LED灯,以表嘉奖。战地指挥中心服从总指挥,只有总指挥下达作战命令(RX_En_Sig)后,战地指挥中心才可以指挥狙击手歼灭来袭数据。2.各模块层级结构图如下:detect_module子模块u0rx_moudelbps_module子模块u1子模块u1rx_moudel_demo顶层模块rx_control_module子模块u2control_module子模块u2图1-3各模块层级结构图3.开发环境为ISE14.4,各模块程序代码如下

5、:rx_moudel模块程序代码etect_module模块程序代码(u0)bps_module模块程序代码(u1)rx_control_module模块程序代码(u2)control_module模块程序代码UCF配置文件(Spartan-6XC6SLX16-2CSG324,黑金AX516开发板)4.程序理解:程序代码不再一一解释,根据功能框图,如果有Verilog基础,看懂代码应该不会有什么问题,下面主要讨论一下,在学习的时候,一直困扰我的一个问题。两个核心问题:一是assign和always并

6、行的理解;二是assign语句中的信号发生变化后,always语句中相应信号的语句是在同一周期内执行,还是在下一个周期内执行?关于“并行”的理解,和我们平时用的C语言顺序执行的过程正好是相对的,在同一个时钟周期内,一旦敏感信号有效,所有由同一个敏感信号控制的的always语句块都是同时执行的。例如:以下两个always语句块,当检测到CLK的上升沿和RSTn的下降沿时,两个always语句块同时触发,里面的begin-end语句块将同时执行。二是assign语句中的信号发生变化后,always语句中相应信号的语

7、句是在同一周期内执行,还是在下一个周期内执行?例如:U1和U2两个模块程序,一旦检测到CLK的上升沿,U1和U2模块中的两个always语句块同时执行,U1模块中“Count_BPS<=Count_BPS+1”就会加1,当Count_BPS=2604时,BPS_CLK=1,Count_BPS=2604和BPS_CLK=1是在同一个周期内进行的。而U2模块中“1:if(BPS_CLK)”语句也是在同一周期内并行执行判断条件的,但是判断条件BPS_CLK=0,并不是等于1。可以这样理解,并行语句的赋值,先计算右侧表

8、达式的值,是在这个时钟周期结束的时候才赋给左侧的变量,对右侧变量值的引用相当于“延迟”一个时钟周期。以上为自己学习过程中的理解,程序等参考《黑金Verilog那些事儿系列教程》资料,如有错误,欢迎指正或留言,笔者将不胜感激!

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

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

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