题解 | #移位运算与乘法#
移位运算与乘法
https://www.nowcoder.com/practice/1dd22852bcac42ce8f781737f84a3272
`timescale 1ns/1ns
module multi_sel(
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);
//*************code***********//
reg [1:0]cnt;
reg [10:0]d1;
always @(posedge clk or negedge rst)
begin
if(!rst)begin
input_grant<=0;
out<=0;
cnt<=1'd0;
d1<=0;
end
else begin
case(cnt)
0:begin
out<=d;
input_grant<=1;
d1<=d;
cnt<=1;
end
1:begin
out<=(d1<<2)-d1;
input_grant<=0;
cnt<=2;
end
2:begin
out<=(d1<<3)-d1;
input_grant<=0;
cnt<=3;
end
3:begin
out<=(d1<<3);
input_grant<=0;
cnt<=0;
end
endcase
end
end
//*************code***********//
endmodule
本题考查状态机的用法及左移右移的使用,左右移与加减乘除使用时需要打括号。再就是这题有点没明白是乘d的1378还是在乘完的基础上再乘
