• 【Verilog】Verilog基础知识整理


    Verilog HDL和VHDL

    • 共同特点
      1. 能形式化地抽闲表示电路的行为和结构
      2. 支持逻辑设计中层次与范围的描述
      3. 可借用高级语言的精巧结构来简化电路行为的描述,具有电路仿真与验证机制,以保证设计的正确性
      4. 支持电路描述由高层到底层的综合转换
      5. 硬件描述与实现工艺无关
      6. 便于文档管理
      7. 易于理解与设计重用
    • 互相区别
      • 设计方法
        • VHDL:语法结构紧凑、灵活性差、设计规则繁琐,可综合性与代码一致性强,适用于规模较大的数字继承电路系统设计
        • Verilog HDL:结构和设计方式灵活,容易进行综合与验证
      • 设计范围
        • VHDL:不具备开关级电路描述能力
        • Verilog HDL:系统级system、算法级algorithm、寄存器传输级RTL、门级gate和开关级switch电路

    Verilog HDL语言要素

    空白符

    • 空格符\b、制表符\t、换行符和换页符
    • 使代码看起来结构清晰,阅读起来更加方便
    • 编译和综合时,空白符被忽略

    注释符

    • 单行注释://
    • 多行注释:/**/

    标识符和转义标识符

    • 标识符被用来命名信号名、模块名、参数名等,可以是任意一组数字、字母、$和_符号的组合,且第一个字符必须是字母或下划线
    • 转义标识符可以在一条标识符中包含任何可打印的字符,以\符号开头,以空白结尾

    关键字

    • 事先定义好的确认符,用来组织语言结构

    数值

    • 0-低电平、逻辑0、假
    • 1-高电平、逻辑1、真
    • x/X-不确定、未知
    • z/Z-高阻态

    数制

    • 二进制-b/B
    • 八进制-o/O
    • 十进制-d/D
    • 十六进制-h/H

    数据类型

    1. 连线型
      • 表示逻辑单元的物理连接,可以对应物理信号连线
      • 若无驱动源、保持高阻态z
      • wire和tri
        • 连线型与三态线
        • wire型变量通常用来表示单个门驱动或连续赋值语句驱动的连线型数据
        • tri型变量用来表示多驱动器驱动的连线型数据,主要用于定义三态的线网
    2. 寄存器型
      • 数据存储单元的抽象类型,对应的硬件电路元件具有状态保持作用,能够存储数据
      • 常用于行为级描述中,由过程赋值语句对其进行赋值
      • wire需要有持续的驱动,reg保持最后一次赋值,默认初始值为x,缺省位宽为1

    数据流建模

    • 输入信号经过组合逻辑电路传到输出时类似于数据流动,而不会在其中存储,可以通过连续赋值语句进行建模
    • assign
    • 连续赋值语句使用中的注意事项
      1. 复制目标只能是线网类型wire
      2. 在连续赋值中,只要赋值语句右边表达式任何一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号(若没有定义延时量)
      3. 连续赋值语句不能出现在过程块中
      4. 多个连续赋值语句之间士兵性关系,因此与位置顺序无关
      5. 连续赋值语句中的延时具有硬件电路中惯性延时的特性,任何小于其延时的信号变化脉冲都将被滤除掉,不会出现在输出端口上

    行为级建模

    • 从一个层次很高的抽象角度来表示电路
    • 选取敏感事件作为过程触发条件的设计要求
      1. 采用过程依据对组合电路进行描述时,需要把全部的输入信号列入敏感信号列表
      2. 采用过程语句对时序电路进行描述时,需要把时间信号和部分输入信号列入敏感信号列表

    串行与并行

    • 串行语句块特点
      1. 串行语句块中的每条语句依据块中的排列次序逐条执行,块中每条语句给出的延迟时间都是相对于前一条语句执行结束的相对时间
      2. 串行语句块的其实执行时间就是串行语句块中第一条语句开始执行的时间,串行语句块的结束时间就是最后一条语句执行结束的时间
    • 并行语句块特点
      1. 块内语句是同时执行的,即程序流程控制一进入到该并行语句块,块内语句则同时开始执行
      2. 块内每条语句的延迟时间是相对于程序流程控制进入到块内的仿真时间的

    阻塞与非阻塞

    • 阻塞赋值语句特点
      1. 在串行语句块中,各条阻塞赋值语句将按照排列顺序依次执行,在并行语句块中的各条阻塞赋值语句则同时执行,没有先后之分
      2. 执行阻塞赋值语句的顺序是,先计算等号有段表达式的值,然后立即将计算的值赋给左边的变量,与仿真时间无关
    • 非阻塞赋值语句特点
      1. 在串行语句块中,各条非阻塞赋值语句的执行没有先后之分,排在前边的语句不会影响到后面语句的执行,各条语句并行执行
      2. 执行非阻塞赋值语句的顺序是,先计算右端表达式的值,然后等待延迟时间的结束,再将计算的值赋给左边的变量

    结构化建模

    1. 模块级建模:通过调用由用户设计生成的低级子模块来对硬件电路结构践行说明,这种情况下的模块由低级模块的实力组成
    2. 门级建模:通过内部的基本扪及元件对硬件电路的结构进行说明,这种情况下的模块由基本扪及元件的实例组成
    3. 开关级建模:通过调用内部的基本开关原件来对硬件电路的结构进行说明,这种情况下的模块由基本开关元件的实例组成

    设计思想与可综合特性

    • 基本过程:
      • 使用Verilog HDL对硬件电路进行描述型设计
      • 利用EDA综合工具将其综合成一个物理电路
      • 进行功能验证、定时验证和故障覆盖验证

    组合电路设计

    • 特点:
      • 电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关
      • 组合电路没有记忆功能,只有从输入到输出的通路,没有从输出到输入的回路

    时序电路设计

    • 不仅与当前时刻输入变量的取值有关,而且与电路的原状态(过去的输入情况有关)
    • 特点:
      • 时序逻辑电路包括组合逻辑电路和存储电路两部分,存储电路具有记忆功能,通常由触发器组成
      • 存储电路的状态反馈到组合逻辑电路输入端,与外部输入信号共同决定组合逻辑电路的输出

    ps: 本篇为基础知识概念的整理,之后会更新程序设计应用

  • 相关阅读:
    Elasticsearch 完整指南
    摩天大楼记录
    我的创作纪念日
    Windows下的RabbitMQ 安装
    qtablewidget 设置列宽行高遇到的问题
    P4630 [APIO2018] 铁人两项 (广义圆方树)
    QT状态机使用笔记1
    in memory computing 存内计算是学术圈自娱自乐还是真有价值?
    Spring Cloud 之 Feign 简介及简单DEMO的搭建
    【leetcode】【2022/8/18】1224. 最大相等频率
  • 原文地址:https://blog.csdn.net/weixin_44321600/article/details/126032576