中易网

verilog 如何处理需要在两个always 中赋值的变量(ZT)求解

答案:2  悬赏:0  
解决时间 2021-04-09 07:03
verilog 如何处理需要在两个always 中赋值的变量(ZT)求解
最佳答案
在一个以上的always块中对同一个变量赋值容易产生竞争冒险,且不能综合。 但是如果一个变量的值必须与两个always事件相关联,且两个事件不可能放在一个always块中(如同一时钟上升沿与下降沿,或者是两个不同时钟进行触发的),那么应该用什么方法来处理这个变量呢?一旦遇到这个问题。verilog中的解决方法是两个变一个。一个always块只对一个变量赋值。最后将其用组合逻辑将其变为一个信号。 举例: always @ (posedge clk or negedge rst) if (!rst) cnt1 <= #1 3'd0; else if (cnt1==4) cnt1 <= #1 3'd0; else cnt1 <= #1 cnt1+1; //--注意这是两个不同时钟沿触发的always 模块 --zhengjw 2012.7.16 always @ (negedge clk or negedge rst) if (!rst) cnt2 <= #1 4'd0; else if (cnt2==5) cnt2 <= #1 4'd0; else cnt2 <= #1 cnt2 +1; always @ (cnt1 or cnt2 ) //--组合逻辑 if (cnt1==2) ckout = 1'b1;else if (cnt2==4) ckout = 1'b0;else ckout = 1'b1; // logic part to combine the two cnt to one output 你看到了。前两个是定义了两个不同沿触发的时序电路就是计数器。最后一个组合逻辑来将两个做成一个使能信号。 这个做法可以做出不同沿触发的时序使能信号。但是这么做出的一个信号强烈建议不作为高质量时钟输出。由于编写程序风格。所以做为时钟可能延迟以及抖动都不能作为高质量时钟的设计。
全部回答
支持一下感觉挺不错的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
本人想出国 不知道 阜宁县劳务外派服务中心在
有没有可能实现星际间的实时通讯?
520西餐厅地址在什么地方,想过去办事
成熟男人如何挽留女朋友
荣耀6手机没有菜单键,我用MT管理器查看源代
大佬们,求教这鸟属性可以刷魂8不
洗澡间PVC下水管九十度接头忘记抹胶水了 直接
如何读取内燃叉车的使用时间表数值?
自助餐和自助火锅哪个好啊
我想问一下2010产上海英轮汽车发动机是时规皮
来伊份的香蕉片是烘干的还是油炸的?
数码彩漆江陵专卖店这个地址在什么地方,我要
花韩这个整容软件靠谱吗?
陕a0258领是什么牌照
致谢词放在论文的什么位置
推荐资讯
这算不算侵犯员工隐私
张刘村在哪里啊,我有事要去这个地方
鲫鱼胆破了怎么办呢
辽宁阜新到瑞应寺怎么走?多久?
圣斗士星矢ol转换守护星座有什么用啊?
南木装饰我想知道这个在什么地方
我们平常借钱时说的“3分息”是什么意思呢
主板,CPU,内存 都有什么作用
为什么有工商银行发信息给我卡已经冻结我又没
在嘉应学院读专a是在校本部吗
汽车以多少转速行驶最好?
福利房算不算二套房
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?