Verilog中使用inout如何编写以及仿真

inout类型

inout类型,顾名思义,是输入输出引脚。也就是同样的引脚,既可以作为输出也可以作为输入。那么这就带来一个问题,怎么控制它输入输出?

解决方案

将inout看成是一个三态门。利用一个使能控制信号,来对inout进行选择。

注意事项

首先,在程序的 主体上,我们使用控制信号,来判断的是,输出模式的状态。
也就是说,使用控制信号来进行选择的时候是使得inout处于out状态以及高阻态。而当inout作为输入的时候,不用去选择。
举例:
inout [7:0]data,
///

对inout类型的操作
reg [7:0]data_out_sb;//将想要输出数据先寄存到此处
reg en_output; //使能控制,1:选择data_out_sb;0:高阻态
assign data=en_output?data_out_sb:1’bz;//处于高阻态是输入状态
//

仿真

在仿真的时候,当我们想要使得inout作为输入,输入数据的时候。千万不能给data直接赋值,或者在testbench文件里面再写一个上面的选择判断的语句。如果这样,会导致完全无法输出。同时,inout类型在testbench文件里面应该定义为wire
假如,我们想先使得inout输出,使得器件得到初始化;然后在使得inout输入,得到器件的输出。
如果我们再测试文件里面对inout类型初始化,或者赋值或者是向上面一样利用一个状态控制,这些方法都不行。如果这样做,会导致inout类型,无法工作,堵塞。

仿真解决方案,使用force

当你想使得inout类型,作为输入。就在testbench文件里面,使用force类型。

 wire[7:0]data;//inout类型
initial begin
force data=8'd100;
end 


  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值