zoukankan      html  css  js  c++  java
  • [verilog] inout端口处理

    概括

    用于连接单元的连线是最常见的wire类型。wire与三态线(tri)网语法和语义一致。

    • 如果没有驱动器连接到网络类型的变量上,则该变量就是高阻的,即其值为z
    • wire型变量通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据
    • 三态线可以用于描述多个驱动源驱动同一根线的线网类型数据;并且没有其他特殊的意义。

    程序中使用

    inout                   i2c_sda ;
    reg                     i2c_sda_reg ;
    
    reg                     sda_output ;
    i2c_sda = sda_output ? i2c_sda_reg : 1'bz ;
    

    通过控制sda_output的高低电平,从而设置i2c_sda是输出数据还是处于高阻态。

    • 如果处于高阻态,则当普通input端口使用(sda_output = 0)
    • 否则则当output端口使用(sda_output = 1)

    testbench中使用

    • input端口定义成reg
    • output端口定义成wire
    • inout端口定义成wire

    在内部模块最好不要出现inout,如果确实需要,那么用两个port实现,到顶层的时候再用三态实现。
    理由是:在非顶层模块用双向口的话,该双向口必然有它的上层跟它相连。既然是双向口,则上层至少有一个输入口和一个输出口联到该双向口上,则发生两个内部输出单元连接到一起的情况出现,这样在综合时往往会出错。

    Good Good Study! Day Day Up!

  • 相关阅读:
    repeater 设置分页
    table表格合并
    repeater分页
    http错误500.19 错误代码 0x80070021
    asp文件上传和下载
    asp:Repeater控件使用
    vs2013标签
    "Uncaught SyntaxError: Unexpected token <"错误完美解决
    监控系统说明文档
    限制input输入类型(多种方法实现)
  • 原文地址:https://www.cnblogs.com/kdurant/p/4587145.html
Copyright © 2011-2022 走看看