HDLbits刷题记录之Always case
这个题目的要求是写一个多路复用器,就直接使用always@(*)块中的case语句即可,那就照猫画虎,直接放代码:
// synthesis verilog_input_version verilog_2001
module top_module (
input [2:0] sel,
input [3:0] data0,
input [3:0] data1,
input [3:0] data2,
input [3:0] data3,
input [3:0] data4,
input [3:0] data5,
output reg [3:0] out );//
always@(*) begin // This is a combinational circuit
case(sel)
3'b000 : out = data0 ;
3'b001 : out = data1 ;
3'b010 : out = data2 ;
3'b011 : out = data3 ;
3'b100 : out = data4 ;
3'b101 : out = data5 ;
default: out = 0;
endcase
end
endmodule
总结感悟:
我是没有注意到题目中说的除了5个之外,都是为0,然后没有写case的default,然后结果是部分出错,对比了波形图,写了default。然后回头看题目要求,确实是有default。感觉出来了 case还是尽量写上default。因为不写的话,有时候会停留在上面的某一个case满足的条件当中,从而造成错误。
菜鸡本鸡。