在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7237|回复: 9

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

[复制链接]
发表于 2011-2-16 09:59:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
比如:
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]

或者有其他更合理的做法吗?

我是新手,请多包涵
发表于 2011-2-16 13:08:11 | 显示全部楼层
回复 1# seedx


    果然够新,第一“数组”这个词出现在verilog里面是不是太夸张了?

    那些东西都是一位的话,直接assign a=b;就可以吧

   还有可以考虑利用generate语法。
 楼主| 发表于 2011-2-16 21:38:03 | 显示全部楼层
本帖最后由 seedx 于 2011-2-16 21:39 编辑

多谢楼上,generate正是我想要的!

P.S. “数组”可不是我捏造的呵,教科书上就是这么写的,有位宽的书上写作“向量”,虽然例子有点模糊,但我的确指的是“数组”
 楼主| 发表于 2011-2-17 08:55:46 | 显示全部楼层
本帖最后由 seedx 于 2011-2-17 09:00 编辑

另外再想请教一个问题,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的方法生成吗?
发表于 2011-2-17 09:10:16 | 显示全部楼层
一直没有用过generate
发表于 2011-2-18 10:05:17 | 显示全部楼层
for循环是可以的,但是不能使用assign。
正确写法

always @(*)
    for (i = 0; i < 4; i = i + 1)
        a[i] = b[i];
综合工具会把for展开。
发表于 2011-2-18 14:24:27 | 显示全部楼层
generate怎么用?哪个大虾教教我
发表于 2011-2-19 10:54:01 | 显示全部楼层
是可以的,我曾经用数组做过流水线处理。
还曾经见过有工程师用VHDL数组加结构体写逻辑。并做得一个警告没有,惊为天人!
发表于 2011-2-19 22:01:26 | 显示全部楼层
generate+for来实现
发表于 2011-2-20 16:05:20 | 显示全部楼层
For statement is mostly used in testbench, isn't it. And it can not use in real hardware design. My opinion!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-30 20:57 , Processed in 0.023122 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表