在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Verilog設(shè)計(jì)增加延時(shí)的仿真技術(shù)

電子設(shè)計(jì) ? 來源:csdn ? 作者:bleauchat ? 2020-11-25 15:29 ? 次閱讀

作者:bleauchat

在設(shè)計(jì)仿真激勵(lì)文件時(shí),為了滿足和外部芯片接口的時(shí)序要求,經(jīng)常會(huì)用到延時(shí)賦值語句,由于不同的延時(shí)賦值語句在仿真過程中行為不同,會(huì)產(chǎn)生不同的激勵(lì)輸出,如果不認(rèn)真區(qū)分不同表達(dá)式引起的差異,就可能產(chǎn)生錯(cuò)誤的激勵(lì),無法保證仿真結(jié)果的正確,本文就是區(qū)分各種延時(shí)賦值語句的差異,并給出比較結(jié)果。

1:阻塞式左延時(shí)賦值語句

舉例說明如下:

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; // 在15ns時(shí)a發(fā)生變化,啟動(dòng)該塊,但是等到27ns時(shí)才執(zhí)行后面的語句,所以是最新的結(jié)果
endmodule

分析:上面例子是希望在輸入信號(hào)變化后12ns再更新輸出結(jié)果,假設(shè)在15ns時(shí)a發(fā)生變化,在27ns時(shí),結(jié)果將被更新,但是如果在15ns到24ns這一段時(shí)間,a,b,ci又發(fā)生了變化,在27ns時(shí),結(jié)果將按照最新的a,b,ci進(jìn)行計(jì)算并被更新;

如果將程序修改成如下格式,仿真的結(jié)果不變:

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; // 在15ns a發(fā)生變化時(shí),啟動(dòng)該always塊,但是12ns后即第27ns時(shí)才執(zhí)行 
 //tmp = a + b + ci 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;  // 在15ns a發(fā)生變化時(shí),啟動(dòng)該always塊,執(zhí)行該語句,獲得當(dāng)前tem ,然后就開始執(zhí)行下一句 #12
#12 {co, sum} = tmp; // 所以tmp的值是15ns的值,再過12ns即27ns時(shí)賦值給輸出。因此,中間的變換被忽視
end
//15~27之間執(zhí)行該語句塊,只有執(zhí)行完該語句塊之后才是開始執(zhí)行下一個(gè)語句塊
endmodule

仿真的結(jié)果如下圖所示:從15ns到27ns之間的變化被忽視;

結(jié)論:阻塞式賦值語句是一句一句執(zhí)行的,一句沒有執(zhí)行完,下一句絕不會(huì)執(zhí)行。正因?yàn)槿绱耍诖死性谘訒r(shí)12個(gè)ns的時(shí)間里,不作任何處理,tmp值保持不變(2’b10),而且對(duì)敏感變量的變化不作反應(yīng)。不要將延時(shí)放在阻塞式賦值語句的左側(cè),這是一種不好的代碼設(shè)計(jì)方式;

2:阻塞式右延時(shí)賦值語句

看下面的例子:

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; // 先計(jì)算a + b + ci的值,過12ns后賦值為輸出;賦值語句是從右往左執(zhí)行
endmodule

它的仿真結(jié)果同adder_t7b,賦值語句是從右往左執(zhí)行,信號(hào)從15ns到27ns之間的變化被忽視;即 同:

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

下面兩個(gè)例子的仿真結(jié)果和adder_t6相同:

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

結(jié)論:不要將延時(shí)放在阻塞式賦值語句的右側(cè),這是一種不好的代碼設(shè)計(jì)方式;

3:非阻塞式左延時(shí)賦值語句

看例子:

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

它的仿真結(jié)果同adder_t1,在27ns時(shí),結(jié)果將按照最新的a,b,ci進(jìn)行計(jì)算并被更新;由于首先要執(zhí)行#12,然后才能執(zhí)行非阻塞賦值,所以能對(duì)信號(hào)進(jìn)行實(shí)時(shí)跟蹤!

