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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4246|回复: 13

[求助] 寄存器类型能不能取或??????

[复制链接]
发表于 2012-4-26 20:59:24 | 显示全部楼层 |阅读模式

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

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

x
代码如下
always @(posedge clk)
if(!rst) dcnt <= #1 4'h0;
else
if(ld)  dcnt <= #1 4'hb;                        
  else
if(|dcnt) dcnt <= #1 dcnt - 4'h1;                  
always @(posedge clk) done <= #1 !(|dcnt[3:1]) & dcnt[0] & !ld;
always @(posedge clk) if(ld) text_in_r <= #1 text_in;      
always @(posedge clk) ld_r <= #1 ld;



reg [3:0] dcnt; dcnt是寄存器类型,那么红体语句到底是个什么意思????
发表于 2012-4-26 21:09:57 | 显示全部楼层
你这样设计,组合罗技和时序逻辑混用,时序不好
不建议这样的设计
发表于 2012-4-26 21:19:21 | 显示全部楼层
dcnt如果不为0的话,dcnt减1。
 楼主| 发表于 2012-4-26 21:36:11 | 显示全部楼层
回复 2# wyqkiss
这段代码来自aes加密算法aes_cipher_top.v文件,应该没什么问题。我的疑问是:|是或,而dcnt表示的是寄存器类型,if(|dcnt) 这样一个判断条件究竟是什么意思??
 楼主| 发表于 2012-4-26 21:38:50 | 显示全部楼层
回复 3# genus001


    你的意思我明白,但是判断条件if(|dcnt) 中|不是!,所以我很头疼。
发表于 2012-4-26 22:02:20 | 显示全部楼层
回复 4# wudezhi_506


    你这个所谓的加密算法,个人确实感觉不咋的,连最起码的复位都没有
    不过解答你的问题
    那个是按位的或操作,例如cnt=4‘b1010,那么 |cnt=’1‘ | '0' | '1' | '0'=1
发表于 2012-4-26 23:02:13 | 显示全部楼层
这个我经常用啊。。。就是等效于if( dcnt > 0  ) dcnt <= dcnt - 1'b1;..
还有一种呢if( !&dcnt ) dcnt <= dcnt + 1'b1; 等效于if( dcnt != 5'b11111 ) dcnt <= dcnt + 1'b1;
随便怎么写都可以,没必要讨论,你综合出来的电路都是一模一样的,有意思么?手打出哪个就用哪个。
发表于 2012-4-27 08:43:54 | 显示全部楼层
7楼正解啊,哈哈
发表于 2012-4-27 09:01:08 | 显示全部楼层
问题很好,7楼解答的很有深度。顶起。
发表于 2012-4-27 11:39:05 | 显示全部楼层
建議先看一下VERILOG的語法.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-6 13:40 , Processed in 0.036741 second(s), 9 queries , Gzip On, Redis On.

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