我刚刚开始学习一些verilog,遇到了一个通常可以在其他语言中使用for循环解决的问题。
s2 s1 s0 m
0 0 0 u
0 0 1 v
0 1 0 w
0 1 1 x
1 0 0 y
1 0 1 z
这是问题的真值表,其中 s2,s1,s0 是开关,(u,v,w,x,y,z) 是输入,如果设置了某些开关,则输出 (m) 将设置为输入。但是,这只有 1 位宽,只要 s0,s1,s2 匹配,我们就可以将每个 m 分配为以下输入之一。如果它是 3 位宽的输入和输出 ex:(u0,u1,u2),(m0,m1,m2) 但每个变量仍然遵循相同的逻辑(例如:u0,u1,u2 都将是如果所有开关均为 0,则输出 m0、m1、m2)如何缩短我的代码。我可以这样做:
assign m[3:0] = (~s0&~s1&~s2&u[3:0])