虽然有时在设计中会包含时钟,但时钟通常用在测试模块中。下面
三个例子分别说明如何在门级和行为级建立不同波形的时钟模型。
简单的对称方波时钟:
reg clk;
always begin
#period/2 clk=0;
#period/2 clk=1;
end
reg go; wire clk;
nand #(period/2) ul (clk,clk,go);
initial begin
go=0;
#(period/2) go=1;
end
注:在有些仿真器中,如果设计所用的时钟是由与其相同抽象级别的时钟模型产生的,则仿真器的性能就能得到提高。
简单的带延迟的对称方波时钟:
reg clk;
initial begin
clk=0;
#(period)
forever
#(period/2) clk=!clk
end
reg go; wire clk;
nand #(period/2) ul (clk,clk,go);
initial begin
go=0;
#(period) go=1;
end
注:这两个时钟模型有些不同,行为描述的模型延迟期间一直是低电平,而门级描述的模型开始延迟有半个周期是不确定的。
带延迟、头一个脉冲不规则的、占空比不为1的时钟:
reg clk;
initial begin
#(period+1) clk=1;
#(period/2-1)
forever begin
#(period/4) clk=0;
#(3*period/4) clk=1;
end
end
reg go; wire clk;
nand #(3*period/4,period/4) ul(clk,clk,go);
initial begin
#(period/4+1) go=0;
#(5*period/4-1) go=1;
end
注:这两个时钟模型也有些不同,行为描述的模型一开始就有确定的电平,而门级描述的模型有延迟, 开始时电平是不确定的。
|