一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Verilog仿真事件中的延時分析

FPGA設(shè)計論壇 ? 來源:CSDN技術(shù)社區(qū) ? 2025-04-18 09:54 ? 次閱讀

1. 電路的延時

在實際電路中存在兩種延遲,慣性延遲 (Inertial delay) 和傳導(dǎo)延遲 (Transport delay)

慣性延遲

定義:若元件的輸入信號的脈沖寬度小于一定值時,元件的輸出沒有響應(yīng),也就是說元件具有一定的慣性。

產(chǎn)生原因:當(dāng)脈沖到達時,由于脈沖寬度小于元件本身的延遲,當(dāng)脈沖結(jié)束時,元件的新輸出還未建立起來。考慮了電路中存在的大量分布電容。

傳導(dǎo)延遲

定義:輸入信號變化到對應(yīng)輸出信號變化經(jīng)過的時間,類似于物理傳輸線的延遲。

產(chǎn)生原因:載流子運動的速度有限,通過導(dǎo)線需要一定的時間。

2. Verilog 中的時序模型

在分析 Verilog HDL 的仿真行為前,我們需要了解 Verilog 中時序模型。

時序模型分為:門級時序模型、過程時序模型。

門級時序模型

適用范圍:所有的連續(xù)賦值語句、過程連續(xù)賦值語句、門原語、用戶自定義原語。

特點:

任意時刻輸入發(fā)生變化,將重新計算輸出。

當(dāng)之前的的事件未執(zhí)行完畢時又發(fā)生的新的變化,則會撤銷之前的事件,開始新的事件。

過程時序模型

適用范圍:過程語句。

特點:

當(dāng)敏感列表發(fā)生變化時觸發(fā)執(zhí)行。

當(dāng)之前的的事件未執(zhí)行完畢時又發(fā)生的新的變化,則不撤銷原有事件,同時開始新的事件,如果同時有幾個更新事件,它們的執(zhí)行順序是不確定的。

3. Verilog 中的仿真延遲語句

Verilog 中的仿真延時語句為 #n,n 表示延時時間,將該語句加在語句中,延遲 n 個時間單位。

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

正規(guī)延遲 (#在外面)

#5 C = A +B

在 T 時刻執(zhí)行到該語句時,等待 5 個時間單位,然后計算等號右邊的值賦給 C,此時使用的 A B 的值是 T+5 時刻的值。

內(nèi)定延遲 (#在里面)

C = #5 A +B

在 T 時刻執(zhí)行到該語句時,先計算 A+B 的值,計算后等待 5 個時間單位將值賦給 C,使用的 A B 的值是 T 時刻的值。

4. 在 Verilog 建模中增加延時

兩種延時的添加方式和三種賦值方式 (連續(xù)賦值、阻塞賦值、非阻塞賦值) 一共形成六中添加延遲的方式。

// 1. 連續(xù)賦值+ 正規(guī)延遲assign#5C = A +B;// 2. 連續(xù)賦值+ 內(nèi)定延遲assign C =#5A +B;// 3. 阻塞賦值 + 正規(guī)延遲always @(*) begin   #5 C = A +B; end // 4. 阻塞賦值 + 內(nèi)定延遲 always @(*)begin  C =#5A +B;end// 5. 非阻塞賦值 + 正規(guī)延遲always @(*) begin   #5 C <= A +B; end ?// 6. 非阻塞賦值 + 內(nèi)定延遲 always @(*)?begin? ? ?C <=?#5?A +B;end

下面對這六種方式逐一分析:

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

在 T 時刻執(zhí)行到該語句時,等待 5 個時間單位,然后計算等號右邊的值賦給 C1。

使用的 A B 的值是 T+5 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) assign block,根據(jù) assign block 的門級時序模型特點,仿真器會撤銷先前的等待事件,然后重新執(zhí)行語句。

當(dāng)變化脈沖小于 5 個時間單位時,等待事件會被撤銷,該脈沖將不起作用。

仿真結(jié)果:

d6b960a6-1a9d-11f0-9310-92fbcf53809c.png

可以看出在 6ns、8ns、9ns、10ns 時刻 A 發(fā)生了變化,但皆因持續(xù)時間小于 5ns,所以都沒有對 C1 產(chǎn)生影響,只有在 12ns 和 18ns 的變化持續(xù)時間超過 5ns,作用到 C1 上。

連續(xù)賦值+ 內(nèi)定延遲

在 T 時刻執(zhí)行到該語句時,計算等號右邊的值,等待 5 個時間單位后賦給 C2。

使用的 A B 的值是 T 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) assign block,根據(jù) assign block 的門級時序模型特點,仿真器會撤銷先前的等待事件,然后重新執(zhí)行語句。

當(dāng)變化脈沖小于 5 個時間單位時,等待事件會被撤銷,該脈沖將不起作用。

該種方式有記憶屬性,與連續(xù)賦值原則不符,為非法語句,編譯不能通過。

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

在 T 時刻執(zhí)行到該語句時,等待 5 個時間單位,然后計算等號右邊的值阻塞賦給 C3。

