查看: 1832|回复: 12

奇怪的verilog问题 [复制链接]

wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-17 16:02:42 |显示全部楼层
关键词: verilog
reg  [17:0] test_data=0;//18'h0; 这样正常

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

reg  [17:0] test_data18'h0; 这样就出问题了。
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-17 16:10:41 |显示全部楼层
原来的想法,是系统上电,test_data=0,
可是,系统上电,竟然还保持上次掉电的数据!
乱套了。
如果增加复位引脚,还得增加额外的电路,而且,管脚相当紧张。
搞过verilog的帮忙看看。
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-17 16:11:31 |显示全部楼层
还有不少其他的变量,都是这样赋值的,如果这样有问题,那
必须得增加复位功能了。麻烦透了。
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-17 16:14:15 |显示全部楼层
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[17:0] <= {ea0,1'b0,ext_in_buf[14:0],mosi};//{ea0,1'b0,ext_in_buf[14:0],mosi};
            test_data[17:0]<= test_data[17:0]+1'b1;//{ea0,1'b0,ext_in_buf[14:0],mosi};//{ea0,1'b0,ext_in_buf[14:0],mosi};
    end
    else
    begin
            ext_in_wr<=0;
            ext_in_buf[14:0]<={ext_in_buf[13:0],mosi};
    end                               
//   if (ea0==ea0_old)
//           spck_cnt<=0;
//   else
      spck_cnt<=spck_cnt+1;  
    ea0_old<=ea0;
  end
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-17 16:14:58 |显示全部楼层
这是程序源码,就是一个spi接收而已。
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
Anqi160 (离线)
积分
30709
帖子
82
发表于 2009-8-18 16:48:08 |显示全部楼层
语法错误吧,,reg  [17:0] test_data=18'h00000;
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-19 09:50:48 |显示全部楼层
经过昨天和今天的测试,确实无论那种写法,确实是掉电数据保持!
看来,只能增加复位电路或者逻辑。
或许,这是actel 这款电路的特性吧。郁闷。
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
一朝成名 (离线)
积分
36914
帖子
1865
发表于 2009-8-19 16:21:57 |显示全部楼层
不懂,帮不上忙~
以前挺喜欢FPGA CPLD设计的,一直没机会,现在也没感觉了,过了劲儿了
网名招摇了点,人不招摇,大家都知道:)
yimaoqian (离线)
积分
2073
帖子
15
发表于 2009-8-25 22:09:59 |显示全部楼层
verilog最后实现的电路都是触发器和逻辑门,对于reg可类似于触发器的Q吧,用7474是大家都会把复位和置位端接到有效电平,我想cpld也应该不例外吧,上电没有有效复位的话,应该处于不定值,你定义变量reg = 0,但verilog的执行语句为always,assign,task,fuction;而reg = 0并没有在上述语句中,所以并没有被执行,可以把cpld的全局复位变量接出来吧,楼主不会把全局复位变量都用来做其他了吧?
wangkj (离线)
积分
57309
帖子
3129
发表于 2009-8-25 23:00:10 |显示全部楼层
没有接硬件复位电路。不得多站一个IO吗?
qq:1248780
email:1248780@qq.com
VGA 显示卡 arm单片机 显卡 cortex-m0 fpga 烧写器 开发板

http://item.taobao.com/item.htm?id=7801503020
yimaoqian (离线)
积分
2073
帖子
15
发表于 2009-8-26 20:21:18 |显示全部楼层
如果在fpga里, 掉电丢失的原因,reg  [17:0] test_data=18'h00000;上电时test_data初始值应该为0;
在spck_cnt<= 0处 同时test_data=18'h00000;可行不,这样只可能出现上电的那一次误码!
why2010a (离线)
积分
5
帖子
23
发表于 2010-11-10 10:23:01 |显示全部楼层
why2010a (离线)
积分
5
帖子
23
发表于 2010-11-10 10:23:26 |显示全部楼层
您需要登录后才可以发表评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备11013910号 | 京公网安备11010502021702
回顶部