Verilog基础语法(6)之initial块

这篇具有很好参考价值的文章主要介绍了Verilog基础语法(6)之initial块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

语法格式

initial块可以理解为一个初始化块,在initial的起始位置的语句在0时刻即开始执行,之后如果遇到延时,则延时之后执行接下来的语句。其语法如下:

initial
	[single statement]

initial begin
	[multiple statements]
end

如果initial中有多条语句,则置于begin …end之间。

initial块的作用

初始块是不可综合的,因此不能将其转化为带有数字元素的硬件原理图。因此初始块除了在仿真中使用外,并没有太大的作用。这些块主要用于初始化变量和用特定的值驱动设计端口。

  • 注意:在芯片逻辑设计中,initial块确实只能用于行为仿真,但是在FPGA设计中,简单的使用initial进行变量的初始化是可以综合的。
    例如:
reg a, b, c;

initial begin
a = 0;
b = 0;
c = 0;
end

但我们更多地在变量定义时刻就进行了初始化,这是推荐的用法。
例如:

reg a = 0;

或者使用复位信号进行初始化,但这会增加综合布线的负担,可以有意识的减少,除非不得不。
例如:

reg a;

always@(posedge i_clk) begin
	if(i_rst) begin
		a <= 0;
	end

end

initial块的开始和结束

在仿真开始时,在时间0单位开始一个初始块。在整个仿真的过程中,这个代码块只执行一次。一旦initial块中的所有语句被执行,initial块的执行就结束了。

如果initial块中就一条语句,那么开始也是结束,语句执行完就结束这个initial块,如:
verilog initial用法,# Verilog基础语法,fpga开发
给信号b分配了一些值,但是这只发生在执行前一条语句的10个时间单位之后。这意味着a首先被分配给给定的值,然后在10个时间单位之后,b被分配给0。
verilog initial用法,# Verilog基础语法,fpga开发

initial块的数量

可以有多个(任意多)initial块。多个initial块是同时执行的,都是从时刻0开始执行。

下图所示的代码有三个初始块,所有的初始块都在同一时间启动并并行运行。然而,根据每个初始块中的语句和延迟,完成该块所需的时间可能会有所不同。
verilog initial用法,# Verilog基础语法,fpga开发
$finish是一个Verilog系统任务,它告诉仿真器终止当前的仿真。

如果最后一个块有30个时间单位的延迟,如下图所示,仿真将在30个时间单位结束,从而杀死了当时处于活动状态的所有其他initial块。文章来源地址https://www.toymoban.com/news/detail-764140.html

initial begin
	#30 $finish;
end

到了这里,关于Verilog基础语法(6)之initial块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • verilog语法中+:和-:用法

    verilog语法中+:和-:主要用来进行 位选择 。       位选择 从向量net、向量 reg、整数变量或时间变量中提取特定位。可以使用表达式寻址该位。如果位选择超出地址边界或位选择为 x 或 z,则引用返回的值应为 x。声明为实时或实时的变量的位选择或部分选择应被视为非法。

    2024年02月16日
    浏览(26)
  • 【FPGA学习记录3-1】Verilog语法之Verilog的数据类型

    写在前面 本科时学过FPGA的相关课程,因此对于Verilog相关语法的学习重在回顾。 1.Verilog的数据类型 Verilog 最常用的 2 种数据类型就是 线(wire)与寄存器(reg) ,其余类型可以理解为这两种数据类型的扩展或辅助。 1.1wire类型 wire 类型表示硬件单元之间的物理连线,由其连接

    2024年02月02日
    浏览(42)
  • 【FPGA入门】第一篇、Verilog基本语法常识

    目录 第一部分、不同的变量类型 1、wire和reg的区别  2、如何对变量进行赋值呢? 3、什么是阻塞?什么是非阻塞? 第二部分、变量位宽的定义 1、各种系统默认情况 2、变量位宽声明方式 3、表明位宽的情况下,赋值方式 4、两个模块之间例化,不定义变量直接用的方式 5、常

    2024年02月04日
    浏览(49)
  • 【Verilog】二、Verilog基础语法

    文章目录 前言 一、简单的Verilog知识 1.1、Verilog端口定义 1.2、Verilog的标识符 1.3、Verilog的逻辑值 1.4、Verilog的数字进制 1.5、Verilog的数据类型 1.5.1、reg型         1.5.2、wire型 1.5.3、参数类型 1.6、Verilog的运算符 1.6.1、算术运算符 1.6.2、关系运算符 1.6.3、逻辑运算符 1.6.4、条件

    2023年04月09日
    浏览(35)
  • FPGA学习笔记-知识点3-Verilog语法1

    按其功能可分为以下几类: 1) 算术运算符(+,-,×,/,%) 2) 赋值运算符(=,=) 3) 关系运算符(,,=,=) 4) 逻辑运算符(,||,!) 5) 条件运算符( ? :) 6) 位运算符(,|,^,,^) 7) 移位运算符(,) 8) 拼接运算符({ }) 9) 其它 按其所带操作数的个数运算符可分为三种: 1) 单目运算符(unary operator):可以带一个

    2024年02月06日
    浏览(55)
  • 【FPGA/verilog -入门学习5】verilog中的genrate for 和for 以及数组的用法

    本文参考:verilog generate语法总结-CSDN博客 Verilog数组赋值_笔记大全_设计学院 在Verilog中, generate for 和 for 都是用于循环的结构,但是它们具有不同的应用场合和语义。 for 循环: for 循环主要用于行为描述(behavioral description),通常用于描述算法或数学运算。 for 循环在仿真

    2024年02月03日
    浏览(46)
  • 【FPGA】verilog语法的学习与应用 —— 位操作 | 参数化设计

    学习新语法,争做新青年 计数器实验升级,让8个LED灯每个0.5s的速率循环闪烁,流水灯ahh好久不见~ 去年光这个就把我折磨够呛。。我肉眼可见的脱发就是从那时候开始的。。在那两个月我直接掉了10斤啊喂~ (没节食、没运动、没失恋哈哈哈 产生0.5s周期的计数器 为了避免仿

    2024年02月11日
    浏览(43)
  • Verilog 基础知识(一) Verilog 基础语法与注意事项

            Verilog中的module可以看成一个具有输入输出端口的黑盒子,该黑盒子有输入和输出接口(信号),通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1  模块示意图 0.1.1 模块描述 图1 所示的顶层模块(top_module)结构用Verilog语言可描述为: 模块

    2024年02月03日
    浏览(41)
  • Verilog 基础语法(题目)

    **本内容来自 牛客网Verilog基础语法** 1、四选一多路器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0 11 d1 10 d2 01 d3 00 信号示意图: 波形示意图: 输入描述: 输入信号 d1,d2,d3,d4 sel 类型 wire 输出描述: 输出信号 mux_out 类型 wire 2、异步复位的串联

    2024年02月11日
    浏览(38)
  • verilog语法基础

      现在,我们已经通过了流水灯、按键控制led灯、按键控制蜂鸣器、状态机等项目的训练,对Veriolg也有初步的认识,但是我们没有系统的学习Verilog语法。相信你也遗留了很多关于Verilog的诸多问题,不用着急,本文将根据前期课程的实训内容,来学习Verilog语法。   硬件

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包