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

FPGA之Verilog语言14___结构说明语句
1.结构说明语句一共有4种:initial、always、task、function。
【FPGA之Verilog语言|FPGA之Verilog语言14___结构说明语句】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进行定义,递归丽数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果。
⑥简单点讲,任务有输入输出,调用相当于模块,而函数有输入没输出,但有返回值。

    推荐阅读