Verilog HDL中定义的26个有关门级的关键字中常用的有哪些?

描述

1、结构描述形式

从电路结构的角度来描述电路模块,称为结构描述形式。

Verilog HDL中定义了26个有关门级的关键字,比较常用的有8个:

and nand nor or xor xnor buf not。

其调用格式为:

门类型 《实例名》(输出,输入1,输入2,。。。。,输入N)

eg. nand na01(na_out, a, b, c);

表示一个名字为na01的与非门,输出为na_out,输入为a,b,c。

2、数据流描述形式

对线型变量进行操作,就是数据流描述形式。数据流描述一般采用assign连续赋值语句来实现,主要用于实现组合功能。连续赋值语句右边所有的变量受持续监控,只要这些变量有一个发生变化,整个表达式就被重新赋值给左端。

其格式为:

assign L_s = R_s;

3、行为描述形式

从功能和行为的角度来描述一个实际电路,称为行为级描述形式。行为描述主要包括过程结构、语句块、时序控制、流控制四个方面,主要用于时序逻辑功能的实现。

1、过程结构

过程结构采用下面四种过程模块来实现:

initial模块 always模块 任务(task)模块 函数(function)模块

(1)initial模块

在进行仿真时,一个initial模块从模拟0时刻开始执行,且在仿真过程中只执行一次,在执行完一次后,该initial就被挂起,不再执行。如果仿真中有两个initial模块,则同时从0时刻开始执行

initial模块是面向仿真的,是不可综合的,通常被用来描述测试模块的初始化、监视、波形生成等功能。

其格式为:

initial

begin/fork

块内变量说明

时序控制1 行为语句1;

。。。。

时序控制n 行为语句n;

end/join

其中,begin/end块定义语句是串行执行的,而fork/join块语句中的语句定义是并行执行的。

(2)always模块

always模块是一直重复执行且可综合的,多个always模块是同时并行执行的。其格式为:

always@(敏感时间列表)

begin/fork

块内变量说明

时序控制1 行为语句1;

。。。。

时序控制n 行为语句n;

end/join

2、语句块

语句块就是在initial或always模块中位于begin.。.end/fork.。.join块定义语句之间的一组行为语句。

(1)begin.。.end

串行块,块内的语句逐次逐条顺序执行。

(2)fork.。.join

并行块,块内的语句都是各自独立地同时开始执行。

3、时序控制

Verilog HDL提供两种类型的显示时序控制:延时控制和事件控制。

(1)延时控制

其格式如下:

# 延时数 表达式;

延时控制只能在仿真中使用,是不可综合的。在综合时,所有的延时控制都会被忽略。

(2)事件控制

分为两种:边沿触发事件和电平触发事件控制。

边沿触发:上升沿posedge,下降沿negedge。

4、流控制

流控制语句包括3类:跳转、分支、循环。

(1)if语句

else分支可缺省,但会生成本不期望的锁存器,所以不要省去。

(2)case语句

其格式如下:

case(变量)

情况1:语句1 ;

。。。。。

情况n:语句n;

default: 语句n+1;

endcase

default语句缺省也会生成锁存器,所以不要省去。

if语句是串行执行的,case语句是并行执行的,选用if语句要占用额外的硬件资源。

(3)循环语句

for循环。

while循环。

forever循环:forever语句必须写在initial模块中,用于产生周期性波形。

repeat循环:执行指定的循环数,如果循环计数表达式的值不确定(x或z),那么循环次数按0处理,其格式:

repeat(表达式)

begin

。。。。。

end

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分