日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

阻塞賦值和非阻塞賦值的用法一篇文章就夠了

汽車玩家 ? 來源:FPGA技術聯(lián)盟 ? 作者:Jarvis ? 2020-01-30 17:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值和非阻塞賦值。對于初學者,往往非常迷惑這兩種賦值方式的用法,本章節(jié)主要介紹這兩種文章的用法。其實,有時候概念稍微不清楚,Bug就會找到我們,下面一文掃清阻塞賦值和非阻塞賦值所有的障礙。

基本概念

阻塞賦值(Blocking Assignment)

阻塞賦值的基本描述格式為:

[變量] = [邏輯表達式];

阻塞賦值在執(zhí)行的時候,右端表達式執(zhí)行并賦值到左邊變量,不會受任何情況打斷。所以在本次賦值結束之前他“阻塞”了當前其他的賦值任務,阻塞賦值的操作和C語言中的變量賦值非常相似。

非阻塞賦值(Nonblocking assignment)

非阻塞賦值的基本描述格式為:

[變量] 《= [邏輯表達式];

非阻塞賦值行為有些細微之處比較難以理解。我們最好從硬件角度來理解,always模塊可以被認為是純硬件模塊,當always模塊被激活時,非阻塞賦值的右側表達式就開始執(zhí)行;當always模塊所有表達式執(zhí)行結束之后,所有執(zhí)行結果才賦值到左側變量當中。之所以稱為“非阻塞”就是在本條賦值語句執(zhí)行的過程中,其他賦值語句也可以執(zhí)行。

金規(guī)

1. 在組合邏輯電路描述中采用阻塞賦值

阻塞賦值和非阻塞賦值雖然都可以用來描述同一電路,以1位比較器舉例來解釋這種差別。

阻塞賦值實現(xiàn)1bit比較器

module eq1_block

input wire i0, i1,

output reg eq

);

reg p0, p1;

always @(i0,i1) // i0 和i1 在敏感量列表當中

// 語句描述的順序非常關鍵

begin

p0 = ~i0 & ~i1;

p1 = i0 & i1;

eq = p0 | p1;

end

endmodule

分析:程序中,敏感量列表中包含i0和i1,只要這兩個變量有一個發(fā)生改變,都會激活always語句,那么p0、p1和eq就會順序賦值,最終eq賦值就會被更新,所以這三條語句的描述順序非常關鍵,假如將最后一條語句提前:

always @(i0,i1)

begin

eq = p0 | p1;

p0 = ~i0 & ~i1;

p1 = i0 & i1;

end

在第一條描述中,由于p0和p1還沒有被賦予新值,所以p0和p1依然保持原來的賦值,這樣得到的最終結果顯然是錯誤的。

非阻塞賦值實現(xiàn)1bit比較器

module eq1_non_block

input wire i0, i1,

output reg eq

);

reg p0, p1;

always @(i0,i1,p0,p1) // p0, p1依然在敏感量列表中

// 描述順序無關緊要

begin

p0 《= ~i0 & ~i1;

p1 《= i0 & i1;

eq 《= p0 | p1;

end

endmodule

分析:p0和p1包含在敏感量列表當中,當i0 或者 i1有所變化,always模塊被激活,p0和p1在第一個時鐘節(jié)拍結束時賦值,由于eq值為基于p0和p1原來保持值的賦值,所以eq不變,當前賦值結束時,always模塊重新被激活,由于p0和p1被改變(這就是p0和p1放在敏感量列表中的原因),eq變量在第二個時鐘節(jié)拍賦予了新值。從以上分析,即使將以上語句的順序發(fā)生改變,也不會影響最終結果,因為eq的賦值以及always模塊的激活與這些語句的順序并沒關系。

總結:雖然兩種描述方法都可以描述同一電路,但是兩個電路的結果是有區(qū)別的,采用非阻塞賦值法描述仿真的時候花的時間更長一些,電路輸出結果在時序上也有微弱差別,鑒于此,我們有這么一條原則“在組合邏輯電路描述中采用阻塞賦值”。

2. 時序邏輯描述,采用非阻塞賦值方式賦值

就單獨一個寄存器來說,阻塞賦值和非阻塞賦值都可以描述存儲單元,如DFF可以描述為

always@(posedge clk)

q 《= d;

也可以描述為

always@(posedge clk)

q = d;

但是當設計中存在多個寄存器描述單元的時候,就會有細微的查別,假設有兩個寄存器在每個時鐘的上升沿進行數(shù)據(jù)交換,采用阻塞賦值描述如下:

