搜索
您的当前位置:首页关于verilog中的always

关于verilog中的always

来源:飒榕旅游知识分享网
关于verilog中的always

always

always语句块从仿真0时刻开始执⾏其中的⾏为语句;最后⼀条执⾏完成后,再开始执⾏其中的第⼀条语句,如此往复循环,直到整个仿真结束。因此,always语句块常⽤于对数字电路中⼀组反复执⾏的活动进⾏建模。

always 和 always@(*) 的区别

有@时,是每次执⾏语句时,必须满⾜括号内的条件才能继续执⾏语句,否则不执⾏。

always@(敏感事件列表) ⽤于描述时序逻辑;敏感事件(上升沿 posedge、下降沿 negedge);或电平。

verilog规定,always@()中的是指该always块内的所有输⼊信号的变化为敏感列表,也就是仿真时只有当always@(*)块内的输⼊信号产⽣变化,该块内描述的信号才会产⽣变化。

1. 若没有@,则是⼀般在teastbench 中产⽣时钟信号,指不会满⾜特定的条件,执⾏完⼀次后⽴马继续执⾏下⼀次,⼀直重复执⾏。always #10 CLK=~CLK;

2. 有@时,是每次执⾏语句时,必须满⾜括号内的条件才能继续执⾏语句,否则不执⾏。

3种模式

always@()语句的意思是always模块中的任何⼀个输⼊信号或电平发⽣变化时,该语句下⽅的模块将被执⾏。1、always语句有两种触发⽅式。第⼀种是电平触发,例如always @(a or b or c),a、b、c均为变量,当其中⼀个发⽣变化时,下⽅的语句将被执⾏。2、第⼆种是沿触发,例如always @(posedge clk or negedge rstn),即当时钟处在上升沿或下降沿时,语句被执⾏。3、⽽对于always@(),意思是以上两种触发⽅式都包含在内,任意⼀种发⽣变化都会触发该语句。

补充initial

Verilog语⾔中的两种过程:always过程和initial过程(执⾏⼀次)。

补充assign

assign ⽤于描述组合逻辑,所有的assign 和 always 块都是并⾏发⽣。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top