📄 mul4b_shiftadd_fsm.v
字号:
module mul4b_shiftadd_fsm(mul_a,mul_b,mul_out,clk,rst_n);parameter MUL_WIDTH = 4;parameter MUL_RESULT = 8;parameter s0 = 0;parameter s1 = 1;parameter s2 = 2;input [MUL_WIDTH-1:0] mul_a;input [MUL_WIDTH-1:0] mul_b;input clk;input rst_n;output [MUL_RESULT-1:0] mul_out;reg [MUL_RESULT-1:0] mul_out;reg [MUL_RESULT-1:0] p;reg [MUL_RESULT-1:0] t;reg [MUL_WIDTH-1:0] mul_areg;reg [2:0] count;reg [1:0] state;always @(posedge clk or negedge rst_n)begin if(!rst_n) begin mul_out <= 8'b0000_0000; p <= 8'b0000_0000; t <= 8'b0000_0000; mul_areg <= 4'b0000; count = 3'b000; state <= s0; end else begin case (state) s0 : begin mul_areg <= mul_a; state <= s1; count = 2'b00; p <= 8'b0000_0000; t <= {1'b0,1'b0,1'b0,1'b0,mul_b}; end s1 : begin if(count==4) state <= s2; else begin if(mul_areg[0]==1'b1) p <= p + t; mul_areg <= mul_areg >> 1; t <= t << 1; count = count + 1; state <= s1; end end s2 : begin mul_out <= p; state <= s0; end endcase endendendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -