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进行定义,递归丽数的每一次调用都拥有不同的地址空间。因此对这种函数的递归调用和并发调用可以得到正确的结果。
⑥简单点讲,任务有输入输出,调用相当于模块,而函数有输入没输出,但有返回值。
推荐阅读
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天
- python学习之|python学习之 实现QQ自动发送消息