[蔡觉平老师主讲] Verilog HDL数字集成电路设计原理与应用

一、基本概念

1.1 硬件描述语言

硬件描述语言,Hardware Description Language (HDL)。利用HDL,可以根据电路结构的特点,采用层次化的设计结构,将抽象的逻辑功能用电路的方式进行实现。之后通过EDA(电子设计自动化)工具,可以将HDL程序综合成网表,通过自动布线工具把网表转换为具体电路布线结构,用于专用集成电路(Application Specific Integrated Circuit,ASIC)和现场可编程门阵列(Field Programmable Gate Array,FPGA)的实现。

Verilog HDL和VHDL是两种常用的硬件描述语言。

1.2 可重用性与IP核

模块的可重用性对于硬件电路的开发效率的提高至关重要,因此提出了集成电路的软核、硬核和固核的概念。

软核(Soft Core) 一般是指经过功能验证、5000门以上的可综合Verilog HDL或VHDL模型,软核与设计方法和电路采用的工艺无关。

固核(Firm Core)通常是指在FPGA器件上,经过综合验证、大于5000门的电路网表文件。

硬核(Hard Core)通常是指在ASIC器件上,经过验证,正确的、大于5000门的电路结构版图掩模。

三者的联系与区别:软核、固核、硬核是目前数字集成电路功能单元模块在不同层级使用的三种形式,可以简单理解为 软核 > 固核 > 硬核。软核采用可读性较高的可综合HDL实现,其可维护性和可重用性程度高,使用更加灵活和便捷。固核和硬核是针对不同芯片平台的功能能单元,性能稳定,不宜修改。

IP核:IP核是具有知识产权核的集成电路芯核的总称,是经过反复验证的、具有特定功能的红模块,且该模块与芯片制造工艺无关,可以移植到不同的半导体工艺中。

如下图所示,在SoC芯片的设计生产过程中,芯片的生产厂家只需根据设计需要购入相应功能的IP核,再将这些IP核按照设计要求进行组合,即可完成所需特定功能的设计。

在这里插入图片描述

1.3 组合逻辑和时序逻辑

1、组合逻辑:

组合逻辑的特点是任意时刻的输出仅取决于该时刻的输入,与电路原本的状态无关,逻辑中不牵涉跳变沿信号的处理,组合逻辑的verilog描述方式有两种:

(1)always@(电平敏感信号列表)

always模块的敏感信号列表为所有输入信号;

组合逻辑中的赋值建议使用阻塞赋值”=“;

always 模块中的信号必须定义为reg 型,但最终的综合得到的组合逻辑电路中并没有寄存器。

(2)assign描述的连续赋值语句

2、时序逻辑:

时序逻辑的特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。时序逻辑电路里面有存储元件,不管其输入如何变化,仅当时钟发生跳变时,输出才可能会变化。

(1)always@(边沿敏感型信号列表)

时序逻辑的敏感信号列表为时钟信号(以及复位信号)和部分输入信号;

时序逻辑中的赋值建议使用非阻塞赋值“<=”。

二、Verilog HDL基础知识

此处所有的内容都可见本人另一篇博客(更加明了),[Verilog学习]一、Verilog语言快速入门

Verilog HDL语法来源于C语言基本语法,空白符、注释符、标识符、转移标识符、关键字等就不再赘述。

2.1 数据类型

在Verilog中数据类型一共有19种,分别是wire,tri,tri1,wand,triand,trireg,trior,wor,reg,large,small,scalared,medium,vectored,integer,time,real,parameter型。可以分为两大类:物理数据类型(连线型和寄存器型)和抽象数据类型(主要有整型,时间型,实型和参数型)。

  1. 物理数据类型中最主要用到的就是wire(连线型)和reg(寄存器型),它们的区别如下:
  • wire连线表示逻辑单元的物理连接,可以对应为电路中的物理信号连接,这种变量类型不能保持电荷。连线型变量必须要有驱动源,一种是连接到一个门或者模块的输出端;另一种使用assign连续赋值语句对其赋值。若没有驱动源,则保持高阻态z

  • reg寄存器型变量是数据存储单元的抽象类型,其对应的硬件电路元件具有状态保持作用,能够存储数据,如触发器、锁存器等。

    reg型数据和wire型的区别在于,reg型数据能够保持最后一次的赋值,而wire型数据需要有持续的驱动。

  1. 抽象数据类型则是对纯数字的抽象描述,不能够与实际的硬件电路相映射,即不可综合。

2.2 运算符

详细介绍见本人的另外一篇博客中1.2.2小节,此处不再赘述

[Verilog学习]一、Verilog语言快速入门

2.3 模块

模块(module)是Verilog中的基本单元,它代表一个基本的功能块,用于描述某个设计的功能或结构以及与其他模块通信的外部端口。模块正是Verilog中层次化设计的体现。

详细介绍见本人另外一篇博客,此处不再赘述

[Verilog学习]一、Verilog语言快速入门

三、Verilog HDL程序设计语句和描述方式

3.1 数据流建模

数据流建模只有一种描述方式,即通过连续赋值语句进行逻辑描述,其最基本的语句是由assign引导的。数据流建模可以描述所有的组合逻辑电路

语法格式:

<net_declaration><range><name>;
assign #<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值