国产在线丝袜-国产在线丝袜精品一区免费-国产在线一二三区-国产在线永久视频-亚洲福利视频一区二区三区-亚洲福利视频一区二区

你的位置:首頁 > 新聞中心

淺談兩種實(shí)際電路中延時(shí)(一)

2022-9-8 22:05:35??????點(diǎn)擊:
1.0延時(shí)


Verilog和VHDL是一種基于實(shí)際電路進(jìn)行設(shè)計(jì)的硬件描述語言,所以在設(shè)計(jì)時(shí),要更多的基于實(shí)際電路去考慮延時(shí)的添加。
在實(shí)際電路中,延時(shí)分為:慣性延時(shí)和傳輸延時(shí)。


1.1慣性延時(shí):


通常發(fā)生在信號(hào)通過邏輯門時(shí)發(fā)生。
如圖1所示,輸入Wirein有兩個(gè)高電平脈沖,第一個(gè)寬度為 3ns,第二個(gè)寬度為9ns。


當(dāng)?shù)谝粋€(gè)高電平脈沖到達(dá)與非門時(shí),因?yàn)榕c非門的延遲是5ns大于第一個(gè)脈沖信號(hào)寬度3ns,輸出還來不及建立低電平,脈沖信號(hào)就已經(jīng)過去了,導(dǎo)致在輸出信號(hào)Wireout上沒有輸出。


當(dāng)?shù)诙€(gè)脈沖信號(hào)到達(dá)與非門時(shí),因其脈沖寬度大于與非門延遲寬度,所以輸出信號(hào)Wireout有輸出并整體延遲5ns。


這種延時(shí)就被成為慣性延時(shí),如果輸入變化過快,則不會(huì)體現(xiàn)在輸出上。


1.2傳輸延時(shí):


傳輸延遲一般為輸入信號(hào)變化到對(duì)應(yīng)輸出信號(hào)變化經(jīng)過的時(shí)間,不會(huì)對(duì)輸入信號(hào)進(jìn)行濾除處理,所以傳輸延遲是一種絕對(duì)延遲,這種延遲類似于物理傳輸線的延遲,在仿真中用于模擬連線延遲。如下圖所示,輸入一般不會(huì)被濾除。

2.0仿真延時(shí)


在仿真中,如果在仿真的elaboraTIon過程中沒有顯示指定延遲的類型,那么仿真器一般都會(huì)將代碼中指定的延遲作為慣性延遲處理,即此時(shí)小于指定延遲寬度的脈沖將被濾除。


如果仿真過程中需要模擬傳輸延遲,需要在elaboraTIon時(shí)指定相應(yīng)的傳輸延遲參數(shù),即使能傳輸延遲模擬功能,此時(shí)輸入信號(hào)原則上都能通過電路單元。


2.1傳輸延遲參數(shù)


在仿真elaboraTIon時(shí),增加如下仿真參數(shù):


“+transport_path_delays +pulse_r/<濾除百分比> +pulse_e/<濾除百分比>”


等可在仿真階段實(shí)現(xiàn)傳輸延遲的模擬,并且配置不同的濾除百分比,輸出的結(jié)果也會(huì)有差異,一般輸出結(jié)果為三種情況:濾除、通過、不定態(tài),如下圖所示:
其中“+pulse_r”和“+pulse_e”后指定的參數(shù)表示允許通過和濾除的信號(hào)的寬度占指定延遲的百分比。


例如,如果指定延遲為5ns,參數(shù)為“+pulse_r/40”和“+pulse_e/80”(其中的40和80為百分比),那么小于2ns(5x(40%))的信號(hào)將被濾除,大于等于4ns(5x(80%))的信號(hào)將可以通過,介于兩者之間的信號(hào)將輸出不定態(tài)。


Note:如果僅使用“+transport_path_delays”而不使用對(duì)脈沖寬度約束的參數(shù)(“+pulse_r/e”),那么仿真器將按照慣性延遲處理方式對(duì)輸入信號(hào)進(jìn)行處理,即小于指定延遲寬度的信號(hào)不能通過電路單元。


同時(shí)在EDA工具中還有其他參數(shù)(“+pulse_r/e”與“+pulse_int__r/e”等),不同的參數(shù)將有不同的仿真效果,具體可參考相關(guān)EDA工具手冊(cè)。


3.0延時(shí)方式


延遲的添加方法有兩種:內(nèi)定延遲或者正規(guī)延遲


內(nèi)定延遲:C = #2 A+B;
正規(guī)延遲:#2 C = A+B;


4.0阻塞賦值延時(shí)


阻塞賦值:


always @(a)


y = ~a;


阻塞賦值+正規(guī)延遲:


always @(a)


#5 y = ~a;


阻塞賦值+內(nèi)定延遲:


always @(a)


y = #5 ~a;


4.1阻塞賦值+正規(guī)延遲


module adder_t1 (co, sum, a, b, ci);


    output             co;


    output   [3:0]   sum;


    input      [3:0]   a, b;
