打印

数组异常

[复制链接]
1994|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
andyany|  楼主 | 2010-9-15 14:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
edge, npu, os, se, tc
本帖最后由 andyany 于 2010-9-15 14:16 编辑

做了一个数组操作的例子——

module array1(clk, dout);
    input clk;
    output [3:0] dout;
  
  reg [3:0]data[3:0];
  reg [3:0]cnt;
always@(posedge clk)
if(cnt != 4'd14)
        cnt <= cnt + 4'd1;

always@(posedge clk)begin
        data[cnt] <= cnt;
         dout <= data[cnt];
end

endmodule

仿真发现输出全为X。
有的书上说,数组元素的地址必须为常数表达式。
按照新标准,reg为变量。因此错了。
是这样吗?

相关帖子

沙发
andyany|  楼主 | 2010-9-15 14:25 | 只看该作者
想把从AD采来的数通过串口发出。由于AD速度远大于串口速度,因此想让AD每采100个就暂停,等串口发完再采。如此反复。
因为对片上存储器不熟悉,于是就想通过数组解决问题。
难道此路不通?
看到有人用移位寄存器的思想操作数组元素。100个元素肯定很笨。
大家怎么看?

使用特权

评论回复
板凳
论坛80后| | 2010-9-16 12:30 | 只看该作者
你的东东没有复位!cnt 的初始值没有,还有吧dout改成wire型,用assign语句

使用特权

评论回复
地板
andyany|  楼主 | 2010-9-17 08:43 | 只看该作者
走片上存储器了。

使用特权

评论回复
5
sxhhhjicbb| | 2010-9-23 21:51 | 只看该作者
要初始化的。如果用modlesim。reg是可以的。没有初始化的请况下a是XX,那么a+1还是xx

使用特权

评论回复
6
crazyforu| | 2010-10-11 23:16 | 只看该作者
查查用generate的方式例化吧。为啥不喜欢用复位?!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

664

帖子

3

粉丝