微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Verilog中可以利用循环对数组中的每一个单元进行操作吗?

Verilog中可以利用循环对数组中的每一个单元进行操作吗?

时间:10-02 整理:3721RD 点击:
比如:
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!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top