diff options
Diffstat (limited to 'data/accumulator1.v')
-rw-r--r-- | data/accumulator1.v | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/data/accumulator1.v b/data/accumulator1.v new file mode 100644 index 0000000..5e9637a --- /dev/null +++ b/data/accumulator1.v @@ -0,0 +1,32 @@ +module main(reset, clk, finish, return_val); + reg [31:0] stack [2:0]; + input [0:0] clk, reset; + output reg [31:0] return_val; + output reg [0:0] finish; + reg [31:0] reg_8, reg_4, state, + reg_6, reg_1, reg_9, + reg_5, reg_3, reg_7; + always @(posedge clk) + case (state) + 32'd16: reg_9 <= 32'd1; + 32'd15: stack[32'd0] <= reg_9; + 32'd14: reg_8 <= 32'd2; + 32'd13: stack[32'd1] <= reg_8; + 32'd12: reg_7 <= 32'd3; + 32'd11: stack[32'd2] <= reg_7; + 32'd10: reg_3 <= 32'd0; + 32'd9: ; + 32'd8: reg_1 <= 32'd0; + 32'd7: reg_6 <= 32'd0; + 32'd6: reg_5 <= stack[{{{reg_6 + 32'd0} + + {reg_1 * 32'd4}} / 32'd4}]; + 32'd5: reg_3 <= {reg_3 + {reg_5 + 32'd0}}; + 32'd4: reg_1 <= {reg_1 + 32'd1}; + 32'd3: ; + 32'd2: reg_4 <= reg_3; + 32'd1: begin + finish = 1'd1; + return_val = reg_4; + end + default:; + endcase |