Verilog中的任何过程都可以属于以下四种结构的说明语句;

1) initial;  2) always;  3) task;   4) function;

1) initial说明语句;

一个程序中的 initial 和 always 的次数是不受限制的,他们都是在仿真的一开始同时开始运行的。initial 只执行一次,而 always语句则是不断地重复活动,直到仿真活动结束、但是always 后面的过程快是否运行,则要看他的触发条件是否满足,满足则运行一次,再满足再运行,直至仿真结束。

格式:

initial

begin

语句1;

语句2;

...

语句n;

end

一个模块中可以有多个initial块,他们都是并行运行的。 initial 块常用于测试文件和虚拟模块的编写,用来产生仿真测试信号和设置信号记录等仿真环境。

2)always说明语句

其声明格式如下:

always  <时序控制>  <语句>

如果always没有时序控制,则会产生仿真器的死锁。 如:always  areg=~areg;这将产生0延迟的无限循环跳变过程,这时发生仿真死锁。

always 的时序控制可以是边沿触发也可以是电平触发,可以单个信号亦可以十多个信号,中间用关键词or链接。

A)  always @(posedge clock or posedge reset)

begin

....

end

B)  always @(posedge clock or posedge reset)

begin

....

end

上述中,A是由两个边沿触发的always只要其中一个沿出现,就立即执行一次过程块。B是有a b c 三个信号电平触发的,只要a b c 中任何一个发生变化,从高到低或从低到高都会执行过程块。

边沿触发的always 块常常描述时序行为,如有限状态机,通常对应于寄存器组和门级组合逻辑的结构。而电平触发的always块常常用来描述组合逻辑的行为。

在always语句中,由关键词or 链接的多个事件名或者信号名组成的列表称为敏感列表。用关键词or或者','表示这种关系。如果输入的逻辑变量较多,那么编写敏感列表会很繁琐而且容易出错。针对这种情况,Verilog中可以用@* 和 @(*),他们表示对后面语句块中所有的输入变量的变化是敏感的。

电平敏感的时序控制:

Verilog用关键字wait 来表示等待电平敏感的条件为真:

如: always

wait  (count_enabal)  #20 count = count+1;

这个例子中,仿真器连续见识count_enable的值,其值为0,则不执行后面语句。如果其值为1,则20个单位后执行这个语句,如果count_enable始终为1,那么count每20个单位时间+1。

 在always中,被赋值的只能是寄存器类型的变量,如reg,integer, real, time, realtime.等

Verilog学习笔记基本语法篇(八)········ 结构说明语句的更多相关文章

  1. Verilog学习笔记基本语法篇(十二)········ 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  2. Verilog学习笔记基本语法篇(十三)...............Gate门

    Verilog中已有一些建立好的逻辑门和开关的模型.在所涉及的模块中,可通过实例引用这些门与开关模型,从而对模块进行结构化的描述. 逻辑门: and (output,input,...) nand ( ...

  3. Verilog学习笔记基本语法篇(九)········ 任务和函数

    task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...

  4. Verilog学习笔记基本语法篇(七)········ 生成块

    生成块可以动态的生成Verilog代码.可以用于对矢量中的多个位进行重复操作.多个模块的实例引用的重复操作.根据参数确定程序中是否包含某段代码.生成语句可以控制变量的声明.任务和函数的调用.还能对实例 ...

  5. Verilog学习笔记基本语法篇(一)·········数据类型

    Verilog中共有19种数据类型. 基本的四种类型: reg型.wire型.integer型.parameter型. 其他类型:large型.medium型.small型.scalared型.tim ...

  6. Verilog学习笔记基本语法篇(十一)········ 常用系统函数

    1)系统任务:$monitor   格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...

  7. Verilog学习笔记基本语法篇(十)········ 常用系统函数

    $display 和 $write 任务 格式: $display (p1,p2,...,pn); $write (p1,p2,..,pn); 这两个函数和系统的任务作用是用来输出信息,即将参数p2到 ...

  8. Verilog学习笔记基本语法篇(六)········ 循环语句

    在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句:  连续执行n次的语句. 3)while语句:    执行语 ...

  9. Verilog学习笔记基本语法篇(四)·········块语句

    块语句是指将两条或者两条以上的语句组合在一起,使其在格式上更像一条语句.块语句分为两种: 1)用begin_end语句,通常用来标识顺序执行的语句,用它标识的块称作顺序块: 2)用fork_join语 ...

随机推荐

  1. ASP.NET经典的、封装好的ADO.NET类包

    using System; using System.Collections; using System.Collections.Specialized; using System.Runtime.R ...

  2. window server 2012R2服务器部署遇到的问题

    1. 出现问题原因:服务器的Framework4.5 未安装, 解决办法:从网上下载之后,安装,然后重启服务器即可 2. 出现问题原因:内存不足或者虚拟内存不足 解决办法:设置虚拟内存来解决,步骤如下 ...

  3. GetClassName 取得的类名有

    今天上午稍微跟踪了一下自己的项目里面的各个空间,得知GetClassName可以取到以下类名:Static\Edit\Button\ComboBox\msctls_trackbar32\SysTabC ...

  4. zookeeper系列 (第一章 :ubuntu 下安装zookeeper)

    1.zookeeper是分布式一致性管理服务.解决了分布式中死锁,不一致,原子性操作等问题. 2.环境:系统ubuntu,zookeeper 下载地址:http://archive.apache.or ...

  5. uvm_config_db——半个全局变量

    UVM中的配置机制uvm_config_db,uvm_config_db机制用于在UVM平台间传递参数.它们通常是成对出现的,set 寄信,而get函数是收信.config 机制大大提高了UVM的验证 ...

  6. 修改完linux bashrc文件之后,如何不重启系统使其生效

    修改完后,输入如下命令即可 ##@##:~/    source ~/.bashrc 之后bashrc文件就可以使用! 注: 使用ssh登陆shell的时候,系统不会自动调用.bashrc文件, 只是 ...

  7. sql创建作业--自动执行存储过程

    创建自动执行存储过程: 1.创建参数 2.删除已有同名的作业 3. 创建作业 4.创建作业步骤 5.连接服务器 6.创建作业调度 7.启动作业 ALTER PROCEDURE dbo.sx_pro_A ...

  8. java动态代理使用详解

    我们都知道AOP的原理就是java的动态代理机制,下面我就对java的动态代理机制进行学习与总结 java动态代理的实现有两个重要的类: Proxy:类 作用就是用来动态创建一个代理对象的类 Invo ...

  9. Servlet The Filter

    The Filter Filter不会产生Request或者是Response, 但是会在两者访问资源时, 对其作出改变.其可以作用于静态资源和动态资源. LifeCycle Filter会和Serv ...

  10. leetcode_1052. Grumpy Bookstore Owner

    1052. Grumpy Bookstore Owner https://leetcode.com/problems/grumpy-bookstore-owner/ 题意:每个时刻i会有custome ...