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

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

3天內不再提示

你們知道always,assign和always@(*)之間的區(qū)別嗎

FPGA之家 ? 來源:碎碎思 ? 作者:碎碎思 ? 2021-06-27 11:47 ? 次閱讀

1.always@后面內容是敏感變量,always@(*)里面的敏感變量為*,意思是說敏感變量由綜合器根據(jù)always里面的輸入變量自動添加,也就是所有變量都是敏感列表,不用自己考慮。2.如果沒有@,那就是不會滿足特定條件才執(zhí)行,而是執(zhí)行完一次后立馬執(zhí)行下一次,一直重復執(zhí)行,比如testbench里面產生50Mhz的時鐘就(假設時間尺度是1ns)可以寫成

always #25 CLK_50Mhz = ~CLK_50Mhz;

一般always@(*)是指里面的語句是組合邏輯的。*代替了敏感變量。

而一般時序邏輯要寫成

always@(posedge clk or negedge rst)

時鐘信號clk上升沿或者復位信號rst下降沿的時候執(zhí)行always塊內的代碼。

assign 用于描述組合邏輯always@(敏感事件列表) 用于描述時序邏輯敏感事件 上升沿 posedge,下降沿 negedge,或電平敏感事件列表中可以包含多個敏感事件,但不可以同時包括電平敏感事件和邊沿敏感事件,也不可以同時包括同一個信號的上升沿和下降沿,這兩個事件可以合并為一個電平敏感事件。在新的verilog2001中“,”和“or”都可以用來分割敏感事件了,可以用“*”代表所有輸入信號,這可以防止遺漏。合法的寫法:

always@ *

always@ (posedge clk1,negedge clk2)

always@ (a or b)

