保持寄存器+握手
“一种解决总线同步问题的方法是使用一个保持寄存器和握手信号”,这也就是“先异步暂存,后同步写入”的方法
分别编写了发送时钟域和接收时钟域的代码进行测试,用到两组MEM,以便于观察实验结果:
//发送端代码
//接收域应答信号ack采用两级寄存器同步,便于时序收敛
module woshou_tx(
input rst_n,
input t_clk,
input ack,
output [7:0] dout,
output reg req
);
reg ack_reg1,ack_reg2;
reg [7:0] data_buf;
reg [2:0]tr_state;
reg [7:0] TR_MEM_Addr;
reg [7:0] TR_MEM [255:0];
parameter TR_IDLE=3'b000, SND_DATA_REQ=3'b001, CHK_ACK_ACTIVE=3'b010, CHK_COMM_END=3'b100;
always@(negedge rst_n or posedge t_clk)
begin
if