最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

功能描述-組合邏輯

2022-12-16 07:22 作者:明德?lián)P易老師  | 我要投稿

本節(jié)的文檔編號(hào):001100000061

需要看對(duì)應(yīng)的視頻,請(qǐng)點(diǎn)擊視頻編號(hào):?001100000053

1、本節(jié)主要進(jìn)行組合邏輯的介紹,包括:程序語句(assign語句、always語句),數(shù)字進(jìn)制(二進(jìn)制、不定態(tài)、高阻態(tài)),算數(shù)運(yùn)算符(加、減、乘、除運(yùn)算符),邏輯運(yùn)算符(邏輯與、或、非運(yùn)算符),按位邏輯運(yùn)算符(單目按位與、或、非運(yùn)算符,雙目按位與、或、異或運(yùn)算符),關(guān)系運(yùn)算符,移位運(yùn)算符(左移、右移運(yùn)算符),條件運(yùn)算符(三目運(yùn)算符、if語句、case語句、選擇語句等),拼接運(yùn)算符;
2、ALTERA和VIVADO文檔

第5節(jié)?功能描述-組合邏輯


5.1?程序語句

5.1.1assign語句

? ? assign語句是連續(xù)賦值語句,一般是將一個(gè)變量的值不間斷地賦值給另一變量,兩個(gè)變量之間就類似于被導(dǎo)線連在了一起,

習(xí)慣上當(dāng)做連線用。assign語句的基本格式是:

assign a = b?(邏輯運(yùn)算符)c …;

assign語句的功能屬于組合邏輯的范疇,應(yīng)用范圍可以概括為一下幾點(diǎn):

(1)持續(xù)賦值;

(2)連線;

(3)對(duì)wire型變量賦值,wire是線網(wǎng),相當(dāng)于實(shí)際的連接線,

如果要用assign直接連接,就用wire型變量,wire型變量的值隨時(shí)發(fā)生變化。

需要說明的是,多條assign連續(xù)賦值語句之間互相獨(dú)立、并行執(zhí)行。


5.1.2always語句

? ? always?語句是條件循環(huán)語句,執(zhí)行機(jī)制是通過對(duì)一個(gè)稱為敏感變量表的事件驅(qū)動(dòng)來實(shí)現(xiàn)的,

下面會(huì)具體講到。always?語句的基本格式是:

always @(敏感事件)begin

? ?? ??程序語句

end

always是“一直、總是”的意思,@后面跟著事件。整個(gè)always的意思是:當(dāng)敏感事件的條件滿足時(shí),

就執(zhí)行一次“程序語句”。敏感事件每滿足一次,就執(zhí)行“程序語句”一次。

這段程序的意思是:當(dāng)信號(hào)a或者信號(hào)b或者信號(hào)d發(fā)生變化時(shí),就執(zhí)行一次下面語句。

在執(zhí)行該段語句時(shí),首先判斷信號(hào)sel是否為0,如果為0,則執(zhí)行第3行代碼。如果sel不為0,則執(zhí)行第5行代碼。

需要強(qiáng)調(diào)的是,a、b、c任意一個(gè)發(fā)生變化一次,2行至5行也只執(zhí)行一次,不會(huì)執(zhí)行第二次。

此處需要注意,僅僅sel這個(gè)信號(hào)發(fā)生變化是不會(huì)執(zhí)行第2行到5行代碼的,通常這并不符合設(shè)計(jì)者的想法。

例如,一般設(shè)計(jì)者的想法是:當(dāng)sel為0時(shí)c的結(jié)果是a+b;當(dāng)sel不為0時(shí)c的結(jié)果是a+d。

但如果觸發(fā)條件沒有發(fā)生改變,雖然sel由0變1,但此時(shí)c的結(jié)果仍是a+b。因此,這并不是一個(gè)規(guī)范的設(shè)計(jì)思維。

