Skip to content

Verilog 概述及建模

Verilog
Contents

学习目标:

  • 硬件描述语言Verilog HDL的要素、语法、语句,仿真测试程序及可综合的设计方法

  • 掌握利用Verilog设计现代数字系统的基本方法和手段(基本语法,简单的可综合verilog模块(与逻辑电路的对应) ,简单的verilog测试模块)

  • 编写程序(rtl/tb),仿真验证功能

应用软件

  • VCS (Verilog Compiled Simulator)编译型模拟器

Verilog 概述

1. 什么是HDL

  • HDL(Hardware Description Language)

  • 具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言

  • 这种特殊结构能够:

    • 功能:描述电路的功能、连接、时序
    • 特点:表达具有并行性
HDL主要特征
  • HDL语言既包含一些高级程序设计语言的结构形式,同时也兼顾描述硬件线路连接的具体构件

  • HDL语言是并发的,即具有在同一时刻执行多任务的能力。一般来讲编程语言是非并行的,但在实际硬件中许多操作都是在同一时刻发生的,所以HDL语言具有并发的特征。

  • HDL语言有时序的概念。一般来讲编程语言是没有时序概念的,但在硬件电路中从输入到输出总是有延迟存在的,为描述这些特征,HDL语言需要建立时序的概念。因此使用HDL语言除了可以描述硬件电路的功能外还可以描述其时序要求。

为什么要使用HDL
  • 传统的用原理图设计电路的方法已无法适应电路的规模

  • 使用一种描述语言,对数字电路和数字逻辑系统能够进行形式化的描述,然后由EDA综合软件将其转换成电路图。

HDL VS VHDL

  • HDL主要又两种:Verilog和VHDL

  • Verilog HDL (Verilog Hardware Description Language)

  • VHDL (Very High Speed Integerated Circuit (VHSIC)Hardware Description Language)

    • Verilog起源于C语言,因此非常类似于C语言,容易掌握
    • VHDL起源于ADA语言,格式严谨,不易学习(军工常使用)
Verilog HDL vs C语言

​ 虽然Verilog的某些语法与C语言接近,但存在本质上的区别:

  • 并行执行、时序执行:Verilog是一种硬件语言,最终是为了产生实际的硬件电路或对硬件电路进行仿真
  • 顺序执行:C语言是一种软件语言,是控制硬件来实现某些功能

Verilog用途

​ Verilog的主要应用包括:

  • ASIC(专用集成电路)和FPGA工程师编写可综合的RTL代码
  • **高抽象级系统仿真进行系统结构开发**
  • 测试工程师用于编写各种层次的测试程序
  • 用于ASIC和FPGA单元或更高层次的模块的模型开发

RTL

RTL (Register Transfer Level,寄存器传输级)Verilog的抽象级,属于信号级的传递,对单一的信号进行操作

概念

  • 寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。

  • 一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。

  • 例:存储4位二进制数的寄存器里有四个触发器,对应的状态有24 =16种状态。

    特点

    • 最终要特性:RTL级描述是可综合的描述层次

      • 综合:RTL——EDA工具——网表——实际电路
    • RTL不关注寄存器和组合逻辑的细节(如逻辑门的数量和连接结构等)

    • 通过描述寄存器到寄存器之间的逻辑功能描述电路的HDL层次。RTL级是比门级更高的抽象层次,使用RTL级语言描述硬件电路一般比门级描述简单高效得多。

    寄存器的功能

    寄存器最起码具备以下4种功能。

    ①清除数码:将寄存器里的原有数码清除。——复位

    ②接收数码:在接收脉冲作用下,将外输入数码存入寄存器中。——输入信号

    ③存储数码:在没有新的写入脉冲来之前,寄存器能保存原有数码不变。

    ④输出数码:在输出脉冲作用下,才通过电路输出数码。


数字系统Verilog建模

数字系统抽象层次

系统级是数字系统设计的最高层次。一个系统可以包括若干芯片(MCU:Microcontroller Unit)。如果是soc (System on Chip)设计,则在一个系统芯片上,也会有若干类似于处理器、存储器等这样的部件。

image1

都属混合描述,无需精确到单一的语句上

image2

设计工程师在不同的设计阶段采用不同的抽象级

  • 首先在行为级描述各功能块,以降低描述难度,提高仿真速度。
  • 在综合前将各功能模块进行RTL级描述。
  • 用于综合的库中的大多数单元采用结构级描述。在本课程中的结构级描述部分将对结构级(门级)描述进行更详细的说明。

以下内容理解

  • 一般代码就是叫做RTL代码,因为Verilog专注于RTL代码,专注于寄存器之间的连接,多个模块(寄存器构成的模块)之间的连接构成硬件单元
  • 硬件单元之间的连接又属于系统级
  • Verilog还有一定的晶体管级描述能力及算法级描述能力

自顶向下(Top-Down)的结构化设计方法

一个系统由总设计师先进行系统描述,将系统划分为若干模块,编写模块模型(一般为行为级),仿真验证后,再把这些模块分配给下一层的设计师,由他们完成模块的具体设计,而总设计师负责各模块的接口定义

image3

注:验证是穿插在设计的各个环节当中的,贯穿到整个项目的过程

  • verilog使用模块 (module,建模所产生) 的概念来代表一个基本的功能块。

  • 模块通过接口 (输入和输出) 被高层的模块调用,但隐藏了内部的实现细节。这样就使得设计者可以方便地对某个模块进行修改,而不影响设计的其他部分。

  • 在数字电路设计中,数字电路可简单归纳为两种要素:线和器件。


Verilog建模

  • Verilog建模——建模器件/模块

verilog中,模块声明由关键字module开始,关键字endmodule则必须出现在模块定义的结尾。每个模块必须具有一个模块名,由它唯一地标识这个模块。模块的端口列表则描述这个模块的输入和输出端口。

module 模块名 (模块端口列表)
   
    模块内容 ...
   
endmodule
  • 模块名:campare

  • 输入/输出:模块端口

image10

概念补充

  • 不可综合:不可由代码转化为实际电路

module基本组成单元

  • 线:线是器件管脚之间的物理连线; Verilog中用变量wire

  • 器件:等同于模块的概念。Verilog中用module

  • Verilog HDL的建模实际上就是:如何使用HDL语言对数字电路的两种基本要素的特性及相互之间的关系进行描述的过程

Verilog语法的基本概念

image4

Verilog HDL语法结构上的主要特点:

  • 形式化地表示电路的行为和结构;
  • 借用C语言的结构和语句;
  • 可在多个层次上对所设计的系统加以描述,语言对设计规模不加任何限制;
  • 具有混合建模能力:一个设计中的各子模块可用不同级别的抽象模型来描述;
  • 基本逻辑门、开关级结构模型均内置于语言中,可直接调用;
  • 易创建用户定义原语(UDP,UserDesignedPrimitive)

语法结构特点总结:

image5

标识符

image6

  • 标识符只可由数字、字母、下划线、$组成
  • $符不可作为标识符开头
  • 点不可出现在标识符中

参考

Discussion

Loading comments…

Checking sign-in…