📄 st_mult1.v
字号:
module st_mult1 (cheng_shu, bei_cheng_shu, clk, rst, ok, result ) ;// M p l r是乘数,M c n d是被乘数。
input [15:0] cheng_shu, bei_cheng_shu;
input clk, rst;
output ok;
reg ok;
output [31:0] result;
reg [31:0] result;
parameter ini=0, add=1,shift=2,hold=3;
reg [1:0] current_state;
reg [1:0]state_temp;
reg [31:0] bei_cheng_shu_Temp;
reg [15:0]cheng_shu_temp;
reg[4:0] count ;
always@(posedge clk)
if(rst)
current_state=ini;
else
current_state=state_temp;
always@(current_state )
begin
case (current_state)
ini:
begin
count = 0;//位计数清零
bei_cheng_shu_Temp[15:0] = bei_cheng_shu;//加载数据
bei_cheng_shu_Temp[31:16]=16'b0 ;//高位置零
cheng_shu_temp=cheng_shu ;
result=0;
ok=0;
state_temp = add;//下一个状态为加运算
end
add:
begin
if (cheng_shu_temp[count]==1)
result=result+bei_cheng_shu_Temp;
state_temp=shift;
end
shift:
begin //此处必须是语句或者语句块。
bei_cheng_shu_Temp={bei_cheng_shu_Temp[30:0],1'b0};
count=count+1;
if(count==16)
begin
state_temp=hold;
end
else
state_temp=add;
end
hold:
begin
state_temp=hold;
ok=1;
end
endcase //对M p y _ S t a t e的c a s e语句结束。
end //顺序程序块P R O C E S S。
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -