verilog HDL 基本概念,端口,模块

1 HDL发展

1.1基础概念

IC(Integrated Circuit)集成电路:将逻辑门安装在单个芯片上。
SSI(Small Scale Integreted)小规模集成电路:逻辑门的数量很少
MSI(Medium Scale Integreted)中规模集成电路:逻辑门数量有上百个
LSI(Large Scale Integreted)大规模集成电路:数千个逻辑门
EDA(Electronic Design Automation):电子设计自动化,因为LSI的设计过程变得复杂,希望设计阶段自动完成而出现的概念。(早期都是在面包板上测试)
VLSI(Vert Large Scale Integrated)超大规模集成电路,不可能在面包板上验证,出现逻辑仿真工具验证(可以尽早排除设计结构中存在的问题),模块化搭建高层功能模块。
CAD(Computer-Aided-Design)计算机辅助设计:完成布局,布线,芯片版图绘制工作的工具
CAE(Computer-Aided-Engineering)计算机辅助工程:HDL仿真、逻辑综合、时序分析的工具
EDA包含CAD与CAE,所有设计工具。
HDL(Hardware Description Languages)硬件设计语言(硬件设计领域,设计人员希望使用标准语言进行硬件设计)
RTL寄存器传输级(Register Transfer Level):设计者说明数据如何在寄存器中移动,等,逻辑综合工具自动从RTL描述中提取出来
HDL也可以单独设计每个芯片,仿真验证系统功能

1.2典型设计流程

在这里插入图片描述
在这里插入图片描述

2 层次建模

2.1设计理念

数字电路设计中有底层向上和自顶向下设计方法。
自顶向下:首先定义顶层功能模块,分析顶层功能模块必要的子模块,在分解子模块,直到无法分解。
自底向上:根据现有功能模块不断组合

2.2模块

Verilog使用模块(module)概念代表一个基本功能模块。组合模块构建新的功能模块,实现代码重用,隐藏内部细节等。
模块语法(声明)

  1. 模块声明以module开始,以endmodule结尾,
  2. 每个模块必须具有一个模块名,唯一标识这个模块
  3. 端口列表描述模块的输入和输出端口
  4. 功能描述放置于module与endmodule中间
  5. "//"表示单行注释
  6. 模块内不允许嵌套模块
    在这里插入图片描述模块内部的四个抽象层次,
  7. 模块内部抽象层次的更改不会影响外部环境。
  8. 允许在一个模块内混用多个抽象层次。
  9. 抽象层次越高,灵活性艺术无关性提高,反之降低
    在这里插入图片描述

2.3 模块实例

模块声明是一个模板,通过模板创建实际对象。
从模板创建对象的过程称为实例化(instantiation),创建的对象称为实例(instance)。
展示了输入输出端口如何定义,模块如何调用。
在这里插入图片描述

2.5逻辑仿真的构成

如果队设计的正确性进行测试?
对设计模块施加激励,检测输出来验证功能的正确性。完成测试功能的块称为激励块(又叫测试台test bench)
激励块有两种模式,
1、激励块调用测试模块。
2、虚拟顶层模块调用激励块和测试模块。

2.5设计块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1、D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。
在这里插入图片描述

3基本概念

3.1词法约定

1、Verilog大小写敏感,关键词都为小写
2、空白符由\b为空格,\t为制表符,和换行符组成。空白符的唯一作用是分割标识符,编译期间忽略
3、多行注释以/开头/结束
4、单行注释为//
5、数字的表示方法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、字符串
在这里插入图片描述
7、标识符
在这里插入图片描述
8、转义字符
在这里插入图片描述

3.2 数据类型

3.2.1 值的种类

Verilog使用四值逻辑和八种信号强度来对实际的硬件电路建模
在这里插入图片描述
在这里插入图片描述
当不同强度的信号驱动同一个线网,则竞争结果值为高强度信号的值。
当相同强度的信号驱动同一个线网,则竞争结果为不确定值
如果两个强度为strong1和strong0的信号之间发生竞争,则结果为x

3.2.2 线网

线网表示硬件单元之间的连接。在这里插入图片描述
线网一般使用关键字wire进行声明,如果没有显示说明为向量,则默认线网的位宽为1,wire这个术语和net经常互换使用,线网的默认值为z,线网的值由其驱动源确定。
如果没有驱动源,则线网的值为z。
在这里插入图片描述
net代表一组关键词,包括wire,wand,wor,tri,triand,trior。

