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进行定义,递归丽数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果。

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

你可能感兴趣的:(FPGA之Verilog语言,verilog)