作者:李秋鳳,華清遠(yuǎn)見嵌入式學(xué)院講師。
仿真可以分為前仿真和后仿真,前仿真是功能仿真,目標(biāo)是分析電路的邏輯關(guān)系的正確性,仿真速度快,可以根據(jù)需要觀察電路輸入輸出端口和電路內(nèi)部任一信號和寄存器的波形,后仿真是將電路的門延遲參數(shù)和各種電路單元之間的連線情況考慮在內(nèi)后進(jìn)行仿真,得到的仿真結(jié)果接近真實(shí)的應(yīng)用情況,后仿真的速度相對于前仿真慢得多,在觀測內(nèi)部節(jié)點(diǎn)波形時(shí)比較困難,在一個(gè)完整的電路設(shè)計(jì)中應(yīng)該包括這兩個(gè)過程。
下面是簡單的數(shù)字電路,代碼及綜合后的RTL網(wǎng)表如下:
`timescale 1ns/1ps
module ml(clk,in1,in2,in3,out);
input clk;
input in1,in2,in3;
output out;
wire w1,w2;
reg d1,d2;
assign w1=~(in1&in2);
always@(posedge clk)
d1<=w1;
assign w2=~d1;
always@(posedge clk)
d2<=w2;
assign out= d2^in3;
endmodule
分析上面代碼可以看出,上面只是反映的是邏輯功能,實(shí)際上,每個(gè)門電路都有工作延時(shí),如果考慮到工作延時(shí),則代碼需要進(jìn)行修改,修改后的代碼更能反映電路的實(shí)際工作情況
`timescale 1ns/1ps
module ml(clk,in1,in2,in3,out);
input clk;
input in1,in2,in3;
output out;
wire w1,w2;
reg d1,d2;
parameter delay1=1,delay2=2;
assign # delay1 w1=~(in1&in2);
always@(posedge clk)
d1<= # delay2 w1;
assign # delay1 w2=~d1;
always@(posedge clk)
d2<= # delay2 w2;
assign # delay1 out= d2^in3;
endmodule
這段代碼中定義了兩個(gè)延時(shí)參數(shù),分別對應(yīng)組合邏輯的門延時(shí)和寄存器的傳輸延時(shí),這里的延時(shí)與真正的門延時(shí)在具體數(shù)值上是不同的,但是這種每次賦值操作時(shí)都加入延時(shí)的方法有助于對電路后仿真時(shí)可能的延時(shí)情況給出定性分析的結(jié)果。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。