📄 sender.v
字号:
module sender(clk, send, req_out, dout, ack_in); input clk, send, ack_in; output [33:0] dout; output req_out; parameter IDLE = 0, SEND_HEAD = 1, SEND_TAIL = 2, WAIT_ACK_HEAD = 3, WAIT_ACK_TAIL = 4, WAIT_ACKH_DOWN = 5, WAIT_ACKT_DOWN = 6; reg [2:0] state; reg [33:0] dout_r; reg req_r; assign dout = dout_r; assign req_out = req_r; initial begin state = IDLE; dout_r = 0; req_r = 0; end always @(posedge clk) begin case(state) IDLE: begin if(send == 1) begin state <= SEND_HEAD; end end SEND_HEAD: begin req_r <= 1; dout_r <= 34'b1000000000000000000000000000000010; state <= WAIT_ACK_HEAD; end WAIT_ACK_HEAD: begin if(ack_in == 1) begin req_r <= 0; dout_r <= 0; state <= WAIT_ACKH_DOWN; end end WAIT_ACKH_DOWN: begin if(ack_in == 0) state <= SEND_TAIL; end SEND_TAIL: begin req_r <= 1; dout_r <= 34'b0100001000010001000010000000000010; state <= WAIT_ACK_TAIL; end WAIT_ACK_TAIL: begin if(ack_in == 1) begin req_r <= 0; dout_r <= 0; state <= WAIT_ACKT_DOWN; end end WAIT_ACKT_DOWN: begin if(ack_in == 0) state <= SEND_HEAD; end endcase endendmodulemodule receiver(clk, req_in, ack_out); input clk, req_in; output ack_out; reg ack; assign ack_out = ack; always @(posedge clk) begin if(req_in == 1) ack = 1; else ack = 0; endendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -