|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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块? |
|