栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

FPGA之Verilog语言14

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FPGA之Verilog语言14

FPGA之Verilog语言14___结构说明语句

1.结构说明语句一共有4种:initial、always、task、function。

2.initial语句

①一个模块中可以有多个initial过程块,每个initial一开始同时立即开始执行,且只执行一次。

②initial块常用于测试文件的编写,用来产生仿真信号和设置信号等仿真环境。

以下是用initial块对存储器进行赋初值:

	initial 
			begin
				a_reg = 0;			//初始化寄存器a_reg
				for(i =0;i < size;i = i+1)
					memory[i] = 0;	//一个一个初始化memory
			end

3.always语句

①一个模块中可以有多个always过程块,每个always一开始同时立即开始执行,且不断在活动。

②组合逻辑的always块为always@(*),其中星号代表所有的敏感列表,也就是OR事件。

③时序逻辑的always块则@与时钟相关的信号。

always代码不做例子了,太多了

4.task(任务)和function(函数)

①任务和函数都是用来对设计中多处使用的公共代码进行定义,使用任务和函数可以将模块分制成许多个可独立管理的子单元,增强了模块的可读性和可维护性,它们和C语言中的子程序起相同的作用。

②任务可以具有任意多个输入、输入/输出(inout)和输出变量,在任务中可以使用延迟、事件和时序控制结构,在任务中可以调用其他的任务和函数。函数只能有一个返回值,并且至少要有一个输入变量,在函数中不能使用延迟、事件和时序控制结构,但可以调用其他函数,不能调用任务。

③可重入任务使用关键字automatic进行定义,它的每次调用都对不同的地址空间进行操作。因此在被多次并发调用时,它仍然可以获得正确的结果。

④当声明的数时,Verilog仿真器都会隐含地声明一个同名的寄存器变量,函数的返回值通过这个寄存器传递回调用处。

⑤递归函数使用关键字automatic进行定义,递归丽数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果。

⑥简单点讲,任务有输入输出,调用相当于模块,而函数有输入没输出,但有返回值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号