网站首页 > 基础教程 正文
1、什么是Verilog
Verilog 是 Veriliog HDL 的简称,Verilog HDL 是一种硬件描述语言(HDL: Hardware Description Language),硬件描述语言是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。
VHDL,全名Very High Speed Integrated Circuit Hardware Description Languagr,即VHSIC,译为超高速集成电路的硬件描述语言。
2、Verilog 的四值逻辑系统
逻辑0:表示低电平,对应电路的GND;
逻辑1:表示高电平,对应电路的VCC;
逻辑X:表示未知,有可能是高电平,也有可能是低电平;
逻辑Z:表示高阻态,外部没有激励信号,是一个悬空状态。
3、Verilog 的数据类型
1)寄存器数据类型:reg、integer、real
所谓寄存器数据类型,就是表示一个抽象的数据存储单元,它只能在always语句和initial语句等过程语句中被赋值,它的缺省值为X。在实际的数字电路中,如果该过程语句描述的是时序逻辑,则该寄存器变量对应为寄存器;如果该过程语句描述的是组合逻辑,则该寄存器变量对应为硬件连线;如果该过程语句描述的是不完全组合逻辑,那么该寄存器变量也可以对应为锁存器。由此可见,寄存器类型的变量不一定会综合为寄存器。
2)线网数据类型:tri、wand、wire
所谓线网数据类型,就是表示Veriliog 结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值与门的输出。如果没有驱动元件连接到线网,线网的缺省值为Z。
3)参数数据类型:parameter
参数其实就是一个常量,通常出现在module内部,常被用于定义状态机的状态、数据位宽和延迟大小。
4、Verilog 的基本运算符
1)算术运算符:+、-、*、/、%
2)关系运算符:>、<、>=、<=、==、!=(返回结果为真或者假)
3)逻辑运算符:!、&&、||(返回结果为真或者假)
4)条件运算符:?:(例如,a?b:c; 如果a为真,选择b,否则选择c)
5)位运算符
~(~a,将a的每个位进行取反)
&(a&b,将a的每个位与b相应的位进行相与)
|(a|b,将a的每个位与b相应的位进行相或)
^(a^b,将a的每个位与b相应的位进行异或)
~^(a~^b,将a的每个位与b相应的位进行异或非)
^~(a^~b,将a的每个位与b相应的位进行异或非)
6)移位运算符:<<、>>(用0来填补移出的空位)
7)拼接运算符
{},{a, b},将a和b连接起来
{{}},{a{b}},将b重复a次
5、Verilog 硬件描述语句分为可综合和不可综合语言。
所谓可综合,就是编码的Verilog 代码能够被综合器转化为相应的电路结构。因此,我们常用可综合语句来描述数字硬件电路。
所谓不可综合,就是编写的Verilog 代码无法综合生成实际的电路。因此,不可综合语句一般在描述数字硬件电路时是用不到的,不过我们可以用它来仿真,验证我们描述的数字硬件电路。
6、Verilog 的关键字
module、endmodule
input、output、inout,用于端口定义
wire和reg用来声明数据类型,parameter用来声明参数类型
always是过程赋值语句,posedge、negedge、or
assign是连续赋值语句
if、else
begin、end,相当于C语言中的大括号
case、endcase、default
7、Verilog 的抽象级别
所谓抽象级别,实际上是指同一个物理电路,可以在不同的层次上用Verilog 语言来描述它。Verilog 硬件描述语言支持五种级别:系统级、算法级、RTL级、门级、开关级。其中,系统级和算法级属于行为级描述方式,RTL级又称为数据流描述方式,门级和开关级属于结构化描述方式。
1)结构化描述方式
结构化描述方式,是最原始的描述方式,也是抽象级别最低的描述方式,但它却是最接近与实际的硬件结构的描述方式。
2)数据流描述方式
数据流描述方式,要比结构化描述方式的抽象级别高一些,因为它不再需要清晰地刻画出具体的数字电路架构,而是可以比较直观地表达底层逻辑的行为。数据流描述方式又可称为RTL级描述方式,即寄存器传输级描述。
3)行为级描述方式
行为级描述方式的抽象级别最高,概括力也最强,因此规模稍大些的设计,往往都是以行为级描述方式为主。行为级描述方式的主要载体就是串行语句,同时辅以并行语句用于描述各个算法之间的连接关系。
猜你喜欢
- 2024-10-31 硬件描述语言 硬件描述语言verilog
- 2024-10-31 verilog快速入门之例五 verilog从入门到精通
- 2024-10-31 verilog实例(五) verilog技巧
- 2024-10-31 大规模数模混合电路建模验证分析:理论,方法,工具
- 2024-10-31 国内芯片人才培养问题凸显,IC修真院到底在教什么?
- 2024-10-31 终于讲清楚了,看完这篇你也可以设计CPU了
- 2024-10-31 verilog实例(四) verilog程序实例
- 2024-10-31 你真的理解Verilog 中的module吗?
- 2024-10-31 「课程上新5.9折」Verilog基础与典型数字电路的设计
- 2024-10-31 基于FPGA的有限状态机设计 fpga状态图
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)