0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA之家 来源:YGOPRO de Space 作者:YGOPRO 2021-07-02 16:29 次阅读

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

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

    关注

    17

    文章

    125

    浏览量

    50193

原文标题:Verilog HDL语言(2) : Verilog HDL语言的描述语句

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么好用的verilog HDL编辑工具可用?

    什么好用的verilog HDL编辑工具可用?最好能集成实时的verilog HDL语法检测、自定义
    发表于 04-28 11:00

    关键字搜索文件夹某个TXT文件

    文件夹随时创造TXT文件,如何及时选出刚创造的文件?或关键字搜索出需要的TXT文件?
    发表于 02-06 15:22

    在NVM和本地\"内存定义数组(静态 /global /local)的\"关键字是什么?

    在 NVM 和本地\"内存定义数组(静态 /global /local)的\"关键字是什么? 还有与 32 位对齐的关键字怎么样。
    发表于 01-25 07:52

    IAR能否在整个工程搜索关键字

    像mdk可以在整个工程搜索关键字 IAR应该也有类似的功能吧,但是我貌似没有找到
    发表于 11-08 07:21

    指向code区数组的指针需不需要加code关键字的声明?

    指向code区数组的指针需不需要加code 关键字的声明?
    发表于 11-02 06:16

    在嵌入式定义变量时volatile关键字的作用是什么?

    在嵌入式定义变量时volatile关键字的作用?
    发表于 10-24 07:50

    程序变量加volatile关键字是做什么用途的?

    为什么变量定义要加上这个关键字
    发表于 10-13 07:15

    列举一些C语言中常用的宏定义

    写好C语言,使用宏定义可以防止出错,提高可移植性、可读性等。下文列举一些成熟软件中常用的宏定义
    发表于 10-07 10:54 232次阅读
    列举一些C语言<b class='flag-5'>中常用</b>的宏<b class='flag-5'>定义</b>

    二十进制编码器及Verilog HDL描述 Verilog HDL程序的基本结构及特点

    节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。
    的头像 发表于 08-28 09:54 1414次阅读
    二十进制编码器及<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>描述 <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>程序的基本结构及特点

    C++中常用关键字详解(2)

    在C++中,volatile是一个关键字,用于修饰变量,告诉编译器该变量的值可能在程序流程之外被意外修改,因此编译器不应该对该变量进行优化(如缓存变量值或重排指令顺序)。
    发表于 08-08 16:15 191次阅读

    C++中常用关键字详解(1)

    以然。因此,在平时和小伙伴们聊天时,在谈到学习技术方面的问题,我会告诉他们注重基本功。所以,最近文章会总结一些日常编程工作中常用的重要基本知识点,根据平时工作中常用的也是重要的知识点逐步展开。
    发表于 08-08 16:15 144次阅读

    LL库中常关键字__STATIC_INLINE

    LL库中常关键字__STATIC_INLINE,其定义见cmsis_gcc.h
    的头像 发表于 07-24 11:30 845次阅读
    LL库<b class='flag-5'>中常</b>见<b class='flag-5'>关键字</b>__STATIC_INLINE

    Verilog HDL中使用分频器的8位计数器的设计

    电子发烧友网站提供《在Verilog HDL中使用分频器的8位计数器的设计.zip》资料免费下载
    发表于 06-15 10:14 0次下载
    在<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>中使用分频器的8位计数器的设计

    Vivado HDL编写示例

    Vivado 软件提供了HDL编写中常用的示例,旨在帮助初学者更好地理解和掌握HDL编程,这里分享一下verilog代码示例。
    的头像 发表于 05-16 16:58 687次阅读

    AT组件怎么解析无前缀关键字的数据?

    一开始想利用解析函数,at_resp_get_line,at_resp_parse_line_args等等去读取,单都需要关键字前缀匹配才行,且一次只能读一行。而我的数据是在下一行,且无前缀,所以我不知道要怎么读取这个data出来。 望各位大佬帮忙指点!感谢! 图如下:
    发表于 05-12 16:44