3.2.3寄存器

寄存器用来表示储存元件,它保持原有的数值,直到被改写。在verilog中register仅仅意味着一个保存数值的变量。寄存器不需要驱动源,也不需要时钟信号,任何时刻都可以通过赋值来改变。
在这里插入图片描述

3.2.4向量

在这里插入图片描述
在这里插入图片描述

3.2.5其他数据类型

整数声明方法integer声明,默认宽度为宿主机的位数,与具体实现有关,但最小应为32位、为有符号数。
在这里插入图片描述
实数,实常量和实数寄存器数据类型使用关键字real来声明,可以用十进制或科学记数法来标识。实数声明不能带有范围,其默认值为0。如果将一个实数赋给一个整数,那么这个整数将会被取整为最接近的整数。
在这里插入图片描述
时间寄存器,verilog使用一个特殊的时间寄存器数据类型来保存仿真时间,时间变量通过使用关键字time来定义,其宽度与具体实现有关,最小为64位。通过调用系统函数¥time可以得到当前仿真时间。在这里插入图片描述
以秒为单位。
3.2.6 数组
在Verilog中允许声明reg,integer,time,real,realtime及其向量类型的数组,对数组的维数没有限制,即可以声明任意维数的数组。线网数组也可用于连接实例的端口,数组中每个元素都可以作为一个标量或者向量。
在这里插入图片描述
数组和位宽的区别为,位宽声明在类型后,数组声明在变量名后。
在这里插入图片描述

3.2.8参数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.3系统任务和编译指令

3.3.1 系统任务
为某些常用操作提供了标准的系统任务
1、显示信息
¥display是用于显示变量,字符串或表达式的主要系统任务。会自动在末尾后插入换行符
2、
在这里插入图片描述
2、监视信息
¥monitor为用户提供对信号值变化进行动态监控的手段。
¥monitor(p1,p2,p3,…,pn)
参数p1,p2,p3…,pn可以是变量,信号量或双引号括起来的字符串。对参数列表的变量值或者信号值进行不间断监视,当其中任何一个发生变化是,显示所有参数的数组。
只需调用一次即可在所有仿真过程中生效。任何时刻只有一个监视列表有效,如果用户在源描述中调用了多个监视信息只有最后一次调用生效。前面调用被覆盖。
¥monitoron:允许监视,默认状态是允许监视
¥monitoroff:暂停监视,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
`define用于定义Verilog中的文本宏,使用预定义的文本宏替换宏名。
在这里插入图片描述

include可以在编译期间将一个Verilog源文件包含在另一个Verilog文件中,作用类似于c语言中的#include结构。通常将内含全局或公用定义的头文件包含在设计文件中。

模块和端口

在这里插入图片描述
中间部分可以随意组合可有可无

4.2端口

端口是模块与外界环境交互的接口,例如IC芯片的输入、输出引脚就是他的端口。对于外部环境来说,模块内部是不可见的。
端口是可选的,如果一个模块不需要任何交换信号,可以没有端口列表。
端口声明,端口列表中的端口必须在模块中进行声明,Verilog中的端口具有以下三种类型:在这里插入图片描述

4.2.3端口连接规则

输入端口必须为线网数据类型,输入端口可以连接到线网或reg数据类型的变量。
输出端口可以是线网或reg数据类型;从模块外部看输出必须连接到线网数据类型的变量。
输入/输出端口,从模块内部来讲,输入/输出必须为线网数据类型;从模块外部来看也必须连接到线网类型的变量。
位宽匹配,Verilog允许端口的内外两个部分具有不同的位宽。
未连接端口,Verilog允许模块实例的端口保存未连接的状态。
非法端口,例如使用reg变量连接输入端口。

4.2.4 端口与外部信号的连接

顺序端口连接:安装端口顺序连接
命名端口连接:安装端口名字连接
在这里插入图片描述
只要端口名字不变,即使端口顺序改变也无需调整。

4.3层次命名

如果使用Verilog进行层次化设计。每一个模块实例、信号或变量都使用一个唯一的标识符进行定义;层次名使用“.”分割的标识符组成,每个标识符代表一个层次,这样设计者就可以在设计中的任何地方通过指定完整的层次名对每个标识符进行访问。
在这里插入图片描述
在这里插入图片描述

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值