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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2280|回复: 3

[求助] 一小段代码的仿真出现问题求解

[复制链接]
发表于 2016-6-20 11:43:38 | 显示全部楼层 |阅读模式

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

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

x
请问为啥vpoyy的结果始终是vpoy

【活跃】!!… 2016-6-20 11:36:18

无论sec的值是多少,,始终是vpoyy的值为vpoy,这是什么原因
hahaha.bmp
hah.bmp
 楼主| 发表于 2016-6-20 11:50:47 | 显示全部楼层
reg [1:0]sec;
always@(posedge clk15625 or posedge reset)
if(reset)
sec<=0;
else if(vref==1)
sec<=sec+1;
else
sec<=0;



reg [7:0]vpoyy;
always@(posedge clk13_5M or posedge reset)
if(reset)
vpoyy<=0;
else if(sec==0)
vpoyy<=vpoy;
else if(sec==1)
vpoyy<=vpoy1;
else if(sec==2)
vpoyy<=vpoy2;
else if(sec==3)
vpoyy<=vpoy3;
else
vpoyy<=0;
这是对应的相关代码
发表于 2016-6-20 12:44:15 | 显示全部楼层
回复 2# chang75161

首选,把你所有的赋值和比较语句中,全部带上位宽,特别是else if(sec==0)这些,sec==2'd0,2’d1,2‘d2,2'd3。不管是赋值还是比较,不带上位宽的写法是很不好的风格,甚至发生错误,比如你这里就导致了错误。


另外你的RTL还存在两处改进地方。
1、sec是clk15625时钟下的信号,直接在clk13_5M下使用是否安全?
2、第二段RTL中,使用case逻辑显然比if else更好,原因自己去琢磨
发表于 2016-6-23 09:33:35 | 显示全部楼层
你考虑跨时钟域的问题了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-30 19:01 , Processed in 0.032710 second(s), 9 queries , Gzip On, MemCached On.

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