Verilog中可以利用循环对数组中的每一个单元进行操作吗?
assign a[0] = b[0];
assign a[1] = b[1];
assign a[2] = b[2];
assign a[3] = b[3];
可以写成下面这样吗
integer i;
for(i=0; i<4; i=i+1)
assign a[i] = b[i]
或者有其他更合理的做法吗?
我是新手,请多包涵
果然够新,第一“数组”这个词出现在verilog里面是不是太夸张了?
那些东西都是一位的话,直接assign a=b;就可以吧
还有可以考虑利用generate语法。
多谢楼上,generate正是我想要的!
P.S. “数组”可不是我捏造的呵,教科书上就是这么写的,有位宽的书上写作“向量”,虽然例子有点模糊,但我的确指的是“数组”
另外再想请教一个问题,case下的分支可以用generate生成么,比如一个优先级选择器
casex (select)
4'b1xxx : out = in [0];
4'b01xx : out = in [1];
4'b001x : out = in [2];
4'b0001 : out = in [3];
default: out = 0;
有办法用类似于generate的方法生成吗?
一直没有用过generate
for循环是可以的,但是不能使用assign。
正确写法
always @(*)
for (i = 0; i < 4; i = i + 1)
a[i] = b[i];
综合工具会把for展开。
generate怎么用?哪个大虾教教我
是可以的,我曾经用数组做过流水线处理。
还曾经见过有工程师用VHDL数组加结构体写逻辑。并做得一个警告没有,惊为天人!
generate+for来实现
For statement is mostly used in testbench, isn't it. And it can not use in real hardware design. My opinion!
