【提问】用输出的完成标志位控制输入使能是否合理?-FPGA常见问题社区-FPGA CPLD-ChipDebug

提问用输出的完成标志位控制输入使能是否合理?

大家好,本人正在学习FPGA的基本知识,目前正在编写板子和上位机的UART串口通信环回程序,其中发送端的输入输出定义如下所示

module uart_tx_fsm
#(  
    parameter SYS_CLK_FREQ = 50_000_000,
    parameter BAUD_RATE = 9600    
)(
    input i_sys_clk,
    input i_asyn_rst_n,
    input i_data_vld,  // 使能信号
    input [7:0] i_data,
    output o_txd,
    output o_tx_done  // 信号完成标志脉冲
    );

我定义了一个来自顶层模块的使能信号i_data_vld,在输出端定义了一个o_tx_done作为发送完成的脉冲信号,顶层模块相关代码如下所示

reg tx_data_vld;
always@(posedge clk or negedge rst_n) begin
        if (!rst_n)
            tx_data_vld <= 1'b0;
        else if (tx_done)
            tx_data_vld <= 1'b0;  // 当接收完成时,停止接收模块
        else if (rx_done)
            tx_data_vld <= 1'b1;  // 当发送完成时,启动接收模块
    end

tx_data_vld是在顶层模块中用于使能发送端的信号,这里使用了发送端的完成信号再反过来控制这个使能信号,仿真没问题,请问这样的设计合理吗?

请登录后发表评论

    没有回复内容