行为建模的Verilog HDL中的建模方式

如题所述

第1个回答  2016-06-04

Verilog模型可以是实际电路不同级别的抽象,因此有多种不同的建模方法。其中最常用的建模方法有以下三种:
1) 门级结构建模
2) 行为描述建模
3) 数据流建模
Verilog HDL的行为描述建模
行为建模主要用initial和always语句,这些语句相互并行执行,,都在0时刻开始执行,与语句出现的顺序无关。
行为建模的时序控制:(1)时延控制,(2)事件控制。
时延控制:#delay procedural_statement;其中delay可以是任意表达式而不必是常量。
事件控制:1边沿触发事件控制 2电平敏感事件控制。
边沿触发事件控制:@event procedural_statement;
例如:@(posedge Clock)Count = 0;
电平敏感事件控制:wait(condition)
procedural_statement;
例如:wait(Sum > 22)
Sum = 0;
语句块:begin….end;fork…..join;
过程性赋值:阻塞性赋值,非阻塞性赋值。
条件语句:if….else;case;
循环语句:forever,while,repeat,for。
1forever
procedural_statement;//永远执行下去
2repeat(Count)
procedural_statement;//循环Count次
3while(condition)
procedural_statement;
4for( ; ; )
procedural_statement;
实例:
1位全加器(行为描述方式):
module FA_Seq(A,B,Cin,Cout,Sum);l
input Cin,A,B;
output Cout,Sum;
reg Cout,Sum;
reg T1,T2,T3;
always
@(A or B or Cin)begin
Sum=(A^B)^Cin;
T1=A&Cin;
T2=B&Cin;
T3=A&B;
Cout=(T1 | T2) | T3;
end
endmodule
带异步预置的负边沿触发的D触发器(行为描述方式):
module DFF(Clk,D,Set,Q,Qbar);
input Clk,D,Dset;
outptut Q,Qbar;
reg Q,Qbar;
always
wait(Set == 1)
begin
#3 Q = 1;
#2 Qbar = 0;
wait(Set ==0)
end
always
@(negedge Clk)
begin
if(Set != 1)
begin
#5 Q = D;
#1 = Qbar = ~Q;
end
end
endmodule

相似回答