日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

[初学Verilog笔记]使用assign还是always

發(fā)布時(shí)間:2023/12/8 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [初学Verilog笔记]使用assign还是always 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、在語(yǔ)法上
(1)assign屬于數(shù)據(jù)流建模,為連續(xù)賦值語(yǔ)句。相當(dāng)于連線,一般是將一個(gè)變量的值不間斷地賦值給另一個(gè)變量,對(duì)應(yīng)的被賦值變量為wire型,只要輸入有變化,輸出馬上有反應(yīng)。
(2)always屬于行為級(jí)建模,為過(guò)程賦值語(yǔ)句。對(duì)應(yīng)的被賦值變量為reg型,一定要有觸發(fā),輸出才會(huì)有反應(yīng)。

二、在應(yīng)用功能上
(1)變量缺省時(shí)默認(rèn)為1位wire類型。專門指定出wire類型,可能是多位或?yàn)槭钩绦蛞鬃x。wire只能被assign連續(xù)賦值。
(2)reg只能在initial和always中賦值。

三、在綜合結(jié)果上
(1) 在連續(xù)賦值語(yǔ)句中,wire綜合出來(lái)就是一條線,相當(dāng)于一個(gè)邏輯之后直接連了一條線,這個(gè)邏輯對(duì)應(yīng)于表達(dá)式的右側(cè),而這條線就對(duì)應(yīng)于wire。
(2)在過(guò)程賦值語(yǔ)句中,表達(dá)式右側(cè)的計(jì)算結(jié)果在某種條件的觸發(fā)下放到一個(gè)變量當(dāng)中,而這個(gè)變量可以聲明成reg類型的。根據(jù)觸發(fā)條件的不同,過(guò)程賦值語(yǔ)句可以建模不同的硬件結(jié)構(gòu):①如果這個(gè)條件是時(shí)鐘的上升沿或下降沿,那么這個(gè)硬件模型就是一個(gè)觸發(fā)器;②如果這個(gè)條件是某一信號(hào)的高電平或低電平,那么這個(gè)硬件模型就是一個(gè)鎖存器;③如果這個(gè)條件是賦值語(yǔ)句右側(cè)任意操作數(shù)的變化,那么這個(gè)硬件模型就是一個(gè)組合邏輯。
使用always語(yǔ)句可以構(gòu)成時(shí)序電路,其基礎(chǔ)就是時(shí)鐘和使能兩個(gè)關(guān)鍵信號(hào)。時(shí)鐘在always模塊中不再出現(xiàn)(時(shí)鐘信號(hào)在敏感信號(hào)作用下的值一直相等,沒(méi)有使用在內(nèi)部的意義,當(dāng)然可以轉(zhuǎn)化后使用)。而對(duì)于使能信號(hào),則是會(huì)有一個(gè)if判斷語(yǔ)句,而且處于第一優(yōu)先級(jí)。這就是異步復(fù)位。如果不在敏感列表而處于第一優(yōu)先級(jí),則是同步復(fù)位信號(hào)。

四、使用心得
(1)在Verilog module中的所有過(guò)程塊(如initial塊和always塊)、連續(xù)賦值語(yǔ)句(如assign語(yǔ)句)和實(shí)例引用都是并行的。在同一module中這三者出現(xiàn)的先后順序沒(méi)有關(guān)系。
(2)只有連續(xù)賦值語(yǔ)句assign和實(shí)例引用語(yǔ)句可以獨(dú)立于過(guò)程塊而存在于module的功能定義部分。
(3)連續(xù)賦值assign語(yǔ)句獨(dú)立于過(guò)程塊,所以不能在always過(guò)程塊中使用assign語(yǔ)句。

輸入端口可以由wire/reg驅(qū)動(dòng),但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅(qū)動(dòng)wire;若輸出端口在過(guò)程塊中賦值則為reg型,若在過(guò)程塊外賦值則為net型。用關(guān)鍵詞inout聲明一個(gè)雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。

在設(shè)計(jì)中,輸入信號(hào)一般來(lái)說(shuō)你是不知道上一級(jí)是寄存器輸出還是組合邏輯輸出,那么對(duì)于本級(jí)來(lái)說(shuō)就是一根導(dǎo)線,也就是wire型。而輸出信號(hào)則由你自己來(lái)決定是寄存器輸出還是組合邏輯輸出,wire型、reg型都可以。但一般的,整個(gè)設(shè)計(jì)的外部輸出(即最頂層模塊的輸出),要求是寄存器輸出,較穩(wěn)定、扇出能力也較好。

always可以實(shí)現(xiàn)兩種電路,是不是可以不用assign來(lái)實(shí)現(xiàn)設(shè)計(jì)?理論上可以,但是會(huì)加大設(shè)計(jì)的難度。首先要明確的是,always只能對(duì)reg變量賦值,這導(dǎo)致wire變量賦值困難。如果沒(méi)有assign,每個(gè)wire變量都要加入一個(gè)reg緩沖。可以簡(jiǎn)單理解:開(kāi)始時(shí)只有always,可以實(shí)現(xiàn)基本的功能,然后將其中的組合邏輯提取出來(lái)構(gòu)成assign。同時(shí)引入了wire。也就是assign是always的補(bǔ)充(只是方便理解,沒(méi)有根據(jù))。

always可以實(shí)現(xiàn)兩種電路,是不是可以不用assign來(lái)實(shí)現(xiàn)設(shè)計(jì)?理論上可以,但是會(huì)加大設(shè)計(jì)的難度。首先要明確的是,always只能對(duì)reg變量賦值,這導(dǎo)致wire變量賦值困難。如果沒(méi)有assign,每個(gè)wire變量都要加入一個(gè)reg緩沖。可以簡(jiǎn)單理解:開(kāi)始時(shí)只有always,可以實(shí)現(xiàn)基本的功能,然后將其中的組合邏輯提取出來(lái)構(gòu)成assign。同時(shí)引入了wire。也就是assign是always的補(bǔ)充(只是方便理解,沒(méi)有根據(jù))。

總結(jié)

以上是生活随笔為你收集整理的[初学Verilog笔记]使用assign还是always的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。