博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
verilog中的initial语句
阅读量:2441 次
发布时间:2019-05-10

本文共 871 字,大约阅读时间需要 2 分钟。

首先说说结构化过程语句,在verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句。其他所有的行为语句只能出现在这两种语句里

 

与C语言不通,verilog在本质上是并发而非顺序的。verilog中的各个执行流程(进程)并发执行,而不是顺序执行的。每个initial语句和always语句代表一个独立的执行过程,每个执行过程从仿真时间0开始执行并且两种语句不能嵌套使用。下面举例解释之:

initial语句

所有的initial语句内的语句构成了一个initial块。initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次。如果一个模块中包括了若干个initial块,则这些initial块从仿真0时刻开始并发执行,且每个块的执行是各自独立的。如果在块内包含了多条行为语句,那么需要将这些语句组成一组,一般式使用关键字begin和end将他们组合在一个块语句;如果块内只有一条语句,则不必使用begin和end.下面给出了initial语句的例子:

module stimulusreg x,y, a,b, minitial	m = 1'b0;	initialbegin	#5 a = 1'b1;	#25 b = 1'b0;endinitialbegin	#10 x = 1'b0;	#25 y = 1'b1;endinitial	#50 $finish;	endmodule

 

在上面例子中,三条initial语句在仿真0时刻开始并行执行。如果在某一条语句前面存在延迟#<delay>,那么这条initial语句的仿真将会停顿下来,在经过指定的延迟时间之后再继续执行。因此上面的initial语句执行顺序为:

 

时间				所执行的语句0					m = 1'b0;5					a = 1'b1;10					x = 1'b0;30					b = 1'b0;35					y = 1'b1;50					$finish;

 

摘自《VerilogHDL数字设计与综合(第二版)》夏宇闻译

 

转载地址:http://ohnqb.baihongyu.com/

你可能感兴趣的文章
云中的本周
查看>>
技术债务管理_技术债务
查看>>
暴风雨来了
查看>>
亚马逊ec2 实例删除_自动化Amazon EC2实例备份和恢复,第一部分
查看>>
杰德向我们展示了他的书。
查看>>
了解递归
查看>>
疏忽盲目-错过明显
查看>>
使用PHP和Apple Passbook的数字票
查看>>
mongodb 索引_MongoDB索引编制,第1部分
查看>>
ctype函数_Ctype函数简介
查看>>
使用PHP从Access数据库中提取对象,第2部分
查看>>
openbiz_Openbiz Cubi:健壮PHP应用程序框架,第1部分
查看>>
使用PHP从Access数据库中提取对象,第1部分
查看>>
使用云waf的案例_9种流行的云使用案例
查看>>
类集合转换类集合_PHP中的集合类
查看>>
使用SimplePie消费Feed
查看>>
运算符二进制_基本转换和二进制运算符
查看>>
对人工智能常见的误解有哪些_关于云计算的7种常见误解
查看>>
packagist 源_在Packagist for Composer上列出软件包
查看>>
创建一个新的Drupal节点类型
查看>>