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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3602|回复: 10

[求助] 问个关于不规则写法的问题?求帮助

[复制链接]
发表于 2015-4-3 15:33:38 | 显示全部楼层 |阅读模式

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

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

x
比如我这样写always@(*) begin if(a) b=1'b1; if(c)b=1'b0;end这样综合出来的电路是什么样的?相当于两个平行的条件。还有我最近遇到个问题,比如一个信号但有很多条件都可以让这个信号变化,如果全用IF ELSE的语句的话就会嵌套很多,而且条件之间本来也不可能同时来,本来也没有优先级,所以我不想用if else来嵌套。如果就像我开始写的这种写法不知道有问题没有?请问这种多条件驱动一个信号而条件之间没有竞争关第的应该怎样写才好呢?如果是一两个我就用if else了,关键是很多。
发表于 2015-4-3 15:38:04 | 显示全部楼层
回复 1# jom55555

会产生latch,这种写法应该被禁止。如果条件比较多的话,建议你设计一些中间变量,或者用编码/译码
发表于 2015-4-7 13:47:40 | 显示全部楼层





用一个bus把所需信号括在一起,
然后用case bus:语句,列出所需条目,
然后加full case和parallel case指导
发表于 2015-4-7 14:44:25 | 显示全部楼层
第一个问题可以自己综合,去看rtl视图,这个不回答,第二个问题可以用你之前的写法,语义是begin end之间的语句是顺序执行的,如果if(a) b = 1; if(C ) b = 0;当C和A同时为1时,先判断a是否为1,a为1 b置1,然后判断C C也为1,B置0.最终结果B为0,综合成的的硬件电路肯定也是根据verilog的语义完成这样的功能,所以if   if是有优先级的,最下面的if优先级最高,最上边的if优先级最低,而ifelse 无优先级,综合为多路选择器。
 楼主| 发表于 2015-4-7 15:57:41 | 显示全部楼层
回复 3# sjtusonic


    嗯,你说的这个我也想过,但觉得case里面的位宽有点大,哎,我是想写点小而精的风格,但这种情况感觉不好整。
 楼主| 发表于 2015-4-7 16:02:36 | 显示全部楼层
回复 4# insunshinecn
if else是多路选择啊,那CASE呢,我一直理解的是case是多路选择,条件只可能会满足一个,if else if else里面的条件可能同时来多个,但最早的那个优先级最高。后面满足的都执行不到那里去。我想写点容易理解的小巧风格,不太喜欢太长的case条件和太多的if else 嵌套。哎,
发表于 2015-4-7 16:27:13 | 显示全部楼层
回复 6# jom55555

第一个: if else 和case 通用,唯一的不同在case 可比较X 和Z,你可以找个代码去综合一下。第二个关于优先级的问题,if(a)  else if(b)之所以说他没有优先级,其实他的结构是这样的 if(a)  if( a == 0 && b)所有的状态都不冲突,所以没有优先判断一说,自己写个if else 和if if 综合看看。
发表于 2015-4-7 18:33:22 | 显示全部楼层


回复  sjtusonic


    嗯,你说的这个我也想过,但觉得case里面的位宽有点大,哎,我是想写点小而精的 ...
jom55555 发表于 2015-4-7 15:57




    位宽大不大的标准是综合后的电路大不大,而不是RTL写的大不大
加full case和parallel case指导后,会生成小而精的电路的。
发表于 2015-4-10 20:55:55 | 显示全部楼层
希望别人能帮到你
发表于 2015-4-10 22:22:39 | 显示全部楼层
你的代码有偏向多驱的倾向,这种在RTL设计里是不允许的。
还有你的那种“很多信号同时导致1个信号变化”,这种情况也不行,必须重新设计,要么有优先级,要么同时只有一种情况出现。
有一种情况,如果是多个用户要同时申请1个资源,可能就是你描述的问题,就需要仲裁,但无论怎么仲裁,必须是有先后地执行,1个1个来,不能一起来,等待的用户,需要你先缓存。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-19 07:07 , Processed in 0.021644 second(s), 8 queries , Gzip On, Redis On.

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