uisrc 发表于 2022-7-11 20:31:41

10串口程序收发环路设计

软件版本:Anlogic -TD5.6.1-64bit操作系统:WIN10 64bit硬件平台:适用安路(Anlogic)FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!1概述UART串口通信是应用非常广泛的一种串行异步通信方式,常用的异步串口包括RS232\RS482\RS485。RS232的逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,下图是老式的DB9串口线。标准的DB9接口定义如下:
序号DB9公头DB9母头
1CD载波检测CD载波检测
2RXD接收端接收TXD发送端发送数据
3TXD发送数据RXD接收端接收数据
4DTR数据终端就绪DTR数据终端就绪
5GND系统接地GND系统接地
6DSR数据准备就绪DSR数据准备就绪
7RTS发送请求CTS清除请求
8CTS清除发送RTS发送请求
9RI振铃指示器RI振铃指示器


实际上一般RS232只使用到TXD RXD两个信号。    RS485/422采用差分信号负逻辑,逻辑"1"以两线间的电压差为-(2~6)V表示;逻辑"0"以两线间的电压差为+(2~6)V表示,由于采用差分方式可以具有更高的速度和更强的抗干扰能力,具有更远的传输距离。由于RS485/RS422更多出现在工业场合,因此一般采用接线端子方式接线    老式DB9串口基本上已经消失了,但是UART串口更加广泛的实用,比如我们常见的USB串口,就是通过一颗芯片实现了通过USB接口芯片,实现了以TTL电平方式的UART串口通信。数据通过USB接口进行传输,通过UART串口芯片完成USB协议到UART串口协议的相互转换。
在完成本实验前,请确保已经完成前面的实验,包括已经掌握以下能力:1:完成了TD软件安装2:完成了modelsim安装以及TD库的编译3:掌握了TD仿真环境的设置4:掌握了modesim通过do文件启动仿真
实验目的:1:实现UART串口发送控制器的设计2:实现主程序中调用串口发送控制器发送字符"HELLO FPGA"3:实用modelsim完成仿真验证4:编译并且固化程序到FPGA验证2UART收发环路在完成以下实验前,请确保已经完成了"UART串口发送实验"和"UART串口接收实验"1:系统框图上位机通过串口发送数据到FPGA开发板的UART数据接收模块,数据接收模块接收数据后,通过UART数据发送模块把数据发回到串口芯片,之后数据在串口调试助手上打印,实现环路测试。对于发送控制器中的uart_busy信号,不需要使用,因为这里uart发送模块是被动发送。2:顶层模块调用UART收发驱动源码顶层模块只需要调用uart的首发模块驱动接口。并且设置uart_rdata和uart_wdata互联,uart_wreq和uart_rvalid互联。

`timescale 1ns / 1nsmodule uart_top(inputsysclk_i,inputuart_rx_i,output uart_tx_o);
reg rstn_cnt = 0;wire uart_rstn_i;wire uart_wreq,uart_rvalid;wire uart_wdata,uart_rdata;
assign uart_wreq= uart_rvalid;assign uart_wdata = uart_rdata;
assign uart_rstn_i = rstn_cnt;
always @(posedge sysclk_i)begin    if(rstn_cnt == 1'b0)      rstn_cnt <= rstn_cnt + 1'b1;    else      rstn_cnt <= rstn_cnt;end
//uart send controlleruiuart_tx#(.BAUD_DIV(25000000/115200 -1)    )uart_tx_u(.clk_i(sysclk_i),.uart_rstn_i(uart_rstn_i),.uart_wreq_i(uart_wreq),.uart_wdata_i(uart_wdata),.uart_wbusy_o(),.uart_tx_o(uart_tx_o));
uiuart_rx#(.BAUD_DIV(25000000/115200 -1)    )uiuart_rx_u(.clk_i(sysclk_i),.uart_rx_rstn_i(uart_rstn_i),.uart_rx_i(uart_rx_i),.uart_rdata_o(uart_rdata),.uart_rvalid_o(uart_rvalid));
endmodule



3FPGA工程fpga工程的创建过程不再重复,如有不清楚的请看前面实验,这里以型号为EG4D20EG176的FPGA作为演示demo米联客的代码管理规范,在对应的FPGA工程路径下创建uisrc路径,并且创建以下文件夹01_rtl:放用户编写的rtl代码02_sim:仿真文件或者工程03_ip:放使用到的ip文件04_pin:放fpga的pin脚约束文件或者时序约束文件05_boot:放编译好的bit或者bin文件(一般为空)06_doc:放本一些相关文档(一般为空)3Modelsim仿真1:准备工作再次提醒,在进行modelsim仿真前,请提前完成,如果有不清楚的,以下3步请看前面课程内容:1:完成了modelsim安装以及TD库的编译2:掌握了TD仿真环境的设置3:掌握了modesim通过do文件启动仿真
对于向执行什么级别的仿真,就执行对应的HDL2Bit Flow当 HDL2Bit Flow 运行至 Read Design 这一步时,可执行 Behavioral Simulation;当 HDL2Bit Flow 运行至 Optimize RTL 这一步时,可执行 Post-RTL Simulation;当 HDL2Bit Flow 运行至 Optimize Gate 这一步时,可执行 Post-Gate Simulation;当 HDL2Bit Flow 运行至 Optimize Routing 这一步时,可执行 Post-Route Simulation。以执行Behavioral Simulation仿真来说,只要执行Read Design 这一步,如下图右击FPGA Flow中 Read Design,Rerun2:产生do文件在tool菜单中选择simulation我们这里也是选择已经编写好的仿真测试文件仿真测试文件源码如下:
`timescale 1ns / 1ns
module uart_top_TB;
reg   sysclk_i;reg   uart_rx_i;wireuart_tx_o;
uart_top u_uart_top(.sysclk_i       (sysclk_i),.uart_rx_i      (uart_rx_i),.uart_tx_o      (uart_tx_o));
parameter FREQ      = 25000000;parameter BAUD      = 115200;parameter TBAUD   = FREQ/BAUD*40;
initialbegin      sysclk_i= 0;      uart_rx_i = 1'b1;
      #200000 // Waitfor global reset to finish
      #TBAUD      uart_rx_i = 1'b1;      #TBAUD      uart_rx_i = 1'b0;//start      //1001_0101      #TBAUD      uart_rx_i = 1'b1;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b1;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b1;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b1;               #TBAUD      uart_rx_i = 1'b1;//stop                     #808320      //00000101      uart_rx_i = 1'b0;//start      #TBAUD      uart_rx_i = 1'b1;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b1;         #TBAUD      uart_rx_i = 1'b0;         #TBAUD      uart_rx_i = 1'b0;          #TBAUD      uart_rx_i = 1'b0;          #TBAUD      uart_rx_i = 1'b0;          #TBAUD      uart_rx_i = 1'b0;               #TBAUD      uart_rx_i = 1'b1;//stop
         #808320      //10000100      uart_rx_i = 1'b0;//start      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b1;      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b0;      #TBAUD      uart_rx_i = 1'b1;                #TBAUD      uart_rx_i = 1'b1;//stop                  endalways    begin      #20 sysclk_i = ~sysclk_i;    end