結(jié)論:不要將延時(shí)放在非阻塞式賦值語句的左側(cè),這是一種不好的代碼設(shè)計(jì)方式;

4:非阻塞式右延時(shí)賦值語句

看例子:

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

非阻塞賦值,不會(huì)阻止下一條語句的執(zhí)行,輸出結(jié)果能隨時(shí)跟蹤輸入信號(hào)的變化;

結(jié)論:使用非阻塞式右延時(shí)賦值語句可以,輸出結(jié)果能夠跟隨輸入的變化,建議使用;

5:非阻塞式右延時(shí)多重賦值語句

看例子:

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

非阻塞賦值,不會(huì)阻止下一條語句的執(zhí)行,輸出結(jié)果能隨時(shí)跟蹤輸入信號(hào)的變化;這與下面的例子結(jié)果是相同的:

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

6:連續(xù)賦值語句

看例子:

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
module adder_t5 (co, sum, a, b, ci);
output co;
output [3:0] sum;
input [3:0] a, b;
input ci;
assign {co, sum} = #12 a + b + ci;
endmodule

輸出結(jié)果能隨時(shí)跟蹤輸入信號(hào)的變化;

結(jié)論:非阻塞語句和連續(xù)賦值語句無論怎么添加延時(shí)語句,其輸出都會(huì)隨著輸入的變化而跟蹤變化!這里要特別注意阻塞語句的延時(shí)添加,一般不在阻塞賦值語句中添加延時(shí)!

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1366

    瀏覽量

    111912
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于MATLAB/Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用

    基于MATLAB_Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用. 本書首先介紹了MATLAB語言的程序設(shè)計(jì)的基本內(nèi)容,在此基礎(chǔ)上系統(tǒng)介紹了系統(tǒng)仿真所必要的數(shù)值計(jì)算方法及MATLAB實(shí)現(xiàn)
    發(fā)表于 06-19 13:15

    實(shí)時(shí)控制與仿真技術(shù)應(yīng)用

    基于LabVIEW的實(shí)時(shí)控制與仿真技術(shù)應(yīng)用研究
    發(fā)表于 04-21 19:08

    Cadence PSpice仿真技術(shù)的優(yōu)勢有哪些

    Designer提供PCB設(shè)計(jì)人員的仿真技術(shù)是把電路仿真環(huán)境與PCB布局布線設(shè)計(jì)環(huán)境完全集成在一起,構(gòu)成一個(gè)完整的統(tǒng)一集成環(huán)境。設(shè)計(jì)師通過集成模擬和事件驅(qū)動(dòng)數(shù)字仿真,可以在不犧牲精度的情況下提高
    發(fā)表于 07-07 09:47

    ADAS研發(fā)與測試的模擬仿真技術(shù)

    ADAS高級(jí)輔助駕駛的ADAS研發(fā)與測試的模擬仿真技術(shù),大家可以看看,文檔介紹的特別豐富
    發(fā)表于 09-02 18:06

    仿真技術(shù)在汽車電子設(shè)計(jì)中的應(yīng)用有哪些?

    什么是SABER軟件仿真技術(shù)?汽車電子仿真技術(shù)的應(yīng)用是什么?
    發(fā)表于 05-18 06:42

    基于MATLAB Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用 教材

    基于MATLAB Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用 教材   目錄第一章 系統(tǒng)仿真技術(shù)與應(yīng)用
    發(fā)表于 04-29 14:51 ?0次下載
    基于MATLAB Simulink的系統(tǒng)<b class='flag-5'>仿真技術(shù)</b>與應(yīng)用 教材

    Cadence PCB設(shè)計(jì)仿真技術(shù)

    Cadence PCB設(shè)計(jì)仿真技術(shù) Cadence PCB設(shè)計(jì)仿真技術(shù)提供了一個(gè)全功能的模擬仿真器,并支持?jǐn)?shù)字元件幫助解決幾乎所有的設(shè)計(jì)挑戰(zhàn),從高頻系統(tǒng)到低功耗I
    發(fā)表于 04-29 08:41 ?4624次閱讀
    Cadence PCB設(shè)計(jì)<b class='flag-5'>仿真技術(shù)</b>

    CST仿真技術(shù)交流

    CST仿真技術(shù)交流。
    發(fā)表于 03-11 09:46 ?17次下載

    電路設(shè)計(jì)與仿真技術(shù)

    電路設(shè)計(jì)與仿真技術(shù)電子類資料材料,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-29 18:24 ?33次下載

    模擬仿真技術(shù)是什么

    則是在人類認(rèn)識(shí)自然界客觀規(guī)律的歷程中一直被有效地使用著。由于計(jì)算機(jī)技術(shù)的發(fā)展,仿真技術(shù)逐步自成體系,成為繼數(shù)學(xué)推理、科學(xué)實(shí)驗(yàn)之后人類認(rèn)識(shí)自然界客觀規(guī)律的第三類基本方法,而且正在發(fā)展成為人類認(rèn)識(shí)、改造
    發(fā)表于 05-19 17:13 ?1.7w次閱讀

    EE-68: JTAG 仿真技術(shù)參考

    EE-68: JTAG 仿真技術(shù)參考
    發(fā)表于 03-21 02:06 ?2次下載
    EE-68: JTAG <b class='flag-5'>仿真技術(shù)</b>參考

    電源仿真技術(shù)

    電源仿真技術(shù)資料分享。
    發(fā)表于 04-19 17:11 ?10次下載

    DDR設(shè)計(jì)和仿真技術(shù)詳解

    DDR2設(shè)計(jì)和仿真技術(shù)詳解。
    發(fā)表于 10-24 15:10 ?4次下載

    pcb仿真技術(shù)有什么用

    pcb仿真技術(shù)有什么用
    的頭像 發(fā)表于 11-28 15:22 ?1542次閱讀

    JTAG/MPSD仿真技術(shù)參考

    電子發(fā)燒友網(wǎng)站提供《JTAG/MPSD仿真技術(shù)參考.pdf》資料免費(fèi)下載
    發(fā)表于 12-23 15:45 ?0次下載
    JTAG/MPSD<b class='flag-5'>仿真技術(shù)</b>參考
    主站蜘蛛池模板: 中国一级特黄高清免费的大片 | 日本不卡视频 | 午夜69成人做爰视频网站 | 夜夜爽夜夜爽 | 欧美有码视频 | 久久精品国产亚洲片 | 四虎成人免费影院网址 | 日韩卡1卡2卡三卡四卡二卡免 | 亚洲天堂成人网 | 欧美成人自拍视频 | 亚欧成人乱码一区二区 | 四虎影视亚洲精品 | 午夜精品久久久久久 | 久久久久久久久久久观看 | 色播四房间 | 最近2018中文字幕免费看在线 | 国产美女久久 | 成人黄色三级 | 五月婷婷色视频 | 精品色图 | 午夜在线免费视频 | 日本三级在线播放线观看2021 | 国产三级在线免费 | 精品二区| 国产精品怡红院永久免费 | 日韩免费观看视频 | 亚洲美女激情视频 | 天天看天天摸天天操 | 好大好紧好爽好湿润视频 | 国模在线 | dy天堂| 免费伦费一区二区三区四区 | 欧亚激情偷乱人伦小说视频 | 轻点灬大ji巴太粗太长了啊h | 欧美影院一区 | 色天使色护士 在线视频观看 | 放荡女同老师和女同学生 | 岛国毛片一级一级特级毛片 | 欧美视频精品在线 | 欧美性xxxx交 | 亚洲精品日韩专区silk |