顶层模块的代码如下:
- 1 module uart_loopback_top(
- 2 input sys_clk, //外部50M时钟
- 3 input sys_rst_n, //外部复位信号,低有效
- 4
- 5 input uart_rxd, //UART接收端口
- 6 output uart_txd //UART发送端口
- 7 );
- 8
- 9 //parameter define
- 10 parameter CLK_FREQ = 50000000; //定义系统时钟频率
- 11 parameter UART_BPS = 115200; //定义串口波特率
- 12
- 13 //wire define
- 14 wire uart_recv_done; //UART接收完成
- 15 wire [7:0] uart_recv_data; //UART接收数据
- 16 wire uart_send_en; //UART发送使能
- 17 wire [7:0] uart_send_data; //UART发送数据
- 18 wire uart_tx_busy; //UART发送忙状态标志
- 19
- 20 //*****************************************************
- 21 //** main code
- 22 //*****************************************************
- 23
- 24 //串口接收模块
- 25 uart_recv #(
- 26 .CLK_FREQ (CLK_FREQ), //设置系统时钟频率
- 27 .UART_BPS (UART_BPS)) //设置串口接收波特率
- 28 u_uart_recv(
- 29 .sys_clk (sys_clk),
- 30 .sys_rst_n (sys_rst_n),
- 31
- 32 .uart_rxd (uart_rxd),
- 33 .uart_done (uart_recv_done),
- 34 .uart_data (uart_recv_data)
- 35 );
- 36
- 37 //串口发送模块
- 38 uart_send #(
- 39 .CLK_FREQ (CLK_FREQ), //设置系统时钟频率
- 40 .UART_BPS (UART_BPS)) //设置串口发送波特率
- 41 u_uart_send(
- 42 .sys_clk (sys_clk),
- 43 .sys_rst_n (sys_rst_n),
- 44
- 45 .uart_en (uart_send_en),
- 46 .uart_din (uart_send_data),
- 47 .uart_tx_busy (uart_tx_busy),
- 48 .uart_txd (uart_txd)
- 49 );
- 50
- 51 //串口环回模块
- 52 uart_loop u_uart_loop(
- 53 .sys_clk (sys_clk),
- 54 .sys_rst_n (sys_rst_n),
- 55
- 56 .recv_done (uart_recv_done), //接收一帧数据完成标志信号
- 57 .recv_data (uart_recv_data), //接收的数据
- 58
- 59 .tx_busy (uart_tx_busy), //发送忙状态标志
- 60 .send_en (uart_send_en), //发送使能信号
- 61 .send_data (uart_send_data) //待发送数据
- 62 );
- 63
- 64 endmodule
复制代码
|