串口通信是常用的低速通信接口,调试中也试用比较多,首先实现串口端口。
UART 串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。UART 在发送或接收过程中的一帧数据由 4 部分组成,起始位、数据位、奇偶校验位和停止位。
协议如下所示:
因为串口是异步,因此收,发分别实现,下面是收端:
发端与收端是类似的,就是一个是发数据,一个是收数据
其实TX与RX两者之间的波特率用一个module表示更加好,方便后期修改不同速率的波特率,实现波特率可调
再就是实现top文件,关联tx,rx,实现收与发,因为还没有实现其他的,就直接收到数据后字节发送
- wire [7:0] datain ;
- wire datain_vld;
- wire [7:0] dataout ;
- wire dataout_vld ;
- assign datain = dataout ;
- assign datain_vld = dataout_vld ;
-
-
- uarttx u_uart_tx(
- .clk ( CLK_24M ),
- .rst_n ( rst_n ),
- .uart_tx ( UART_TX ),
- .datain_vld ( datain_vld ),
- .datain ( datain ),
- .uart_ack ( uart_ack )
- );
-
- uartrx u_uart_rx(
- .clk ( CLK_24M ),
- .rst_n ( rst_n ),
- .uart_rx ( UART_RX ),
- .dataout_vld ( dataout_vld),
- .dataout ( dataout )
- );
-
-
不仿真上板就是刷流氓,那用modelsim功能仿真,查看基本收发功能是否正常。
简单查看收发的数据位都是满足要求的,然后直接上板测试性能。
用串口通信工具虚拟接口链接,不停发送数据“Anlogic fpga”,查看串口工具接收的数据是否正常,
通过验证,串口通信工具基本功能正常。
后续增加UART转localbus协议,实现通过串口下发指令实现单板各芯片控制,也方便后期调试。
|