| 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 |