always@(posedge clk)

a = b;

always@(posedge clk)

b = a;

在時鐘的上升沿,兩個always語句同時被激活并且并行執(zhí)行,一個時鐘節(jié)拍后兩條語句執(zhí)行結束,按照verilog語法標準,兩個always語句執(zhí)行結果時間順序上誰都有可能在前面,這樣一來,如果第一個always語句執(zhí)行在前面,由于阻塞賦值,所以變量a立即得到b的賦值,那么當?shù)诙€always塊執(zhí)行之后,變量b得到a的賦值,由于剛才第一個always執(zhí)行的時候b值賦予了a,所以現(xiàn)在b的值會維持不變,還是原來的值。

同樣的道理,如果第二個always模塊先執(zhí)行了,那么a就會保持自身值不變,從Verilog語法角度來看,兩種結果都是有效的。但是從數(shù)字電路的角度來說,明顯引起了競爭。

下面我們將阻塞賦值修改為非阻塞賦值,以上代碼修改為:

always@(posedge clk)

a 《= b;

always@(posedge clk)

b 《= a;

采用非阻塞賦值,由于原始信號在賦值語句中使用,所以a和b都會得到正確的值,而與順序沒有關系。所以在時序邏輯描述中,阻塞賦值往往會引起條件競爭,所以要采用非阻塞賦值方式賦值。

總結一下

① 在組合邏輯電路描述中采用阻塞賦值

