UART串口verilog hdl实现(4)串口回显功能的设计与实现

编写一个顶层模块把发送模块和接收模块均例化进去,然后从PC的串口调试助手上发送数据到FPGA,FPGA接收到数据以后把接收的数据返回给串口调试助手显示

写一个顶层模块,把串口的发送模块与接收模块例化进去,把接收模块的接收完成标志位O_rx_done连接到发送模块的I_tx_start上,把接收模块的8-bit并行输出总线O_para_data连接到发送模块的8-bit并行输入总线I_para_data上。
顶层的代码:

module uart_top
(
    input            I_clk           , // 系统50MHz时钟
    input            I_rst_n         , // 系统全局复位
    input            I_rs232_rxd     , // 接收的串行数据,在硬件上与串口相连
    output           O_rs232_txd     , // 发送的串行数据,在硬件上与串口相连
    output    [3:0]  O_led_out       
);

wire            W_bps_tx_clk                 ;
wire            W_bps_tx_clk_en              ;
wire            W_bps_rx_clk                 ;
wire            W_bps_rx_clk_en              ;
wire            W_rx_done                    ;
wire            W_tx_done                    ;
wire  [7:0]     W_para_data                  ;

assign    O_led_out = W_para_data[3:0]       ;

baudrate_gen U_baudrate_gen
(
    .I_clk              (I_clk              ), // 系统50MHz时钟
    .I_rst_n            (I_rst_n            ), // 系统全局复位
    .I_bps_tx_clk_en    (W_bps_tx_clk_en    ), // 串口发送模块波特率时钟使能信号
    .I_bps_rx_clk_en    (W_bps_rx_clk_en    ), // 串口接收模块波特率时钟使能信号
    .O_bps_tx_clk       (W_bps_tx_clk       ), // 发送模块波特率产生时钟
    .O_bps_rx_clk       (W_bps_rx_clk       )  // 接收模块波特率产生时钟
);

uart_txd U_uart_txd
(
    .I_clk               (I_clk                 ), // 系统50MHz时钟
    .I_rst_n             (I_rst_n               ), // 系统全局复位
    .I_tx_start          (W_rx_done             ), // 发送使能信号
    .I_bps_tx_clk        (W_bps_tx_clk          ), // 波特率时钟
    .I_para_data         (W_para_data           ), // 要发送的并行数据
    .O_rs232_txd         (O_rs232_txd           ), // 发送的串行数据,在硬件上与串口相连
    .O_bps_tx_clk_en     (W_bps_tx_clk_en       ), // 波特率时钟使能信号
    .O_tx_done           (W_tx_done             )  // 发送完成的标志
);

uart_rxd U_uart_rxd
(
    .I_clk              (I_clk                ), // 系统50MHz时钟
    .I_rst_n            (I_rst_n              ), // 系统全局复位
    .I_rx_start         (1'b1                 ), // 接收使能信号
    .I_bps_rx_clk       (W_bps_rx_clk         ), // 接收波特率时钟
    .I_rs232_rxd        (I_rs232_rxd          ), // 接收的串行数据,在硬件上与串口相连  
    .O_bps_rx_clk_en    (W_bps_rx_clk_en      ), // 波特率时钟使能信号
    .O_rx_done          (W_rx_done            ), // 接收完成标志
    .O_para_data        (W_para_data          )  // 接收到的8-bit并行数据
);

endmodule
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值