diff options
| -rw-r--r-- | hdl/top.sv | 20 |
1 files changed, 10 insertions, 10 deletions
| @@ -98,18 +98,18 @@ always_ff @(posedge clk) begin | |||
| 98 | mem_valid = 1; | 98 | mem_valid = 1; |
| 99 | mem_address = {2'b0, pc}; | 99 | mem_address = {2'b0, pc}; |
| 100 | mem_write = 0; | 100 | mem_write = 0; |
| 101 | if (`mem_ready) begin | 101 | if (mem_ready) begin |
| 102 | state = DECODE; | 102 | state = DECODE; |
| 103 | ++pc; | 103 | ++pc; |
| 104 | end | 104 | end |
| 105 | end | 105 | end |
| 106 | 106 | ||
| 107 | DECODE: begin | 107 | DECODE: begin |
| 108 | if (`mem_read_valid) begin | 108 | mem_valid = 0; |
| 109 | mem_valid = 0; | 109 | mem_write = 0; |
| 110 | mem_write = 0; | 110 | if (mem_read_valid) begin |
| 111 | state = FETCH; | 111 | state = FETCH; |
| 112 | {opcode, operand} = `mem_read_data; | 112 | {opcode, operand} = mem_read_data; |
| 113 | `ifdef DEBUG $display("\tdecode %x:%x", opcode, operand); `endif | 113 | `ifdef DEBUG $display("\tdecode %x:%x", opcode, operand); `endif |
| 114 | case (opcode) | 114 | case (opcode) |
| 115 | 'h0: acc = {{4{operand[7]}}, operand}; | 115 | 'h0: acc = {{4{operand[7]}}, operand}; |
| @@ -140,20 +140,20 @@ always_ff @(posedge clk) begin | |||
| 140 | 'h1: begin | 140 | 'h1: begin |
| 141 | mem_valid = 1; | 141 | mem_valid = 1; |
| 142 | mem_address = idx + operand; | 142 | mem_address = idx + operand; |
| 143 | state = `mem_ready ? MEMORY : AGEN; | 143 | state = mem_ready ? MEMORY : AGEN; |
| 144 | end | 144 | end |
| 145 | 'h2: begin | 145 | 'h2: begin |
| 146 | mem_valid = 1; | 146 | mem_valid = 1; |
| 147 | mem_address = idx + operand; | 147 | mem_address = idx + operand; |
| 148 | mem_write = 1; | 148 | mem_write = 1; |
| 149 | mem_write_data = acc; | 149 | mem_write_data = acc; |
| 150 | state = `mem_ready ? FETCH : AGEN; | 150 | state = mem_ready ? FETCH : AGEN; |
| 151 | end | 151 | end |
| 152 | endcase | 152 | endcase |
| 153 | end | 153 | end |
| 154 | 154 | ||
| 155 | MEMORY: begin | 155 | MEMORY: begin |
| 156 | if (`mem_ready) begin | 156 | if (mem_ready) begin |
| 157 | mem_valid = 0; | 157 | mem_valid = 0; |
| 158 | mem_write = 0; | 158 | mem_write = 0; |
| 159 | end | 159 | end |
| @@ -161,8 +161,8 @@ always_ff @(posedge clk) begin | |||
| 161 | `ifdef DEBUG $display("\tstall"); `endif | 161 | `ifdef DEBUG $display("\tstall"); `endif |
| 162 | case (opcode) | 162 | case (opcode) |
| 163 | 'h1: begin | 163 | 'h1: begin |
| 164 | if (`mem_read_valid) begin | 164 | if (mem_read_valid) begin |
| 165 | acc = `mem_read_data; | 165 | acc = mem_read_data; |
| 166 | end else begin | 166 | end else begin |
| 167 | state = MEMORY; | 167 | state = MEMORY; |
| 168 | end | 168 | end |
