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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] verilog中一个关于赋值的问题

[复制链接]
发表于 2013-3-22 06:45:06 | 显示全部楼层 |阅读模式

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

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

x





  1. parameter [31:0] dat [0:instructions-1] = {
  2.   32'h0,
  3.   32'h0,
  4.   32'h0,
  5.   32'h12345678,
  6.   32'h0,
  7.   32'h0,
  8.   32'h0,
  9.   32'h0,
  10.   32'h0,
  11.   32'h0,
  12.   32'h00010002,
  13.   32'h00030004,
  14.   32'ha1050006,
  15.   32'h00070008,
  16.   32'h0,
  17.   32'h0,
  18.   32'hdeaddead,
  19.   32'h55555555,
  20.   32'ha1050006,
  21.   32'h00070008,
  22.   32'h00010002,
  23.   32'h00030004,
  24.   32'h0,
  25.   32'h0,
  26.   32'h0,
  27.   32'h0,
  28.   32'h0,
  29.   32'h0,
  30.   32'h0,
  31.   32'h0,
  32.   32'h0,
  33.   32'h0
  34.   };


复制代码


Illegal assignment to type 'reg[31:0] $[0:instructions-1]' from type 'reg[1023:0]': Cannot assign a packed type to an unpacked type.

有人知道这个问题怎么回事吗?
发表于 2013-3-22 07:39:51 | 显示全部楼层
{}的意思是把{}内所有数据连接起来变成1个数据,你这里就得到一个1024位的数据。
而你等号左边是1个2维数组,vcs不知道怎么把1个数据变成1个2维数组。
发表于 2013-3-22 08:39:59 | 显示全部楼层
想对memory赋初值,直接$readmemh不更好?
发表于 2013-3-22 09:03:07 | 显示全部楼层
verilog中不能那样定义。而应该这样:
parameter [0:1023] dat = {......};
dat[32*N : 32*N+31]就是第N个DWORD类型的值。并且,要确保那个1023与{}中值的个数是匹配的。当然也可以定义为 parameter [1023:0] dat......
发表于 2013-3-22 09:43:29 | 显示全部楼层
这个就是典型的软件思路写法
发表于 2013-3-23 11:01:31 | 显示全部楼层
贴主弄错了数组和拼接赋值两者的含义
发表于 2013-3-27 23:45:07 | 显示全部楼层
楼主以前写软件的吧....
{}是拼接符~看看语法
发表于 2013-12-19 11:17:12 | 显示全部楼层
这是SystemVerilog的特性,在编译仿真的时候加上对SystemVerilog的支持;
发表于 2014-11-30 11:32:25 | 显示全部楼层
我觉得不能对两个reg型变量赋值,你可以把期中一个改成输出变量或是别的变量类型试试
发表于 2014-11-30 20:18:42 | 显示全部楼层
用-sv试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-26 17:36 , Processed in 0.022891 second(s), 9 queries , Gzip On, Redis On.

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