三.常用外设接口
1.UART
串口介绍
串口大家都已经非常熟悉了这里简单带大家复习一下,以及补充一些我们在用单片机上使用串口与在FPGA上的区别
1.串口分为同步串口(USRT)与异步串口(UART),区别在于是否需要时钟线。
2.数据帧:一帧数据帧有十位起始低电平,停止高电平中间八位数据位,空闲状态为高电平。
3.波特率与比特率:波特率即每秒传输的码元数符号为Baud单位Bps波特每秒,由于串口是1bit进行传输,一个码元就是一个二进制数。每秒传输的信息量为传输速率简称比特率,单位为bps。 比特率 = 波特率 * 单个调制状态对应的二进制位数
老式的电脑配备有RS232或者RS485接口,RS232单端输入输出只是将电平转换,而RS485是单端转差分,如今大多是USB接口,将USB的差分信号与串口的TTL信号互相转化。
由于AX7020的USB转串口在PS端而我有懒得去找USB转TTL模块故本次只有仿真没有上板。
实验任务
本节实验任务是上位机通过串口调试助手发送数据给AX7020开发板,AX7020开发板 PL 端通过USB_UART 串口接收数据并将接收到的数据发送给上位机,完成串口数据环回。
程序设计
顶层模块设计
module uart_loopback(
input sys_clk ,
input sys_rst_n ,
//UART端口
input uart_rxd ,
output uart_txd
);
//parameter
parameter CLK_FREQ = 50000000;
parameter UART_BPS = 115200 ;
//wire define
wire uart_rx_done;
wire [7:0] uart_rx_data;
//**************************************
//** main code
//**************************************
//串口接收模块
uart_rx #(
.CLK_FREQ (CLK_FREQ),
.UART_BPS (UART_BPS)
)
u_uart_rx(
.clk (sys_clk ),
.rst_n (sys_rst_n ),
.uart_rxd (uart_rxd ),
.uart_rx_done (uart_rx_done ),
.uart_rx_data (uart_rx_data )
);
//串口发送模块
uart_tx #(
.CLK_FREQ (CLK_FREQ),
.UART_BPS (UART_BPS)
)
u_uart_tx(
.clk (sys_clk ),
.rst_n (sys_rst_n ),
.uart_tx_en (uart_rx_done),
.uart_tx_data(uart_rx_data),
.uart_txd (uart_txd ),
.uart_tx_busy( )
);
endmodule
串口接收模块