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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1832|回复: 1

[求助] 关于verilog数字系统设计教程(2版 夏宇闻)书中的一个问题

[复制链接]
发表于 2015-1-13 00:30:27 | 显示全部楼层 |阅读模式

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

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

x
小弟新手,接触verilog没多久,有些疑问想要请教下论坛的朋友们。

【三态双向驱动器1】
module bidir(tri_inout,out,in,en,b);
     inout tri_inout;
     output out;
     input in,en,b;
     assign tri_inout = en ? in : 'bz;
     assign out = tri_inout ^ b;
endmodule

【三态双向驱动器2】
module bidir2(bidir,en,clk);
     inout[7:0] bidir;
     input en,clk;
     reg[7:0] temp;
     assign bidir= en ? temp : 8'bz;
     always @(posedge clk)
        begin
            if(en) temp=bidir;
            else temp=temp+1;
        end
endmodule

如何理解【三态双向驱动器1】中assign out = tri_inout ^ b;的作用呢?b的作用是什么?
【三态双向驱动器2】中,en有效时,bidir怎么又是输入又是输出呢?assign bidir= en ? temp : 8'bz; if(en) temp=bidir;另一方面,en无效时,为何temp一直递增呢?

另外一个问题,always @(...) 括号中为电平信号时,比如 a or b or c,意味着a或b或c发生变化就触发这个过程块。abc的变化可能是0到1或者1到0,不像锁存器响应一个电平,或者触发器响应一个边沿。那么我的问题是,always @(a or b or c)在综合时是怎么样的电路呢?如何实现在abc变化时触发always块?
 楼主| 发表于 2015-1-18 11:45:29 | 显示全部楼层
给自己顶一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-20 04:50 , Processed in 0.018322 second(s), 8 queries , Gzip On, Redis On.

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