芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 2912|回复: 0

仿真时出现信号呈高阻态与不定态的原因及解决思路

[复制链接]
  • TA的每日心情
    开心
    2025-3-20 18:02
  • 12

    主题

    13

    帖子

    312

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    312
    发表于 2024-6-27 09:50:51 | 显示全部楼层 |阅读模式
        Verilog HDL(Hardware Description Language)是在 C 语言的基础上发展起来的一种硬件描述语言(用它可以表示逻辑电路图、逻辑表达式、数字逻辑系统所完成的逻辑功能等)具有灵活性高、易学易用等特点。Verilog HDL 可以在较短的时间内学习和掌握,目前已经在 FPGA 开发/IC 设计领域占据绝对的领导地位。                 
        在Verilog的逻辑电路中有四种值,即四种状态:
    • 逻辑 0:表示低电平
    • 逻辑 1:表示高电平
    • 逻辑 X:表示未知,有可能是高电平,也有可能是低电平
    • 逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态
      有很多人在进行模块例化时遇到了一些问题,导致仿真时出现了高阻态等现象,这里对问题的原因和解决方法进行一些总结。
    1. 隐式例化
        对于隐式例化,需要按照模块声明时端口的顺序与外部信号进行匹配连接,位置要严格保持一致。如果原始工程和例化工程的连接不一致,可能导致信号未正确驱动,变成高阻态。

    原工程

    原工程

    例化工程

    例化工程

    原工程和例化工程

    image.png
    顺序不一致时出现信号错误

    2. 显式例化

    原工程

    原工程

    例化工程

    例化工程

    原工程和例化工程

        对于显式例化,例化的模块端口与外部信号按照其名字进行连接,端口顺序不一定一致,但要保证端口名字与外部信号匹配。未连接时,信号也会以高阻态显示。

    3. 端口连接
        对于input端口,可以连接 wire 或 reg 型变量。
        对于output端口,必须连接 wire 型变量。
        对于inout端口,必须连接 wire 型变量。

    4. 端口悬空
        output 端口可以悬空时,甚至可以在例化时将其删除,悬空时呈现为高阻态。input 端口悬空时,逻辑功能表现为高阻状态。但是,例化时一般不能将悬空的 input 端口删除,否则编译会报错或者告警,一般来说,建议 input 端口不要做悬空处理,一般给定初始常量。

    5. 位宽不匹配
        没有定义位宽,如在代码模块里面定义了位宽,但是在仿真tb里没有定义位宽,或者是在仿真tb里面定义了位宽,但是代码模块里没有定义位宽,这样就会出现这个问题。
        当例化端口与连接信号位宽不匹配时,端口会通过无符号数的右对齐或截断方式进行匹配。
    image.png

    6.未初始化寄存器
       
    寄存器变量未赋初值,仿真初始阶段为不定态,直到获得相应的值。
    image.png

    7.多驱动

        同一信号被多个驱动源(如多个always块或assign语句)同时驱动,且未通过三态逻辑控制。
    image.png


    8.顶层设置错误
        在vivado仿真时,如果错误的设置
    Simulation Sources顶层,会出现信号为高阻和不定的现象。
    image.png image.png





    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2025-5-1 16:47 , Processed in 0.110858 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表