input                ci;


  reg co;


  reg [3:0] sum;


  always @(a or b or ci)


           #12 {co, sum} = a + b + ci;


對(duì)于adder_t1示例,輸出應(yīng)在輸入更改后12ns更新。


如圖3所示,如果a輸入在時(shí)間15變化,


在接下來的12ns期間a,b和ci輸入發(fā)生變化,則輸出將使用a,b和ci的最新值進(jìn)行更新。


以adder_t7a和adder_t7b為例:


module adder_t7a (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


reg co;


reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci) begin


#12 tmp = a + b + ci;


{co, sum} = tmp;


end


endmodule


module adder_t7b (co, sum, a, b, ci);
output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


reg co;


reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci) begin


tmp = a + b + ci


#12 {co, sum} = tmp;


end


endmodule


adder_t7a的結(jié)果與adder_t1一致
adder_t7b的結(jié)果由于阻塞賦值的特性,將對(duì)第一個(gè)輸入變化的輸入進(jìn)行采樣,并將輸出分配到臨時(shí)位置,直到完成指定的阻塞賦值。然后輸出將使用不再有效的舊臨時(shí)輸出值寫入。


12ns延遲時(shí)間內(nèi)的其他輸入變化將不會(huì)被采樣,這意味著舊的錯(cuò)誤值將保留在輸出上,直到發(fā)生更多輸入變化。


4.1.1準(zhǔn)則


1.要對(duì)組合邏輯的阻塞賦值進(jìn)行正規(guī)延遲。


2. Testbench指南:在測(cè)試平臺(tái)中對(duì)阻塞賦值進(jìn)行正規(guī)是合理的,因?yàn)檠舆t僅用于時(shí)間空間順序輸入激勵(lì)事件。


4.2阻塞賦值+內(nèi)定延遲


