Added tests for attributes
[yosys.git] / tests / simple / omsp_dbg_uart.v
1
2 module omsp_dbg_uart (dbg_clk, dbg_rst, mem_burst, cmd_valid);
3
4 input dbg_clk;
5 input dbg_rst;
6 input mem_burst;
7 output cmd_valid;
8
9 reg [2:0] uart_state;
10 reg [2:0] uart_state_nxt;
11
12 wire xfer_done;
13
14 parameter RX_SYNC = 3'h0;
15 parameter RX_CMD = 3'h1;
16 parameter RX_DATA = 3'h2;
17
18 always @(uart_state or mem_burst)
19 case (uart_state)
20 RX_SYNC : uart_state_nxt = RX_CMD;
21 RX_CMD : uart_state_nxt = mem_burst ? RX_DATA : RX_SYNC;
22 RX_DATA : uart_state_nxt = RX_SYNC;
23 default : uart_state_nxt = RX_CMD;
24 endcase
25
26 always @(posedge dbg_clk or posedge dbg_rst)
27 if (dbg_rst) uart_state <= RX_SYNC;
28 else if (xfer_done | mem_burst) uart_state <= uart_state_nxt;
29
30 assign cmd_valid = (uart_state==RX_CMD) & xfer_done;
31 assign xfer_done = uart_state!=RX_SYNC;
32
33 endmodule
34