奇怪的verilog问题

2009年08月17日 16:02    发布者:wangkj
reg   test_data=0;//18'h0; 这样正常

这个verilog的写法,用注释中的写法cpld就不工作了,奇怪!

reg   test_data18'h0; 这样就出问题了。

网友评论

wangkj 2009年08月17日
原来的想法,是系统上电,test_data=0,
可是,系统上电,竟然还保持上次掉电的数据!
乱套了。
如果增加复位引脚,还得增加额外的电路,而且,管脚相当紧张。
搞过verilog的帮忙看看。
wangkj 2009年08月17日
还有不少其他的变量,都是这样赋值的,如果这样有问题,那
必须得增加复位功能了。麻烦透了。
wangkj 2009年08月17日
always@(posedge spck)// or negedge erd)
  begin
    if (spck_cnt==15) //after clock 15,will have a delay
    begin
            ext_in_wr <= 1'b1;//ext_in data to ext_in FIFO
            ext_in_wdata <= {ea0,1'b0,ext_in_buf,mosi};//{ea0,1'b0,ext_in_buf,mosi};
            test_data<= test_data+1'b1;//{ea0,1'b0,ext_in_buf,mosi};//{ea0,1'b0,ext_in_buf,mosi};
    end
    else
    begin
            ext_in_wr<=0;
            ext_in_buf<={ext_in_buf,mosi};
    end                               
//   if (ea0==ea0_old)
//           spck_cnt<=0;
//   else
      spck_cnt<=spck_cnt+1;  
    ea0_old<=ea0;
  end
wangkj 2009年08月17日
这是程序源码,就是一个spi接收而已。
Anqi160 2009年08月18日
语法错误吧,,reg   test_data=18'h00000;
wangkj 2009年08月19日
经过昨天和今天的测试,确实无论那种写法,确实是掉电数据保持!
看来,只能增加复位电路或者逻辑。
或许,这是actel 这款电路的特性吧。郁闷。
一朝成名 2009年08月19日
不懂,帮不上忙~
以前挺喜欢FPGA CPLD设计的,一直没机会,现在也没感觉了,过了劲儿了
yimaoqian 2009年08月25日
verilog最后实现的电路都是触发器和逻辑门,对于reg可类似于触发器的Q吧,用7474是大家都会把复位和置位端接到有效电平,我想cpld也应该不例外吧,上电没有有效复位的话,应该处于不定值,你定义变量reg = 0,但verilog的执行语句为always,assign,task,fuction;而reg = 0并没有在上述语句中,所以并没有被执行,可以把cpld的全局复位变量接出来吧,楼主不会把全局复位变量都用来做其他了吧?
wangkj 2009年08月25日
没有接硬件复位电路。不得多站一个IO吗?
yimaoqian 2009年08月26日
如果在fpga里, 掉电丢失的原因,reg   test_data=18'h00000;上电时test_data初始值应该为0;
在spck_cnt<= 0处 同时test_data=18'h00000;可行不,这样只可能出现上电的那一次误码!
why2010a 2010年11月10日
why2010a 2010年11月10日