本(běn)节(jié)的(de)文(wén)檔編号(hào):001100000062
需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):001100000072
1、本(běn)节(jié)主(zhǔ)要(yào)介紹,时(shí)序邏輯的(de)代(dài)碼,一(yī)般有(yǒu)两(liǎng)種(zhǒng):同(tóng)步複位时(shí)序邏輯和(hé)异(yì)步複位时(shí)序邏輯(本(běn)教学統一(yī)采用(yòng)异(yì)步时(shí)鐘(zhōng)邏輯);D型觸發(fà)器的(de)介紹,包(bāo)括:D觸發(fà)器的(de)結構、波(bō)形、代(dài)碼以(yǐ)及(jí)如(rú)何看(kàn)FPGA波(bō)形;时(shí)鐘(zhōng)的(de)介紹,时(shí)鐘(zhōng)的(de)意(yì)義,时(shí)鐘(zhōng)頻率和(hé)时(shí)鐘(zhōng)周期(qī)的(de)換算;时(shí)序邏輯代(dài)碼和(hé)硬(yìng)件(jiàn)的(de)關(guān)系(xì),即評估verilog代(dài)碼好(hǎo)壞的(de)最(zuì)基本(běn)标(biāo)準,不(bù)是(shì)看(kàn)代(dài)碼行數而(ér)是(shì)看(kàn)硬(yìng)件(jiàn);阻塞賦值和(hé)非(fēi)阻塞賦值,前(qián)者(zhě)位順序賦值,後(hòu)者(zhě)位同(tóng)时(shí)賦值。
2、这(zhè)是(shì)ALTERA和(hé)VIVADO文(wén)檔
6.5 阻塞賦值和(hé)非(fēi)阻塞賦值
在(zài)always語(yǔ)句(jù)块(kuài)中(zhōng),Verilog語(yǔ)言支持(chí)两(liǎng)種(zhǒng)類(lèi)型的(de)賦值:阻塞賦值和(hé)非(fēi)阻塞賦值。阻塞賦值使用(yòng)“=”語(yǔ)句(jù);非(fēi)阻塞賦值使用(yòng)“<=”語(yǔ)句(jù)。
阻塞賦值:在(zài)一(yī)个(gè)“begin…end”的(de)多(duō)行賦值語(yǔ)句(jù),先(xiān)執行當前(qián)行的(de)賦值語(yǔ)句(jù),再執行下(xià)一(yī)行的(de)賦值語(yǔ)句(jù)。
非(fēi)阻塞賦值:在(zài)一(yī)个(gè)“begin…end”的(de)多(duō)行賦值語(yǔ)句(jù),在(zài)同(tóng)一(yī)时(shí)間(jiān)內(nèi)同(tóng)时(shí)賦值。
|
|
begin
c = a;
d = c + a;
end
begin
c <= a;
d <= c + a;
end
|
上(shàng)面(miàn)两(liǎng)个(gè)例子中(zhōng),1到(dào)4行部(bù)分(fēn)是(shì)阻塞賦值,程序会(huì)先(xiān)執行第(dì)2行,得到(dào)結果(guǒ)後(hòu)再執行第(dì)3行。6至(zhì)9行这(zhè)一(yī)段(duàn)是(shì)非(fēi)阻塞賦值,第(dì)7行和(hé)第(dì)8行的(de)賦值語(yǔ)句(jù)是(shì)同(tóng)时(shí)執行的(de)。
具體(tǐ)分(fēn)析一(yī)下(xià)这(zhè)两(liǎng)段(duàn)代(dài)碼这(zhè)件(jiàn)的(de)區(qū)别:假設當前(qián)c的(de)值为(wèi)0,d的(de)值为(wèi)0,a的(de)新值为(wèi)1。
阻塞賦值的(de)執行过(guò)程和(hé)結果(guǒ)为(wèi):程序先(xiān)執行第(dì)2行,此(cǐ)时(shí)c的(de)值将更(gèng)新为(wèi)1,然後(hòu)再執行3行,此(cǐ)时(shí)c+a也(yě)就(jiù)是(shì)相當于(yú)1+1=2,即d的(de)值为(wèi)2。
非(fēi)阻塞賦值的(de)執行过(guò)程和(hé)結果(guǒ)为(wèi):程序同(tóng)时(shí)執行第(dì)7行和(hé)8行。需要(yào)特(tè)别注意(yì)是(shì),在(zài)執行第(dì)8行的(de)时(shí)候,第(dì)7行還(huán)并未執行,这(zhè)也(yě)就(jiù)意(yì)味着c的(de)值還(huán)沒(méi)有(yǒu)發(fà)生(shēng)變(biàn)化(huà),即此(cǐ)时(shí)c的(de)值为(wèi)0。同(tóng)时(shí)執行的(de)結果(guǒ)是(shì),c的(de)值为(wèi)1,d的(de)值为(wèi)1。
根(gēn)據(jù)笔(bǐ)者(zhě)的(de)規範要(yào)求,組合邏輯中(zhōng)應(yìng)使用(yòng)阻塞賦值“=”,时(shí)序邏輯中(zhōng)應(yìng)使用(yòng)非(fēi)阻塞賦值“<=”。读(dú)者(zhě)可(kě)以(yǐ)将这(zhè)个(gè)規則牢牢記(jì)住,按照这(zhè)一(yī)規則進(jìn)行設計(jì)絕对(duì)不(bù)会(huì)發(fà)生(shēng)錯誤。制定(dìng)这(zhè)个(gè)規範的(de)原因(yīn)并不(bù)是(shì)考慮語(yǔ)法需要(yào),而(ér)是(shì)为(wèi)了(le)正(zhèng)确的(de)進(jìn)行硬(yìng)件(jiàn)描述。