使用的 A B 的值是 T+5 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) always block,根據(jù) always block 的過程時序模型特點,此時還在等待過程,always 語句還未執(zhí)行結(jié)束,不會開始新一輪的事件,仿真器不會對敏感列表反應(yīng)。

仿真器忽略延遲時間段的數(shù)據(jù)變化。

仿真結(jié)果:

d6cb3c86-1a9d-11f0-9310-92fbcf53809c.png

在 6ns 時刻 A 的值發(fā)生變化,always block 開始執(zhí)行,經(jīng)過 5ns,用 11ns 時刻的 A B 的值計算出結(jié)果賦給 C3,而忽略了 8ns 和 10ns 時刻的變化。

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

在 T 時刻執(zhí)行到該語句時,計算等號右邊的值,等待 5 個時間單位后賦給 C4。

使用的 A B 的值是 T 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) always block,根據(jù) always block 的過程時序模型特點,由于賦值方式為阻塞賦值,此時 always 語句還未執(zhí)行結(jié)束,不會開始新一輪的事件,仿真器不會對敏感列表反應(yīng)。

仿真器忽略延遲時間段的數(shù)據(jù)變化。

仿真結(jié)果:

d6e213de-1a9d-11f0-9310-92fbcf53809c.png

在 6ns 時刻 A 的值發(fā)生變化,always block 開始執(zhí)行,經(jīng)過 5ns,用 6ns 時刻的 A B 的變化后的值計算出結(jié)果賦給 C4,而忽略了 8ns 和 10ns 時刻的變化。

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

在 T 時刻執(zhí)行到該語句時,等待 5 個時間單位,然后計算等號右邊的值非阻塞賦給 C5。

使用的 A B 的值是 T+5 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) always block,根據(jù) always block 的過程時序模型特點,此時還在等待過程,always 語句還未執(zhí)行結(jié)束,不會開始新一輪的事件,仿真器不會對敏感列表反應(yīng)。

仿真器忽略延遲時間段的數(shù)據(jù)變化。

仿真結(jié)果:

d6f302b6-1a9d-11f0-9310-92fbcf53809c.png

在 6ns 時刻 A 的值發(fā)生變化,always block 開始執(zhí)行,經(jīng)過 5ns,用 11ns 時刻的 A B 的值計算出結(jié)果賦給 C5,而忽略了 8ns 和 10ns 時刻的變化。

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

在 T 時刻執(zhí)行到該語句時,計算等號右邊的值,等待 5 個時間單位后賦給 C6。

使用的 A B 的值是 T 時刻的值。

若在等待過程中 A B 的值發(fā)生變化再次觸發(fā) always block,根據(jù) always block 的過程時序模型特點,由于賦值方式為非阻塞賦值,將賦值事件放進事件隊列后,always 語句執(zhí)行結(jié)束,等待下一次的觸發(fā),觸發(fā)來到時開始新一輪的事件。

仿真器接受延遲時間段的數(shù)據(jù)變化,輸入的變化延遲會全部反應(yīng)在輸出上。

仿真結(jié)果:

d70f65e6-1a9d-11f0-9310-92fbcf53809c.png

A B 的每一次變化都觸發(fā) always block 的執(zhí)行,每一次變化都延時 5ns 后反應(yīng)在 C6 上。

下圖為 always block 中的四種延時方式的仿真流程:

d72d3aee-1a9d-11f0-9310-92fbcf53809c.png

// 仿真源碼`timescale1ns/1ps moduleTestbench;reg A,B;wire C1,C2;reg C3,C4,C5,C6;initialbeginA =0;B =0;C3 =0;C4 =0;C5 =0;C6 =0;#6A =1;#2A =0;#1A =1;#1A =0;#2A =1;#6A =0;end// 1. 連續(xù)賦值+ 正規(guī)延遲assign#5C1 = A +B;// 3. 阻塞賦值 + 正規(guī)延遲always @(*) begin   #5 C3 = A +B; end // 4. 阻塞賦值 + 內(nèi)定延遲 always @(*)begin  C4 =#5A +B;end// 5. 非阻塞賦值 + 正規(guī)延遲always @(*) begin   #5 C5 <= A +B; end ?// 6. 非阻塞賦值 + 內(nèi)定延遲 always @(*)?begin? ? ?C6 <=?#5?A +B;endendmodule

5. 總結(jié)

根據(jù)上述分析,容易看出慣性延時對應(yīng)于連續(xù)賦值中的正規(guī)延遲,而傳導(dǎo)延時對應(yīng)于非阻塞賦值中的內(nèi)定延遲。

所以仿真中常用 “連續(xù)賦值 + 正規(guī)延遲“ 模擬慣性延遲,用 ”非阻塞賦值 + 內(nèi)定延遲“ 模擬傳導(dǎo)延遲。

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

    關(guān)注

    51

    文章

    4212

    瀏覽量

    135056
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1364

    瀏覽量

    111461
  • 時序
    +關(guān)注

    關(guān)注

    5

    文章

    395

    瀏覽量

    37718
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3464

    瀏覽量

    49816
  • 延時分析
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5637