`timescale 100ns/100ns //定義仿真基本周期為100nsalways #1 clk=~clk //#1代表一個仿真周期即100ns

所有的assign 和 always 塊都是并行發(fā)生的!并行塊、順序塊將要并行執(zhí)行的語句寫在

fork//語句并行執(zhí)行join

將要順序執(zhí)行的語句寫在

begin//語句順序執(zhí)行end

并行塊和順序塊都可以寫在initial 或 always@ 之后,也就是說寫在塊中的語句是時序邏輯的對assign之后不能加塊,實現(xiàn)組合邏輯只能用逐句的使用assign組合邏輯如果不考慮門的延時的話當然可以理解為瞬時執(zhí)行的,因此沒有并行和順序之分,并行和順序是針對時序邏輯來說的。值得注意的是所有的時序塊都是并行執(zhí)行的。initial塊只在信號進入模塊后執(zhí)行1次而always塊是由敏感事件作為中斷來觸發(fā)執(zhí)行的。

2:assign 組合邏輯和always@(*)組合邏輯verilog描述組合邏輯一般常用的有兩種:assign賦值語句和always@(*)語句。兩者之間的差別有: 1. 被assign賦值的信號定義為wire型,被always@(*)結構塊下的信號定義為reg型,值得注意的是,這里的reg并不是一個真正的觸發(fā)器,只有敏感列表為上升沿觸發(fā)的寫法才會綜合為觸發(fā)器,在仿真時才具有觸發(fā)器的特性。 2. 另外一個區(qū)別則是更細微的差別:舉個例子,

wire a;reg b;assign a = 1‘b0;always@(*)b = 1’b0;

在這種情況下,做仿真時a將會正常為0, 但是b卻是不定態(tài)。這是為什么?verilog規(guī)定,always@(*)中的*是指該always塊內的所有輸入信號的變化為敏感列表,也就是仿真時只有當always@(*)塊內的輸入信號產生變化,該塊內描述的信號才會產生變化,而像always@(*) b = 1‘b0; 這種寫法由于1’b0一直沒有變化,所以b的信號狀態(tài)一直沒有改變。

由于b是組合邏輯輸出,所以復位時沒有明確的值(不定態(tài)),而又因為always@(*)塊內沒有敏感信號變化,因此b的信號狀態(tài)一直保持為不定態(tài)。事實上該語句的綜合結果有可能跟assign一樣(本人沒有去嘗試),但是在功能仿真時就差之千里了。

編輯:jq

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

    關注

    14

    文章

    1995

    瀏覽量

    61012
  • 綜合器
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6436
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17104

原文標題:Verilog 里面,always,assign和always@(*)區(qū)別

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PLC與IO卡之間區(qū)別

    在工業(yè)自動化系統(tǒng)中扮演著不同的角色,具有不同的功能和應用場景。本文將從定義、功能、結構、應用等多個方面詳細闡述PLC與IO卡之間區(qū)別。
    的頭像 發(fā)表于 06-11 14:42 ?1348次閱讀

    關于Verilog的一些基本語法

    語句 ①、assignalways賦值語句的區(qū)別 1、assign賦值語句: A、assign只能實現(xiàn)組合邏輯; B、
    發(fā)表于 05-31 18:31

    關于FX3同步Slave FIFO非突發(fā)傳輸?shù)囊蓡柷蠼?/a>

    的嗎?比如下面的Verilog代碼片段: always@(posedge clk)begin ... //該時鐘沿之前的兩個時鐘周期SLRD為低 if(flag==1\'d1)//如果對應地址的flag為高,則采樣數(shù)據(jù)總線 data_buf=data_i;//將數(shù)據(jù)總線的值賦給data_buf數(shù)據(jù)緩沖區(qū)
    發(fā)表于 05-31 06:28

    DAP miniwiggler和XMC_LINK_SEGGER_V1之間區(qū)別是什么?

    我想知道 DAP miniwiggler 和XMC_LINK_SEGGER_V1之間區(qū)別。
    發(fā)表于 05-27 06:50

    STM8L152和STM8L052之間區(qū)別是什么?

    求指點STM8L152和STM8L052之間區(qū)別,公司項目換了STM8L052,想知道它和STM8L152之間區(qū)別,我指的不是在功能上刪
    發(fā)表于 04-29 08:24

    算法系列:基于 FPGA 的圖像邊緣檢測系統(tǒng)設計(sobel算法)

    ;gt;>8 與 a [15:8]是一樣的。 核心代碼如下: always@(posedge clk or negedge rst_n)begin if(rst_n==1
    發(fā)表于 03-26 16:40

    assign語句和always語句的用法

    Assign語句和Always語句是在硬件描述語言(HDL)中常用的兩種語句,用于對數(shù)字電路建模和設計。Assign語句用于連續(xù)賦值,而Always語句用于時序邏輯建模。本文將詳細探討
    的頭像 發(fā)表于 02-22 16:24 ?2169次閱讀

    verilog中initial和always區(qū)別

    Verilog是一種硬件描述語言(HDL),用于設計和模擬數(shù)字電路。在Verilog中,關鍵字initial和always都是用于描述電路行為的特殊語句。它們被用來生成仿真模型,并控制模擬器的啟動
    的頭像 發(fā)表于 02-22 16:09 ?2339次閱讀

    扒一扒雕銑機、雕刻機和加工中心之間區(qū)別

    中心、雕銑機、雕刻機,之間有什么區(qū)別?相信這句話很多剛剛加入這個圈的朋友都會問,然后在買機械設備的時候不太懂,不知道怎么區(qū)分,到底應該買什么樣的設備,才能達到自己的需求,今天小編就為大家扒一扒他們三者
    的頭像 發(fā)表于 01-15 09:48 ?663次閱讀

    知道光纖尾纖和光纖跳線的區(qū)別嗎?

    知道光纖尾纖和光纖跳線的區(qū)別嗎? 光纖尾纖和光纖跳線是兩種常見的光纖連接組件,它們在光纖通信中起到非常關鍵的作用。雖然它們都是用于連接光纖設備的,但在很多方面有著明顯的區(qū)別。下面將詳細介紹光纖尾纖
    的頭像 發(fā)表于 12-27 16:11 ?1146次閱讀

    assign和signed的聯(lián)合背刺事件

    沒想到啊沒想到啊,有一天會被濃眉大眼的assign背刺!想當年在always消失術里,在X態(tài)分析里,在xprop平替策略里,把assign捧的這么高,優(yōu)點說了800多項,然后今天一仿真出bug了?!
    的頭像 發(fā)表于 12-04 11:33 ?350次閱讀
    <b class='flag-5'>assign</b>和signed的聯(lián)合背刺事件

    什么是always on buffer?什么情況下需要插always on buffer?

    相比普通的buffer cell,always on buffer(AOB)有secondary always on pin,可以讓AOB即使在primary power off的情況下保持on的狀態(tài);AOB在secondary pg pin off的情況下也是off的。
    的頭像 發(fā)表于 12-01 15:31 ?2270次閱讀
    什么是<b class='flag-5'>always</b> on buffer?什么情況下需要插<b class='flag-5'>always</b> on buffer?

    什么是Isolation Cell?低功耗設計基礎—Isolation Cell

    如圖所示,當一條net從一個power down domain到always on domain,就需要插入Isolation Cell;
    的頭像 發(fā)表于 12-01 15:11 ?5438次閱讀
    什么是Isolation Cell?低功耗設計基礎—Isolation Cell

    變壓器和電源是不是同一種產品?你知道他們之間有什么區(qū)別嗎?

    變壓器和電源是不是同一種產品?你知道他們之間有什么區(qū)別嗎? 變壓器和電源不是同一種產品,它們在功能和作用上有很大的區(qū)別。本文將詳細討論變壓器和電源的定義、原理、結構、應用及其
    的頭像 發(fā)表于 11-20 15:07 ?2748次閱讀

    觸發(fā)器的應用案例

    今天群友遇到一個在綜合的時候報錯ambiguous clock in event control的問題,我們就來看看一個always塊會生成什么樣的電路。
    的頭像 發(fā)表于 11-13 09:55 ?1055次閱讀
    觸發(fā)器的應用案例