搜索
bottom↓
回复: 4

求助!编译器老是提示“无法给整个变量队列赋值”,为啥啊?都快把人整疯了~~

[复制链接]

出0入0汤圆

发表于 2010-10-20 11:35:12 | 显示全部楼层 |阅读模式
超级简单的计数器的程序!!就2句话!!

在每个clk时候对timenumber计数,计数最大值为20'hC3500,
输出信号为servo1,在计数值小于20'h0EA60的时候,输出为高,否则为低

但是编的程序死活不对!!

module iansuav(clk,rst,servo1);

input clk,rst;
output servo1;  
trireg servo1;

reg timenumber[19:0];

always @(posedge clk or rst)
          if(!rst)timenumber<=0;   //复位   这句提示有错,不能“对整个寄存器赋值”
          else
       
          begin
          if(timenumber<20'hC3500)timenumber<=timenumber+1;   //计数   提示有错,不能“对整个寄存器赋值”
          else timenumber<=0;                          //提示有错,不能“对整个寄存器赋值”
          end

assign servo1=(timenumber<20'h0EA60) ? 1'b1 : 1'b0;   //输出   提示有错,不能“对整个队列取值”
       
endmodule



老是提示
“values cannot be assigned directly to all or part of array "<timenumber>" - assignments must be made to individual elements only
”(不能对整个队列赋值)
或者“expression cannot reference entire array "<timenumber>"”(不能对整个队列取值)


看quartus的help文件怎么讲的吧,它教你要“对元素单独赋值”,例如
      x[1] = mem1bit[1];
      x[0] = mem1bit[0];

我考,都是这么简单的赋值的了,还要编译器干什么用啊!!







奇怪的是,这个“不能队列取值、赋值”问题有时候会出现,有时又会莫名其妙的好了!

例如我另外写的程序
always@(posedge clk)
        begin
                cnt_scan<=cnt_scan+1;
        end

又是可以用的!

唉!我都想砸电脑!烧房子了!!求大虾帮忙看下到底是啥原因啊,救人于水火之中啊!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-10-20 11:43:29 | 显示全部楼层
reg [3:0]i;

always @ ( posedge CLK or negedge RSTn )
    if( !RSTn )
        i <= 4'd0;
    else
        i <= 4'b1111;
    else if( ... )
        i <= i + 1'b1;

出0入0汤圆

发表于 2010-10-20 12:17:17 | 显示全部楼层
reg [A:0] timenumber[B:0]; // 声明2维数组,有B-1个,每个位宽A-1


reg timenumber[19:0];      // 声明2维数组,20个元素,每个元素位宽为1


你这个case里面,应该改为
reg [19:0] timenumber; // 声明一个寄存器,位宽20位,保证正确

出0入0汤圆

 楼主| 发表于 2010-10-20 12:29:00 | 显示全部楼层
回复【2楼】yuphone .COM 缺氧&reg;
reg [a:0] timenumber[b:0]; // 声明2维数组,有b-1个,每个位宽a-1

reg timenumber[19:0];      // 声明2维数组,20个元素,每个元素位宽为1  
你这个case里面,应该改为
reg [19:0] timenumber; // 声明一个寄存器,位宽20位,保证正确
-----------------------------------------------------------------------



原来是这样~~一试就对了!!太强了~~~~~

太谢谢了啊~~大哭~~~~~

出0入0汤圆

 楼主| 发表于 2010-10-20 12:37:26 | 显示全部楼层
~~~~~~~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 17:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表