verilog中inout的定义问题
2014-01-20 20:27
344 查看
最近在调试一个东西,用到了双向IO口,inout。在我的记忆中,inout得用wire型定义,网上很多人也说要定义为wire 型。但由于设计中的任务,我有意把 inout定义为 reg型。Quartus II 编译没问题,只不过modelsim仿真不行,编译通不过。但问题所在是,下到板子中时,板子能跑通。后来我常规的把
inout 定义为 wire型,Quartus 和modelsim 仿真肯定能通过,上板也能调通。
二种方法所消耗的逻辑单元和 Fmax 都一样,所以我就产生了一个疑问。
疑问:
是不是inout可以定义为reg型??如果有大神看到此文章,希望能给点见解,我入门没多久,那里有错误,希望能指正,
谢谢!!!
以下部分代码:
//--------------------------------------------------------------------------------------------
wire 型:
wire emd;
always @(*) begin
if(dir == 1'b1) begin
if(my_slave == 1'b1) begin
r_r_emd= r_emd; // my_slave 为1时,返回本级数据给CPU
end else begin
r_r_emd = datadw; // my_slave 为0, 返回下一级数据 /* datadw 为双向IO口下一级数据 */
end
end else begin
r_r_emd = 1'b1;
end
end
assign dir = link;
assign emd = (dir == 1'b1) ? r_r_emd : 1'bz;
//------------------------------------------------------------------------------------------
reg 型:
reg emd;
always @(*) begin
if(dir== 1'b1) begin
if(my_slave== 1'b1) begin
emd= r_emd; // my_slave 为1时,返回本级数据给CPU
endelse begin
emd= datadw; // my_slave为0, 返回下一级数据 /* datadw 为双向IO口下一级数据 */
end
endelse begin
emd= 1'bz;
end
end
inout 定义为 wire型,Quartus 和modelsim 仿真肯定能通过,上板也能调通。
二种方法所消耗的逻辑单元和 Fmax 都一样,所以我就产生了一个疑问。
疑问:
是不是inout可以定义为reg型??如果有大神看到此文章,希望能给点见解,我入门没多久,那里有错误,希望能指正,
谢谢!!!
以下部分代码:
//--------------------------------------------------------------------------------------------
wire 型:
wire emd;
always @(*) begin
if(dir == 1'b1) begin
if(my_slave == 1'b1) begin
r_r_emd= r_emd; // my_slave 为1时,返回本级数据给CPU
end else begin
r_r_emd = datadw; // my_slave 为0, 返回下一级数据 /* datadw 为双向IO口下一级数据 */
end
end else begin
r_r_emd = 1'b1;
end
end
assign dir = link;
assign emd = (dir == 1'b1) ? r_r_emd : 1'bz;
//------------------------------------------------------------------------------------------
reg 型:
reg emd;
always @(*) begin
if(dir== 1'b1) begin
if(my_slave== 1'b1) begin
emd= r_emd; // my_slave 为1时,返回本级数据给CPU
endelse begin
emd= datadw; // my_slave为0, 返回下一级数据 /* datadw 为双向IO口下一级数据 */
end
endelse begin
emd= 1'bz;
end
end
相关文章推荐
- Verilog inout 的问题
- 关于vs2005 __RPC__out __RPC__in 未定义编译错误
- snmp 中的MIB变量ifInOctets and ifOutOctets 溢出问题
- verilog中双向端口inout的使用的总结[转帖]
- Verilog中inout端口的使用方法
- 53。XCode:duplicate symbol _base64_encode in--引用库重复定义的问题
- Verilog inout 双向口使用和仿真
- verilog中对于inout信号的处理
- 解决Exception in thread "main" java.lang.OutOfMemoryError: Java heap space问题
- Oracle 10.2 流复制问题(四)—— ORA-01341: LOGMINER OUT-OF-MEMORY in Oracle Streams
- Vs2005下重复定义的问题解决 ... already defined in ...
- 问题描述 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 解决方案[转] 一直都知道可以设置jvm he
- JAVA IO操作中的IN和OUT问题
- SharpMap AjaxMapControl 中 Zoomin/Zoomout 操作时冻结问题
- jQuery自定义动画函数animate() easing: "easeInOutCirc"导致的animate()动画抖动问题解决方法
- Vs2005下重复定义的问题解决 ... already defined in ...
- R语言-Error in file(out, "wt") : 无法打开链结问题解决
- verilog中对inout信号的处理
- Vlan ACL的IN和OUT的问题
- SharpMap AjaxMapControl 中 Zoomin/Zoomout 操作时冻结问题