inout端口作为输入输出口,其在综合中以三态门的硬件形式而存在。但在波形仿真中,其具有输入输出性质就需要特别的操作手法才可以观察到正确的仿真波形。

  1. 在inout端口信号的仿真中,测试激励文件中Inout口必须定义为wire类型;
  2. 建议inout口的输入仿真和输出仿真分开来做,尤其是在IIC等互有交互变换时,因为这样会增加仿真激励文件的书写难度;
  3. 在进行inout口输入仿真时,把该端口在测试激励文件中视为单纯的wire类型,尽管你可能会在仿真波形中看到被测试模块输出的高阻信号;
  4. 在进行inout口的输出仿真时,需要在测试激励文件中定义一个三态门和该端口相连,这样才可以在仿真中看到该端口的正确输入波形信号。

下面,以Inout口的输入为特别示例(IIC主机读从机),其中sda为inout口:

module iic_tb();reg clk,rst_n;wire sda;reg[7:0]data_in;reg data_v;wire scl;wire[7:0]data_rd;wire wr,rd;///建立输入仿真三态门reg SDA_R;reg SDA_LINK;wire SDA;assign SDA = SDA_LINK ? 1'bz : SDA_R;assign sda = SDA;/IIC IIC_U1(.clk(clk),.rst_n(rst_n),.sda(sda),.data_in(data_in),.data_v(data_v),.scl(scl),.data_rd(data_rd),.wr(wr),.rd(rd));
initial begin
clk <= 0;
rst_n = 1;
data_in <= 8'd0;
data_v <= 0;
SDA_R <= 0;
SDA_LINK <= 1;
#100 rst_n = 0;
#100 rst_n = 1;
/
#20 begindata_in <= 8'b11110001;data_v <= 1'b1; end
#20 data_v <= 1'b0;
#87440 SDA_LINK = 1'b0;
#7500   beginSDA_R = 1'b1;end#10000 SDA_R = 1'b0;#10000 SDA_R = 1'b1;#10000 SDA_R = 1'b0;#10000 SDA_R = 1'b1;#10000 SDA_R = 1'b0;#10000 SDA_R = 1'b1;#10000 SDA_R = 1'b0;#10000 SDA_LINK = 1'b1;end
always #10 clk = ~clk;
endmodule

测试出的波形如下:

可以看到在被测试模块sda输出高阻的情况下(link = 1),观察到了sda输入的正确波形

FPGA设计中inout端口信号的仿真测试相关推荐

  1. 防止FPGA设计中综合后的信号被优化

    这不是一个新话题了,写这个也是当作自己的一个小小的笔记吧!觉得挺有用的. 一般在做前仿真(即功能仿真)时,不会考虑信号被优化的问题.最近做一个关于运算的小程序,前仿真的数据没有问题,但是实际出来的数据 ...

  2. Verilog中inout端口的使用方法

    Verilog中inout端口的使用方法 (本文中所有Verilog描述仅为展示inout端口的用法,实际描述则需要更丰富的功能描述) Inout端口的使用 在芯片中为了管脚复用,很多管脚都是双向的, ...

  3. 关于FPGA设计中的线性序列机和状态机

    在FPGA设计中,线性序列机和状态机思想是十分重要的思想方法,用于实现各种时序要求.这次的内容是实现用FPGA,时钟周期为20ns,每间隔5000ns发送一个字节的数据,数据不从外部接入,而是内部给定 ...

  4. FPGA设计中,产生LFSR伪随机数

    今天给大侠带来在FPGA设计中,产生LFSR伪随机数,话不多说,上货. 一.概述 通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取 ...

  5. FPGA设计中,Vivado 调用IP核详细操作步骤

    FPGA设计中,Vivado 调用IP核详细操作步骤 今天给大侠带来了FPGA设计中,Vivado 调用IP核详细操作步骤,话不多说,手把手教学,请往下看. 首先咱们来了解一下vivado的IP核,I ...

  6. FPGA设计中BRAM(Block RAMs)资源的使用(综合为BRAM)

    FPGA设计中BRAM(Block RAMs)资源的使用   RAM分为BRAM(Block RAMs)和DRAM(Distributed RAM),即块RAM与分布式RAM,这两个差别在于BRAM是 ...

  7. FPGA设计中,跨时钟域问题的处理

    FPGA设计中,跨时钟域问题的处理 今天和大侠简单聊一聊FPGA设计中跨时钟域问题的处理,话不多说,上货. 跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPG ...

  8. FPGA设计中 有符号数、无符号数

    FPGA设计中 有符号数.无符号数 今天给大侠聊一聊FPGA设计中有符号数以及无符号数,话不多说,上货. 在设计中,所有的算数运算符都是按照无符号数进行的.如果要完成有符号数计算,对于加.减操作通过补 ...

  9. 在FPGA设计中怎么应用ChatGPT?

    在FPGA设计中怎么应用ChatGPT? 科技即生产力,最近,OpenAI 发布了 ChatGPT,在各大论坛和许多网站上受到了广泛关注,ChatGPT是由 OpenAI 提出的大型预训练语言模型,使 ...

最新文章

  1. 另外一篇关于JS页面跳转代码
  2. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
  3. Unity 分离贴图 alpha 通道实践
  4. 电脑延迟关机命令Shutdown详解
  5. Mysql索引优化实例讲解
  6. 行为设计模式 - 迭代器设计模式
  7. [FWT] UOJ #310. 【UNR #2】黎明前的巧克力
  8. (三)MapReducer运行流程
  9. js中addEventListener第三个参数涉及到的事件捕获与冒泡
  10. 求 HCDA认证题库
  11. secoclient支持ipv6吗_ipv6使用说明
  12. 三国志战略版:先锋斥候广州行
  13. kde下gwenview启动慢,甚至几十秒才能启动
  14. 打通Linux内存管理任督二脉
  15. 如何做到像使用 LaTeX 那样优雅地使用 Word?
  16. 通信:5G孕育上游投资空间
  17. win10 桌面(Windows 资源管理器)卡死的根本解决办法
  18. android计时器和倒计时
  19. 小程序添加好友的实现
  20. html蒙尘效果,vr看车.html

热门文章

  1. Ext.encode与Ext.decode的JSON转换
  2. hive sql优化和shuffle过程优化
  3. peoplecode 变量
  4. UnicodeDecodeError: 'gbk' codec can't decode byte 0x80
  5. (转)Docker镜像结构原理
  6. 找到有趣发现好玩的应用 一个木函
  7. python中endswith()函数的用法
  8. python+opencv 实现 微信跳一跳外挂
  9. 全景丨0基础学习VR全景制作,后期篇第十七章:VR视频剪辑和输出
  10. vue升级uglifyjs