28 lines
674 B
Verilog
28 lines
674 B
Verilog
module axis_master(aclk, aresetn, tvalid, tready, tdata);
|
|
input aclk, aresetn, tready;
|
|
output reg tvalid;
|
|
output reg [7:0] tdata;
|
|
|
|
reg [31:0] state;
|
|
always @(posedge aclk) begin
|
|
if (!aresetn) begin
|
|
state <= 314159265;
|
|
tvalid <= 0;
|
|
tdata <= 'bx;
|
|
end else begin
|
|
if (tvalid && tready)
|
|
tvalid <= 0;
|
|
if (!tvalid || !tready) begin
|
|
// ^- should not be inverted!
|
|
state = state ^ state << 13;
|
|
state = state ^ state >> 7;
|
|
state = state ^ state << 17;
|
|
if (state[9:8] == 0) begin
|
|
tvalid <= 1;
|
|
tdata <= state;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
endmodule
|