endmodule


可以看到产生的do文件中,自动添加了仿真文件、库的路径3:启动modelsim仿真输入do fpga_prj_behavioral_sim.do启动后,右击需要观察的信号,添加到波形窗口设置restart设置运行2.2ms(如果时间太长需要找下数据位置,时间太短需要继续跑直到波形出来)4下载演示下载程序前,先确保FPGA工程已经编译。1:硬件连接请确保下载器和开发板已经正确连接,并且开发板已经上电(注意JTAG端子不支持热插拔,而USB接口支持,所以在不通电的情况下接通好JTAG后,再插入USB到电脑,之后再上电,以免造成JTAG IO损坏)
2:程序下载单击下载按钮可以看到已经识别到芯片,但是请注意,实际芯片是EG4D20EG176,而识别出来的变成了EAGLE_S20_EG176,但是这个不影响我们下载,所以继续。选择bit文件选中后单击Run下载成功2:运行结果附录:常见问题1联系方式米联客官方社区:www.uisrc.com
米联客社区FPGA/SOC QQ群:群1:516869816         群2:543731097群3:86730608         群4:34215299
技术微信:18951232035技术电话:18951232035
官方微信公众号(新微信公众号):2售后1、7天无理由退货(人为原因除外)2、质保期限:本司产品自快递签收之日起,提供一年质保服务(主芯片,比如FPGA 或者CPU等除外)。3、维修换货,需提供淘宝订单编号或合同编号,联系销售/技术支持安排退回事宜。售后维修请登录工单系统:https://www.uisrc.com/plugin.php?id=x7ree_service4、以下情形不属于质保范畴。A:由于用户使用不当造成板子的损坏:比如电压过高造成的开发板短路,自行焊接造成的焊盘脱落、铜线起皮 等B:用户日常维护不当造成板子的损坏:比如放置不当导致线路板腐蚀、基板出现裂纹等5、质保范畴外(上方第4条)及质保期限以外的产品,本司提供有偿维修服务。维修仅收取器件材料成本,往返运 费全部由客户承担。6、寄回地址,登录网页获取最新的售后地址:https://www.uisrc.com/t-1982.html3销售天猫米联客旗舰店:https://milianke.tmall.com京东米联客旗舰店:https://milianke.jd.com/米联客生态淘宝店:https://milianke.taobao.com
销售电话:18921033576
公司地址:常州溧阳总部:常州溧阳市中关村吴潭渡路雅创高科智造谷10-1幢楼南京研发基地:南京市栖霞区仙林大道181号5幢1820室4在线视频https://www.uisrc.com/video.html5软件下载https://www.uisrc.com/f-download.html6经验分享https://www.uisrc.com/f-390.html7官方博文https://www.uisrc.com/portal.php?mod=list&catid=35
页: [1]
查看完整版本: 10串口程序收发环路设计