module adder_t6 (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;
input ci;


reg co;


reg [3:0] sum;


always @(a or b or ci)


{co, sum} = #12 a + b + ci;


endmodule


對(duì)于adder_t6,輸出應(yīng)在輸入更改后12ns更新。


如果a輸入在時(shí)間15發(fā)生變化,則RHS輸入值將被采樣,輸出更新,而在接下來的12ns期間所有其他a,b和ci輸入變化將不會(huì)被采樣。


這意味著舊的錯(cuò)誤值將保留在輸出上,直到發(fā)生更多輸入變化。


module adder_t11a (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;
input ci;


reg co;


reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci) begin


tmp = #12 a + b + ci;


{co, sum} = tmp;


end


endmodule


module adder_t11b (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


reg co;
reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci) begin


tmp = a + b + ci;


{co, sum} = #12 tmp;


end


endmodule


當(dāng)在賦值語句的RHS上發(fā)生延遲時(shí),存在多個(gè)阻塞賦值的相同問題。


adder_t11a與adder_t6的問題是一樣的。


adder_t11b的輸出將采用最新的值進(jìn)行輸出。


4.2.1準(zhǔn)則


不要在模型組合邏輯的阻塞分配的RHS上設(shè)置延遲。


Testbench指南:不要在測(cè)試平臺(tái)中對(duì)阻塞賦值進(jìn)行內(nèi)定延遲。


4.3結(jié)論
阻塞賦值+延遲,在語句啟動(dòng)之后,輸出傳輸延時(shí)當(dāng)前時(shí)刻或語句啟動(dòng)時(shí)刻的邏輯結(jié)果,既不能模擬傳輸延時(shí),也不能模擬慣性延時(shí),所以不建議在阻塞賦值中添加延時(shí)。


5.0非阻塞賦值


always @(a)


y <= ~a;


非阻塞賦值+正規(guī)延遲


always @(a)


#5 y <= ~a;


非阻塞賦值+內(nèi)定延遲


always @(a)


y <= #5 ~a;


5.1非阻塞賦值+正規(guī)延遲


module adder_t2 (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;
input ci;


reg co;


reg [3:0] sum;


always @(a or b or ci)


#12 {co, sum} <= a + b + ci;


endmodule


可以看出,輸出會(huì)直接輸出延遲后當(dāng)前時(shí)刻的邏輯結(jié)果,并不能反映中間的輸入變化。


5.2非阻塞賦值+內(nèi)定延遲


module adder_t3 (co, sum, a, b, ci);


output co;


output [3:0] sum;
input [3:0] a, b;


input ci;


reg co;


reg [3:0] sum;


always @(a or b or ci)


{co, sum} <= #12 a + b + ci;


endmodule


向非阻塞賦值的右側(cè)(RHS)添加延遲(如圖9所示)將準(zhǔn)確地模擬具有傳輸延遲的組合邏輯。
在的adder_t3示例中,如果a輸入在時(shí)間15發(fā)生變化,如圖10(下一頁)所示,則將采樣所有輸入,并且新輸出值將排隊(duì)等待12ns后分配。


在輸出排隊(duì)(計(jì)劃用于將來分配)但尚未分配之后,將立即再次設(shè)置始終塊以在下一個(gè)輸入事件上觸發(fā)。這意味著所有輸入事件將在12ns延遲后將新值排隊(duì)到輸出上。


這種編碼風(fēng)格模擬了具有傳輸延遲的組合邏輯。


這種編碼風(fēng)格將精確地模擬具有純傳輸延遲的傳輸延遲;


但是,這種編碼風(fēng)格通常會(huì)導(dǎo)致模擬速度變慢。


Testbench指南:當(dāng)必須在未來的時(shí)鐘邊緣或設(shè)定的延遲之后安排刺激時(shí),此編碼樣式通常用于測(cè)試平臺(tái),同時(shí)不阻止在同一程序塊中分配后續(xù)刺激事件。


多個(gè)非阻塞賦值和內(nèi)定延遲
module adder_t9c (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


reg co;


reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci or tmp) begin


tmp <= #12 a + b + ci;


{co, sum} <= tmp;


end


endmodule


module adder_t9d (co, sum, a, b, ci);
output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


reg co;


reg [3:0] sum;


reg [4:0] tmp;


always @(a or b or ci or tmp) begin


tmp <= a + b + ci;


{co, sum} <= #12 tmp;


end


endmodule


組合邏輯是有缺陷的,除非所有RHS輸入標(biāo)識(shí)符都列在靈敏度列表中,包括僅在always塊內(nèi)分配和使用的中間臨時(shí)值,如adder_t9c和adder_t9d。
對(duì)于adder_t9c和adder_t9d示例,非阻塞賦值是并行執(zhí)行的,并且在更新tmp之后,由于tmp在靈敏度列表中,因此將再次觸發(fā)始終塊,評(píng)估RHS方程并使用更新LHS方程正確的值(在第二次通過always塊時(shí))。


建模指南:通常,不要將非阻塞賦值的內(nèi)定延遲放在模型組合邏輯上。這種編碼風(fēng)格可能令人困惑,并且模擬效率不高。


將非阻塞賦值的內(nèi)定延遲置于時(shí)序邏輯上的時(shí)鐘到輸出行為模型是一種常見且有時(shí)有用的做法。


Testbench:有一些多時(shí)鐘設(shè)計(jì)驗(yàn)證套件可以從使用RHS延遲的多個(gè)非阻塞賦值中受益;


但是,這種編碼風(fēng)格可能會(huì)令人困惑,因此通常不建議在測(cè)試平臺(tái)中對(duì)非阻塞賦值的RHS進(jìn)行延遲。


5.3結(jié)論


對(duì)于非阻塞賦值,當(dāng)只有一個(gè)時(shí),內(nèi)定延遲可以很好的模擬傳輸延遲的情況。
當(dāng)非阻塞賦值變?yōu)槎鄠€(gè)時(shí),需要將變量放入敏感事件表中。


因此,非阻塞賦值+內(nèi)定延遲更適合于設(shè)計(jì)時(shí)序邏輯,而不適合組合邏輯。


6.0連續(xù)賦值
6.1連續(xù)賦值+正規(guī)延遲


module adder_t4 (co, sum, a, b, ci);


output co;


output [3:0] sum;


input [3:0] a, b;


input ci;


assign #12 {co, sum} = a + b + ci;


endmodule


增加連續(xù)賦值的延遲可以精確地模擬具有慣性延遲的組合邏輯,是一種推薦的編碼方式。


對(duì)于adder_t4示例,輸出在最后一次輸入更改后12ns內(nèi)不會(huì)改變(所有輸入穩(wěn)定后12ns)。任何間隔小于12ns的輸入變化序列將導(dǎo)致任何未來的預(yù)定輸出事件(具有相應(yīng)分配時(shí)間的輸出值)被替換為新的輸出事件。

主站蜘蛛池模板: 日韩精品一区二区三区视频网 | 黄色在线网站 | 久久久久久久综合狠狠综合 | 最新91视频 | 亚洲欧美另类图片 | 久久免费区一区二区三波多野 | 日本免费一区二区三区看片 | 亚洲美女性视频 | 视色4se影院在线播放 | 国产91激情对白露脸全程 | 久久亚洲伊人 | 国产精品伦理一区二区三区 | 午夜精品在线免费观看 | 99热国产这里只有精品99 | 2022国产91精品久久久久久 | 中文精品久久久久国产网址 | 黄色片网址在线观看 | 五月婷婷基地 | 日韩有色 | 男人女人做刺激视频免费 | 四虎影永久在线观看网址 | 91精品国产91久久久久福利 | 亚洲激情久久 | 色吊网 | 国产区网址 | 美女胸免费视频网站 | 经典欧美gifxxoo动态图午夜 | 人人澡人人澡人人看青草 | 久久九九青青国产精品 | 99毛片| 欧美xxxx色视频在线观看免费 | 日韩色在线观看 | 精品免费久久久久久久 | 国产精品综合色区在线观看 | 国产一区在线看 | 美女胸又www又黄的网站视频 | 久久伊人草 | 亚洲天堂黄色 | 午夜精品在线免费观看 | 国产福利不卡 | 婷婷综合色伊人阁 |