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

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

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

assign組合邏輯和always@(*)組合邏輯的區(qū)別

FPGA之家 ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-03-15 14:08 ? 次閱讀

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

always #25 CLK_50Mhz = ~CLK_50Mhz;

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


	

而一般時(shí)序邏輯要寫成

always@(posedge clk or negedge rst)

時(shí)鐘信號(hào)clk上升沿或者復(fù)位信號(hào)rst下降沿的時(shí)候執(zhí)行always塊內(nèi)的代碼。

assign 用于描述組合邏輯always@(敏感事件列表) 用于描述時(shí)序邏輯敏感事件 上升沿 posedge,下降沿 negedge,或電平敏感事件列表中可以包含多個(gè)敏感事件,但不可以同時(shí)包括電平敏感事件和邊沿敏感事件,也不可以同時(shí)包括同一個(gè)信號(hào)的上升沿和下降沿,這兩個(gè)事件可以合并為一個(gè)電平敏感事件。在新的verilog2001中“,”和“or”都可以用來分割敏感事件了,可以用“*”代表所有輸入信號(hào),這可以防止遺漏。合法的寫法:
always@ *
always@ (posedge clk1,negedge clk2)
always@ (a or b)
`timescale 100ns/100ns //定義仿真基本周期為100nsalways #1 clk=~clk //#1代表一個(gè)仿真周期即100ns
所有的assign 和 always 塊都是并行發(fā)生的!并行塊、順序塊將要并行執(zhí)行的語句寫在
fork//語句并行執(zhí)行join
將要順序執(zhí)行的語句寫在
begin//語句順序執(zhí)行end
并行塊和順序塊都可以寫在initial 或 always@ 之后,也就是說寫在塊中的語句是時(shí)序邏輯的對(duì)assign之后不能加塊,實(shí)現(xiàn)組合邏輯只能用逐句的使用assign組合邏輯如果不考慮門的延時(shí)的話當(dāng)然可以理解為瞬時(shí)執(zhí)行的,因此沒有并行和順序之分,并行和順序是針對(duì)時(shí)序邏輯來說的。值得注意的是所有的時(shí)序塊都是并行執(zhí)行的。initial塊只在信號(hào)進(jìn)入模塊后執(zhí)行1次而always塊是由敏感事件作為中斷來觸發(fā)執(zhí)行的。
2:assign 組合邏輯和always@(*)組合邏輯verilog描述組合邏輯一般常用的有兩種:assign賦值語句和always@(*)語句。兩者之間的差別有: 1. 被assign賦值的信號(hào)定義為wire型,被always@(*)結(jié)構(gòu)塊下的信號(hào)定義為reg型,值得注意的是,這里的reg并不是一個(gè)真正的觸發(fā)器,只有敏感列表為上升沿觸發(fā)的寫法才會(huì)綜合為觸發(fā)器,在仿真時(shí)才具有觸發(fā)器的特性。 2. 另外一個(gè)區(qū)別則是更細(xì)微的差別:舉個(gè)例子,
wire a;reg b;assign a = 1'b0;always@(*)b = 1'b0;
在這種情況下,做仿真時(shí)a將會(huì)正常為0, 但是b卻是不定態(tài)。這是為什么?verilog規(guī)定,always@(*)中的*是指該always塊內(nèi)的所有輸入信號(hào)的變化為敏感列表,也就是仿真時(shí)只有當(dāng)always@(*)塊內(nèi)的輸入信號(hào)產(chǎn)生變化,該塊內(nèi)描述的信號(hào)才會(huì)產(chǎn)生變化,而像always@(*) b = 1'b0;這種寫法由于1'b0一直沒有變化,所以b的信號(hào)狀態(tài)一直沒有改變,由于b是組合邏輯輸出,所以復(fù)位時(shí)沒有明確的值(不定態(tài)),而又因?yàn)閍lways@(*)塊內(nèi)沒有敏感信號(hào)變化,因此b的信號(hào)狀態(tài)一直保持為不定態(tài)。事實(shí)上該語句的綜合結(jié)果有可能跟assign一樣(本人沒有去嘗試),但是在功能仿真時(shí)就差之千里了。


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

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

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

    關(guān)注

    5

    文章

    352

    瀏覽量

    39717
  • 組合邏輯
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    10019
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67770

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

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    soc中的組合邏輯和時(shí)序邏輯應(yīng)用說明

    芯片設(shè)計(jì)是現(xiàn)代電子設(shè)備的重要組成部分,其中組合邏輯和時(shí)序邏輯是芯片設(shè)計(jì)中非常重要的概念。組合邏輯和時(shí)序
    的頭像 發(fā)表于 08-30 09:32 ?1060次閱讀

    明德?lián)P點(diǎn)撥FPGA高手進(jìn)階 第五章 verilog快速掌握---5.3 組合邏輯

    Verilog的程序代碼,組合邏輯的代碼結(jié)構(gòu)如下:always@(*) begin代碼語句;end或者是assign 代碼語句;代碼中@后是敏感列表,當(dāng)括號(hào)內(nèi)的條件滿足時(shí),就執(zhí)行一次。
    發(fā)表于 11-21 09:23

    【技巧分享】時(shí)序邏輯組合邏輯區(qū)別和使用

    根據(jù)邏輯電路的不同特點(diǎn),數(shù)字電路分為組合邏輯和時(shí)序邏輯,明德?lián)P粉絲里的同學(xué)提出,無法正確區(qū)分,今天讓我跟一起來學(xué)習(xí)一下兩種邏輯
    發(fā)表于 03-01 19:50

    在FPGA中何時(shí)用組合邏輯或時(shí)序邏輯

    必須要用組合邏輯或者時(shí)序邏輯?例如:在verilog中,在always中被賦值了就必須是reg類型,assign賦值了就必須是wire類型。
    發(fā)表于 03-06 16:31

    組合邏輯電路的分析與設(shè)計(jì)-邏輯代數(shù)

    組合邏輯電路的分析與設(shè)計(jì)-邏輯代數(shù)   在任何時(shí)刻,輸出狀態(tài)只決定于同一時(shí)刻各輸入狀態(tài)的組合,而與先前狀態(tài)無關(guān)的邏輯電路稱為
    發(fā)表于 04-07 10:07 ?3075次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路的分析與設(shè)計(jì)-<b class='flag-5'>邏輯</b>代數(shù)

    組合邏輯電路的設(shè)計(jì)

    組合邏輯電路的設(shè)計(jì) 組合邏輯電路的設(shè)計(jì)與分析過程相反,其步驟大致如下: ?。?)根據(jù)對(duì)電路邏輯功能的要求,列出真值表;  (2)由真值表寫
    發(fā)表于 04-07 10:12 ?1.3w次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路的設(shè)計(jì)

    FPGA中組合邏輯和時(shí)序邏輯區(qū)別

    數(shù)字電路根據(jù)邏輯功能的不同特點(diǎn),可以分成兩大類,一類叫組合邏輯電路(簡(jiǎn)稱組合電路),另一類叫做時(shí)序邏輯電路(簡(jiǎn)稱時(shí)序電路)。
    發(fā)表于 11-20 12:26 ?8779次閱讀

    什么是組合邏輯電路_組合邏輯的分類

    組合邏輯電路是無記憶數(shù)字邏輯電路,其任何時(shí)刻的輸出僅取決于其輸入的組合.
    的頭像 發(fā)表于 06-22 10:53 ?4.9w次閱讀
    什么是<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路_<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>的分類

    Verilog進(jìn)行組合邏輯設(shè)計(jì)時(shí)有哪些注意事項(xiàng)

    ;第二種就是用assign 關(guān)鍵字描述的數(shù)據(jù)流賦值語句。 ②always 模塊的敏感表為電平敏感信號(hào)的電路可幾乎可以完成對(duì)所有組合邏輯電路的建模。a
    的頭像 發(fā)表于 06-23 17:45 ?5152次閱讀
    Verilog進(jìn)行<b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>設(shè)計(jì)時(shí)有哪些注意事項(xiàng)

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

    @,那就是不會(huì)滿足特定條件才執(zhí)行,而是執(zhí)行完一次后立馬執(zhí)行下一次,一直重復(fù)執(zhí)行,比如testbench里面產(chǎn)生50Mhz的時(shí)鐘就(假設(shè)時(shí)間尺度是1ns)可以寫成 always #25 CLK_50Mhz = ~CLK_50Mhz; 一般always@(*)是指里面的語句是
    的頭像 發(fā)表于 06-27 11:47 ?1.5w次閱讀

    組合邏輯電路和時(shí)序邏輯電路的區(qū)別和聯(lián)系

    ,與電路原來的狀態(tài)無關(guān)。而時(shí)序邏輯電路在邏輯功能上的特點(diǎn)是任意時(shí)刻的輸出不僅取決于當(dāng)時(shí)的輸入信號(hào),而且還取決于電路原來的狀態(tài),或者說,還與以前的輸入有關(guān)。下面小編給大家介紹一下“組合邏輯
    的頭像 發(fā)表于 03-14 17:06 ?6274次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路和時(shí)序<b class='flag-5'>邏輯</b>電路的<b class='flag-5'>區(qū)別</b>和聯(lián)系

    組合邏輯電路之與或邏輯

    當(dāng)邏輯電路由多個(gè)邏輯門組成且不含存儲(chǔ)電路,對(duì)于給定的輸入變量組合將產(chǎn)生確定的輸出,則這種邏輯電路稱為組合
    的頭像 發(fā)表于 02-04 11:46 ?1204次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>邏輯</b>電路之與或<b class='flag-5'>邏輯</b>

    常用的組合邏輯電路

    組合邏輯電路和時(shí)序邏輯電路是數(shù)字電路中兩種重要的邏輯電路類型,它們主要區(qū)別在于其輸出信號(hào)的依賴關(guān)系和對(duì)時(shí)間的敏感性。
    的頭像 發(fā)表于 02-04 16:00 ?3252次閱讀

    assign語句和always語句的用法

    Assign語句和Always語句是在硬件描述語言(HDL)中常用的兩種語句,用于對(duì)數(shù)字電路建模和設(shè)計(jì)。Assign語句用于連續(xù)賦值,而Always語句用于時(shí)序
    的頭像 發(fā)表于 02-22 16:24 ?1556次閱讀

    什么是組合邏輯電路和時(shí)序邏輯電路?它們之間的區(qū)別是什么

    什么是組合邏輯電路和時(shí)序邏輯電路?時(shí)序邏輯電路和組合邏輯電路的
    的頭像 發(fā)表于 03-26 16:12 ?2618次閱讀