② 時序邏輯描述,采用非阻塞賦值方式賦值

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

    關注

    0

    文章

    10

    瀏覽量

    9343
  • VerilogHDL
    +關注

    關注

    2

    文章

    39

    瀏覽量

    19949
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    飛凌嵌入式ElfBoard-環(huán)境變量之刪除清空環(huán)境變量environ

    如同之前介紹environ獲取環(huán)境變量樣;在加載進程的時候,系統(tǒng)會為每個進程復制份系統(tǒng)環(huán)境變量副本,可以直接通過將全局變量environ賦值為 NULL來清空所有變量。exter
    發(fā)表于 03-26 10:23

    電信接收機 IF/RF 前端 SAW 濾波方案:70–300MHz 選擇性提升 + 阻塞防護 + 匹配驗證全流程(FSF-5050 系列)

    電信接收機 IF/RF 前端易受強帶外干擾引發(fā)壓縮、互調與阻塞,DSP 難補救。本方案以 SAW 濾波器為“門禁”,覆蓋 70–300MHz IF 規(guī)劃,給出放置位置、IL/阻帶/群時延取舍、匹配與 PCB 要點,并提供 VNA+阻塞測試驗證流程,適配 FSF 5×5mm
    的頭像 發(fā)表于 01-29 14:00 ?1264次閱讀
    電信接收機 IF/RF 前端 SAW 濾波方案:70–300MHz 選擇性提升 + <b class='flag-5'>阻塞</b>防護 + 匹配驗證全流程(FSF-5050 系列)

    C語言重點—指針

    和原理(必須清楚掌握)2.1 直接'='賦值int a = 5;printf("a = %d",a); 結果: a = 5 這
    發(fā)表于 01-22 08:23

    解析SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉點開關的卓越性能

    和SN65LVDT125A作為4x4阻塞交叉點開關,憑借其出色的性能和廣泛的應用場景,成為了眾多工程師的首選。今天,我們就來深入了解下這兩款器件。 文件下載: sn65lvdt125a.pdf
    的頭像 發(fā)表于 12-29 17:40 ?756次閱讀

    探索SN65LVDS125A和SN65LVDT125A:4x4阻塞交叉點開關的卓越性能

    和SN65LVDT125A這兩款由德州儀器(TI)推出的4x4阻塞交叉點開關,憑借其出色的性能,在眾多應用場景中展現(xiàn)出強大的競爭力。今天,我們就起來深入了解這兩款器件的特點、應用及相關技術細節(jié)。 文件下載
    的頭像 發(fā)表于 12-29 17:40 ?969次閱讀

    深入解析SN65LVDS250與SN65LVDT250:高性能4x4 LVDS交叉點開關

    ,咱們就來詳細剖析德州儀器(Texas Instruments)推出的SN65LVDS250與SN65LVDT250這兩款4x4阻塞交叉點開關,看看它們究竟有哪些獨特的性能和優(yōu)勢。 文件下載
    的頭像 發(fā)表于 12-29 17:10 ?714次閱讀

    深入剖析SN65LVCP204:4×4千兆交叉點開關的卓越性能與應用

    ×4阻塞交叉點開關,它在高速網(wǎng)絡、電信等領域有著廣泛的應用。 文件下載: sn65lvcp204.pdf 、產(chǎn)品概述 SN65LVCP204是款專為高速數(shù)據(jù)傳輸設計的4×4
    的頭像 發(fā)表于 12-25 10:45 ?718次閱讀

    具有阻塞總線恢復功能的 TCA4307 熱插拔 I2C 總線和 SMBus 緩沖器介紹

    具有阻塞總線恢復功能的 TCA4307 熱插拔 I2C 總線和 SMBus 緩沖器介紹 在電子設計領域,熱插拔 I2C 總線緩沖器是實現(xiàn)系統(tǒng)靈活擴展和維護的重要組件。今天,我們就來深入了解
    的頭像 發(fā)表于 12-17 15:40 ?561次閱讀

    飛凌嵌入式ElfBoard-文件I/O的深入學習之阻塞I/O與阻塞I/O

    可能會使程序阻塞等待,直到有數(shù)據(jù)可讀時才會被喚醒返回。 普通文件的讀寫操作是不會阻塞的,不管讀寫多少個字節(jié)數(shù)據(jù),read或 write定會在有限的時間內返回,所以普通文件定是以
    發(fā)表于 12-01 13:07

    Siumulink模型測試典型問題分享——模型層級設計不合理

    典型測試問題分享-模型層級設計不合理 問題描述: ?重點功能與重點功能混合,導致測試層級選擇困難。 ?模型未體現(xiàn)層級劃分,結構平鋪導致層級圈復雜度異常。 ?部分計算/判斷/賦值等結構位于測試層級之外,存在未覆蓋風險。
    的頭像 發(fā)表于 09-20 12:31 ?3112次閱讀
    Siumulink模型測試典型問題分享——模型層級設計不合理

    CH32V307 串口發(fā)送阻塞的原因?怎么解決?

    */ modbus_set_rx_mode(master); modbus發(fā)送,不知為何阻塞在rt_device_write,初始化 find open 正常
    發(fā)表于 09-18 06:06

    集成DMR858M:ESP32自定義數(shù)字對講機實踐指南

    成功集成DMR858M模塊的核心在于遵循幾個關鍵的工程實踐:設計個能夠應對高瞬態(tài)電流的穩(wěn)健電源系統(tǒng);通過系統(tǒng)化的測試方法確定并實現(xiàn)正確的串行通信校驗和算法;以及采用結構化、阻塞的固件架構來確保系統(tǒng)的實時響應能力。
    的頭像 發(fā)表于 09-03 11:04 ?1315次閱讀
    集成DMR858M:ESP32自定義數(shù)字對講機實踐指南

    【HZ-RK3568開發(fā)板免費體驗】基于 Select Poll的TCP發(fā)服務器

    ,般分為網(wǎng)絡IO(本質就是socket讀寫)和磁盤IO。 IO模型大致可以分為:同步阻塞、同步阻塞、異步、信號驅動。 可細分為5種I/O模型: 1)
    發(fā)表于 08-19 22:01

    matlab appdesigner 表格組件賦值問題,求助

    如上圖所示,我在用matlab2021Ra APP模塊進行編程的時候,想在表格中調入自己編寫的結構數(shù)組,我從網(wǎng)上AI了個程序語句,看著沒問題,但是就是給表格賦值不了,還請各位大神幫忙看下這個是怎么回事,我是初學者,請各位幫
    發(fā)表于 07-12 11:45

    CH32V307串口發(fā)送阻塞的原因?如何解決?

    */ modbus_set_rx_mode(master); modbus發(fā)送,不知為何阻塞在rt_device_write,初始化 find open 正常
    發(fā)表于 06-11 08:05
    任丘市| 延边| 大城县| 海林市| 潢川县| 定襄县| 通许县| 平乡县| 嘉鱼县| 孝昌县| 呼图壁县| 五指山市| 防城港市| 潮州市| 元江| 克拉玛依市| 海口市| 天长市| 长武县| 禹州市| 静宁县| 乐安县| 府谷县| 嵊泗县| 偏关县| 广东省| 墨江| 盘山县| 宁乡县| 永善县| 略阳县| 斗六市| 图们市| 兴业县| 城口县| 京山县| 固阳县| 定南县| 马鞍山市| 民权县| 司法|