原文標(biāo)題:Verilog 仿真事件中的延時分析

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    北大Verilog課件四百多頁

    數(shù)字集成電路設(shè)計入門--從HDL到版圖于敦山北大微電子學(xué)系?介紹Verilog HDL,內(nèi)容包括:–Verilog應(yīng)用–Verilog語言的構(gòu)成元素–結(jié)構(gòu)級描述及仿真–行為級描述及
    發(fā)表于 08-03 00:23

    Verilog設(shè)計內(nèi)外延時

    Verilog設(shè)計內(nèi)外延時
    發(fā)表于 08-15 16:31

    時分復(fù)用的verilog

    現(xiàn)有4路fifo數(shù)據(jù),要時分復(fù)用的存入SRAM里,請問用verilog怎么寫?。???新手,求賜教?。?!
    發(fā)表于 10-27 13:28

    verilog乘法器延時問題

    剛剛學(xué)習(xí)verilog,夏宇聞的《verilog數(shù)字系統(tǒng)設(shè)計教程(第三版)》,P143圖10.3,乘法器延時為1個與門和8個全加器的
    發(fā)表于 10-10 23:04

    北大微電子verilog講義課件

    介紹Cadence Verilog仿真器, 內(nèi)容包括: 設(shè)計的編譯及仿真 源庫(source libraries)的使用 用Verilog-XL命令行界面進行調(diào)試 用NC Verilo
    發(fā)表于 05-28 15:23 ?402次下載
    北大微電子<b class='flag-5'>verilog</b>講義課件

    MSP430軟件精確延時分析與程序?qū)崿F(xiàn)

    MSP430軟件精確延時分析與程序?qū)崿F(xiàn)
    發(fā)表于 09-27 14:33 ?113次下載

    MIMO天線延時失衡性能分析

    針對MIMO系統(tǒng),從理論上分析分布式天線系統(tǒng)延時失衡對MIMO系統(tǒng)帶來的影響。通過仿真,定量分析了MIMO上下行鏈路
    發(fā)表于 11-10 14:27 ?27次下載
    MIMO天線<b class='flag-5'>中</b>的<b class='flag-5'>延時</b>失衡性能<b class='flag-5'>分析</b>

    單片機的C語言延時分析實例說明

    本文檔的主要內(nèi)容詳細介紹的是單片機的C語言延時分析實例說明包括了:例1,12MHz晶振調(diào)試,例2:12MHz晶振調(diào)試,傳參數(shù),for循環(huán)只有1層,且是char類型。
    發(fā)表于 07-16 17:39 ?0次下載
    單片機的C語言<b class='flag-5'>延時分析</b>實例說明

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

    作者:bleauchat 在設(shè)計仿真激勵文件時,為了滿足和外部芯片接口的時序要求,經(jīng)常會用到延時賦值語句,由于不同的延時賦值語句在仿真過程中行為不同,會產(chǎn)生不同的激勵輸出,如果不認真區(qū)
    的頭像 發(fā)表于 11-25 15:29 ?2199次閱讀

    如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真

    本文將介紹如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真。 Icarus Verilog Icarus V
    的頭像 發(fā)表于 07-27 09:16 ?5736次閱讀
    如何使用Icarus <b class='flag-5'>Verilog</b>+GTKWave來進行<b class='flag-5'>verilog</b>文件的編譯和<b class='flag-5'>仿真</b>

    FreeRTOS高級篇9---FreeRTOS系統(tǒng)延時分析

    FreeRTOS提供了兩個系統(tǒng)延時函數(shù):相對延時函數(shù)vTaskDelay()和絕對延時函數(shù)vTaskDelayUntil()。相對延時是指每次延時
    發(fā)表于 01-26 17:34 ?6次下載
    FreeRTOS高級篇9---FreeRTOS系統(tǒng)<b class='flag-5'>延時分析</b>

    multisim 555觸摸延時仿真

    multisim 仿真 555觸摸延時仿真資料分享。
    發(fā)表于 04-15 14:30 ?15次下載

    verilog仿真工具編譯

    Icarus Verilog(以下簡稱iverilog )號稱“全球第四大”數(shù)字芯片仿真器,也是一個完全開源的仿真器。
    的頭像 發(fā)表于 08-15 09:11 ?8721次閱讀

    Verilog 測試平臺設(shè)計方法 Verilog FPGA開發(fā)指南

    指南: Verilog測試平臺設(shè)計方法 選擇仿真工具 : 選擇一款強大的仿真工具,如ModelSim、Xilinx ISE等。這些工具提供了豐富的功能,包括波形查看、調(diào)試功能、時序分析
    的頭像 發(fā)表于 12-17 09:50 ?864次閱讀

    Verilog 電路仿真常見問題 Verilog 在芯片設(shè)計的應(yīng)用

    。然而,在實際應(yīng)用,設(shè)計師可能會遇到各種問題,這些問題可能會影響仿真的準確性和設(shè)計的可靠性。 Verilog電路仿真常見問題 仿真環(huán)境的搭
    的頭像 發(fā)表于 12-17 09:53 ?931次閱讀