河南手机网站建设,金蝶软件有限公司,软件开发外包多少钱,门头沟富阳网站建设verilog语言中的过程块都是由一下四个结构语句构成#xff1a;
1#xff09;initial说明语句(只执行一次)
2#xff09;always说明语句#xff08;敏感参数触发的时候调用#xff09;
3#xff09;task说明语句#xff08;调用的时候执行#xff09;
4#xff09;…verilog语言中的过程块都是由一下四个结构语句构成
1initial说明语句(只执行一次)
2always说明语句敏感参数触发的时候调用
3task说明语句调用的时候执行
4function 说明语句调用的时候执行
不同的initialalways 之间都是并行执行 initial语句例子
initial
begin
areg0// 初始化寄存器为0
forindex0;index10;indexindex1
aregindex; // 循环给areg 修改值
end initial
begin
areg0// 初始化寄存器为0 #10 areg1// 延迟10个周期后为1 #10 areg2// 再延迟10个周期后为2
#10 areg3// 再延迟10个周期后为3
#10 areg4// 再延迟10个周期后为4
end always 模块
基本格式always 触发条件 执行的语句
最简单的always always #10 a ~a// 产生一个方波
常用的形式为 always敏感列表语句
如 always(posedge clock or posedge rest) //在时钟上升沿或者rest 上升沿的时候才会触发always后面跟随的语句 or 也可以使用‘’代替。
如果对于有很多输入的模块 可以通过* 来代替手写敏感列表
always* 或者always(*)
always(*) //always(a or b or c or d or e)
begin
youtabcde;// 对a b c d e 进行相加
end verilog 中task和function 可以构成一个单独的功能块用于被其他地方调用但是我个人理解
task 类似c中的函数 funtion 更类似c中的宏定义
task任务名
端口及数据类型声明语句
语句
endtask
实例
task my_task;
input a,b;
inout c;//既是输入又是输出
output d,e;
ca;
db;
ea*b;
endtask
调用的时候 my_task(v,w,x,y,z)//和上面端口定义的顺序匹配 funtion返回值类型或者范围 函数名
端口说明
变量定义
语句
endfuntion
funtion[7:0] getbyte;
input[15:0] address;
begin
getbyte.......;//函数名直接作为返回值
end
endfunction