因此,按照設(shè)計(jì)者的想法重新對(duì)代碼進(jìn)行設(shè)計(jì):當(dāng)信號(hào)a或者信號(hào)b或者信號(hào)d或者信號(hào)sel發(fā)生變化時(shí),

就執(zhí)行2行至5行。這樣就可以確保sel信號(hào)值為0時(shí),c的結(jié)果一定為a+b,當(dāng)sel不為0時(shí),c的結(jié)果一定是a+d。

因此要在敏感列表中加入sel,其代碼如下所示。

當(dāng)敏感信號(hào)非常多時(shí)很容易就會(huì)把敏感信號(hào)遺漏,為避免這種情況可以用“*”來代替。

這個(gè)“*”是指“程序語句”中所有的條件信號(hào),即a、b、d、sel(不包括c),筆者也推薦這種寫法,

其具體代碼如下所示。

這種條件信號(hào)變化結(jié)果立即變化的always語句被稱為“組合邏輯”。

上述代碼敏感列表是“posedge clk”,其中posedge表示上升沿。也就是說,

當(dāng)clk由0變成1的瞬間執(zhí)行一次程序代碼,即第2至5行,其他時(shí)刻c的值保持不變。

要特別強(qiáng)調(diào)的是:如果clk沒有由0變成1,那么即使a、b、d、sel發(fā)生變化,c的值也是不變的。

可以看到上述代碼的敏感列表是“negedge clk”,其中negedge表示下降沿。

也就是說,當(dāng)clk由1變成0的瞬間執(zhí)行一次程序代碼,即第2至5行,其他時(shí)刻c的值保持不變。

要特別強(qiáng)調(diào)的是,如果clk沒有由1變成0,那么即使a、b、d、sel發(fā)生變化,c的值也是不變的。

上述代碼的敏感列表是“posedge clk or negedge rst_n”,也就是說,當(dāng)clk由0變成1的瞬間,

或者rst_n由1變化0的瞬間,執(zhí)行一次程序代碼,即第2至8行,其他時(shí)刻c的值保持不變。

這種信號(hào)邊沿觸發(fā),即信號(hào)上升沿或者下降沿才變化的always,被稱為“時(shí)序邏輯”,

此時(shí)信號(hào)clk是時(shí)鐘。注意:識(shí)別信號(hào)是不是時(shí)鐘不是看名稱,而是看這個(gè)信號(hào)放在哪里,

只有放在敏感列表并且是邊沿觸發(fā)的才是時(shí)鐘。而信號(hào)rst_n是復(fù)位信號(hào),同樣也不是看名字來判斷,

而是放在敏感列表中且同樣邊沿觸發(fā),更關(guān)鍵的是“程序語句”首先判斷了rst_n的值,

這表示rst_n優(yōu)先級(jí)最高,一般都是用于復(fù)位。

設(shè)計(jì)時(shí)需要注意以下幾點(diǎn):

1、組合邏輯的always?語句中敏感變量必須寫全,或者用“*”代替。

2、組合邏輯器件的賦值采用阻塞賦值“=,時(shí)序邏輯器件的賦值語句采用非阻塞賦值“<=”,

具體原因見“阻塞賦值和非阻塞賦值”一節(jié)內(nèi)容。

相關(guān)視頻:https://www.bilibili.com/video/BV1yf4y1R7gH?p=7

相關(guān)視頻:https://www.bilibili.com/video/BV1yf4y1R7gH?p=7



功能描述-組合邏輯的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
玉屏| 西华县| 云南省| 三都| 米泉市| 盐边县| 武宣县| 正安县| 白河县| 丰都县| 民和| 德州市| 克什克腾旗| 白沙| 儋州市| 南阳市| 壶关县| 磴口县| 玉田县| 青铜峡市| 达州市| 鄱阳县| 舟山市| 彭山县| 南康市| 铜陵市| 烟台市| 芒康县| 津南区| 班戈县| 肇州县| 乐至县| 沈丘县| 上高县| 运城市| 霍山县| 内黄县| 滨海县| 冷水江市| 淮滨县| 安乡县|