HDLbits刷题记录之Always case2
题目:
要求是判断4位2进制数的1的从右往左第一次出现的位置,出现在右边第一个为0,出现在右边第二个的为1,依次类推。
我第一遍就只写了in=4’b1000、4’b0100、4’b0010、4’b0001这四种情况,可想而知,1不止出现一次。因此我把其他都写出来了。代码如下:
// synthesis verilog_input_version verilog_2001
module top_module (
input [3:0] in,
output reg [1:0] pos );
always@(*)begin
case(in)
4'b1000 : pos = 3;
4'b0100 : pos = 2;
4'b1100 : pos = 2;
4'b0010 : pos = 1;
4'b0110 : pos = 1;
4'b1010 : pos = 1;
4'b1110 : pos = 1;
4'b0001 : pos = 0;
4'b0011 : pos = 0;
4'b0101 : pos = 0;
4'b0111 : pos = 0;
4'b1001 : pos = 0;
4'b1011 : pos = 0;
4'b1101 : pos = 0;
4'b1111 : pos = 0;
default : pos = 0;
endcase
end
endmodule
总结感悟:
菜鸡本鸡。。。。。。