電子技術(shù)課程設(shè)計(jì)FPGA_第1頁(yè)
電子技術(shù)課程設(shè)計(jì)FPGA_第2頁(yè)
電子技術(shù)課程設(shè)計(jì)FPGA_第3頁(yè)
電子技術(shù)課程設(shè)計(jì)FPGA_第4頁(yè)
電子技術(shù)課程設(shè)計(jì)FPGA_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、電子技術(shù)課程設(shè)計(jì)FPGA實(shí)驗(yàn)班級(jí):微82姓名:李虹江學(xué)號(hào):2008011224實(shí)驗(yàn)一基本組合邏輯電路設(shè)計(jì)實(shí)驗(yàn)1.1 加法器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1、掌握加法器的設(shè)計(jì)原理工作原理和設(shè)計(jì)方法;2、理解逐次進(jìn)位和超前進(jìn)位加法器的原理。二、實(shí)驗(yàn)原理 數(shù)A、加數(shù)B 以及低一位來(lái)的進(jìn)位Cin,輸出為本位的和S 及向高一位的進(jìn)位Co。根據(jù)全加器功能,列出真值表,如表1.1 所示。根據(jù)表1.1 可以得到:多比特的全加器可以通過(guò)一位全加器和邏輯門得到。根據(jù)其結(jié)構(gòu)可以分為逐次進(jìn)位加法器和超前進(jìn)位加法器(如圖1.2 和圖1.3 所示。逐次進(jìn)位全加器直接由一位全加器級(jí)聯(lián)得到,結(jié)構(gòu)簡(jiǎn)單。但是后一級(jí)的結(jié)果需要等待前一級(jí)的進(jìn)位

2、輸出計(jì)算完成,多比特的加法器延時(shí)較長(zhǎng)。超前進(jìn)位加法器可以緩解這個(gè)問(wèn)題。超前進(jìn)位加法器是一種通過(guò)縮短進(jìn)位信號(hào)的生成時(shí)間加快運(yùn)算速度的電路。這里采用進(jìn)位產(chǎn)生函數(shù)和進(jìn)位傳遞函數(shù)。其中,P 為進(jìn)位傳遞函數(shù),G 為進(jìn)位產(chǎn)生函數(shù)。當(dāng)G 為1 時(shí),表示A 和B都為1,這時(shí)不管Cin 為何值都會(huì)產(chǎn)生進(jìn)位信號(hào),稱為進(jìn)位生成信號(hào)。而當(dāng)P 為1 時(shí),意味著A 和B 中有一個(gè)為1,另一個(gè)為0,如果Cin 為1,則產(chǎn)生進(jìn)位,否則沒(méi)有進(jìn)位,類似把Cin 的值傳給了Co,因此稱為進(jìn)位傳遞函數(shù)。依此類推得到各級(jí)的進(jìn)位分別為:C0=G0+P0C-1C1=G1+P1G0+P1P0C-1C2=G2+P2G1+P2P1G0+P2P1

3、P0C-1由式可以看出,每級(jí)的進(jìn)位信號(hào)可以不需要等待之前一級(jí)的進(jìn)位信號(hào),而直接由各級(jí)的進(jìn)位產(chǎn)生、進(jìn)位傳遞、以及最低位進(jìn)位輸入計(jì)算得到,可以提高速度。 三、實(shí)驗(yàn)任務(wù)1,實(shí)現(xiàn)四位逐次進(jìn)位加法器的門級(jí)設(shè)計(jì)代碼實(shí)現(xiàn): module adder(S,Co,A,B,Cin為一位全加器模塊,采用門級(jí)描述,modulefour_digit_adder為四位加法器模塊,依據(jù)逐次進(jìn)位原理依次調(diào)用一位全加器模塊,實(shí)現(xiàn)四位全加器。功能仿真: 從波形圖中可以看出,四位相加結(jié)果正確。由于這是第一個(gè)實(shí)驗(yàn),設(shè)計(jì)時(shí)還沒(méi)有學(xué)會(huì)利用四位的寄存器輸入輸出,無(wú)法利用Quartus的2進(jìn)制轉(zhuǎn)10進(jìn)制的功能,觀察結(jié)果略微麻煩,但是結(jié)果的確

4、是正確的。2、實(shí)現(xiàn)4位超前進(jìn)位加法器的門級(jí)設(shè)計(jì)并和逐次進(jìn)位加法器進(jìn)行性能比較。設(shè)計(jì)代碼: 其中recursive_function模塊為進(jìn)位遞推函數(shù),在look_ahead_carry_adder模塊中調(diào)用,實(shí)現(xiàn)4位加法器。程序功能仿真結(jié)果 從仿真結(jié)果看出,相加結(jié)果正確,且與4為逐次進(jìn)位加法器波形完全相同。 從仿真結(jié)果來(lái)看,兩種加法器不分伯仲,所用元件個(gè)數(shù)基本相同。再比較兩種加法器的運(yùn)算速度: 由于逐次進(jìn)位加法器中,進(jìn)位信號(hào)是從低位向高位逐位形成的,工作速度較慢,而超前進(jìn)位加法器利用進(jìn)位遞推公式,每一位的進(jìn)位由輸入直接得出,不需要逐次進(jìn)位,則工作速度較快。從仿真圖上可以明顯看出,超前進(jìn)位加法器

5、相比逐次進(jìn)位加法器工作速度更快,毛刺更少,逐次進(jìn)位加法器產(chǎn)生了很多的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象。3、完成4位逐次進(jìn)位加法器和4位超前進(jìn)位加法器的仿真驗(yàn)證前兩問(wèn)中已經(jīng)完成。4、利用4位超前進(jìn)位加法器實(shí)現(xiàn)8位超前進(jìn)位加法器,并完成仿真驗(yàn)證(選做設(shè)計(jì)代碼: module look_ahead_carry_adder為四位超前進(jìn)位加法器模塊,在8位超前進(jìn)位加法器中調(diào)用模塊。 所加結(jié)果正確。5、利用1位全加器級(jí)聯(lián)實(shí)現(xiàn)8位加法器,并與8位超前進(jìn)位加法器進(jìn)行性能比較(選做設(shè)計(jì)代碼 與八位超前進(jìn)位加法器進(jìn)行比較 理論上,八位超前進(jìn)位加法器工作速度更快。而我設(shè)計(jì)的是一種“偽八位超前進(jìn)位加法器”,原因是我將兩個(gè)四位超前進(jìn)位加法

6、器進(jìn)行了級(jí)聯(lián),即低四位和高四位之間為逐次進(jìn)位,故從timing 仿真結(jié)果可以看出會(huì)出現(xiàn)很窄的毛刺,但是工作速度較八位逐次進(jìn)位加法器而言依然較快,八位逐次進(jìn)位加法器的險(xiǎn)象時(shí)間更長(zhǎng)。 從占用邏輯元件比較,兩種電路都是16個(gè),不分伯仲。6、利用4位超前進(jìn)位加法器實(shí)現(xiàn)8位BCD 碼十進(jìn)制加法器(選做 設(shè)計(jì)原理:由于1位8421BCD 碼中不存在大于9的數(shù),因此兩個(gè)1位8421BCD 碼相加,再加上可能存在的低位進(jìn)位,最大可能和為19。考慮到8421BCD 碼是逢10進(jìn)位的,四位二進(jìn)制數(shù)十逢16進(jìn)位的,因此對(duì)于和大于9的數(shù),需進(jìn)行加6的修正(參看表1.2,以實(shí)現(xiàn)十進(jìn)制的逢十進(jìn)位。 十進(jìn)制數(shù) 未校正的BC

7、D 和 校正的BCD 和 備注 C n H 3 H 2 H 1 H 0 C n S 3 S 2 S 1 S 00 0 0 0 0 0 0 0 0 0 0 不 需 校 正 1 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 0 1 0 3 0 0 0 1 1 0 0 0 1 1 4 0 0 1 0 0 0 0 1 0 0 5 0 0 1 0 1 0 0 1 0 1 6 0 0 1 1 0 0 0 1 1 0 7 0 0 1 1 1 0 0 1 1 1 8 0 1 0 0 0 0 1 0 0 0 9 0 1 0 0 1 0 1 0 0 1 10 0 1 0 1 0 1 0

8、0 0 0 需校 正 11 0 1 0 1 1 1 0 0 0 1 12 0 1 1 0 0 1 0 0 1 0 13 0 1 1 0 1 1 0 0 1 1 14 0 1 1 1 0 1 0 1 0 0 15 0 1 1 1 1 1 0 1 0 1 16 1 0 0 0 0 1 0 1 1 0 17 1 0 0 0 1 1 0 1 1 1 18 1 0 0 1 0 1 1 0 0 0 1911 1 1 1 0 0 1 表1.1.2 校正8421BCD 碼的和判斷和是否大于9,即求解向高位進(jìn)位C n 的條件可以從表1.2著手。把C N 視為兩部分C n 和C n 之或。對(duì)于16-19這4個(gè)和來(lái)

9、說(shuō),進(jìn)位C n 為1;對(duì)于10-15這6個(gè)和,可以根據(jù)卡諾圖求得進(jìn)位為C n =H 3H 2+H 3H 1所以C n =C n +C n = H 3H 2+H 3H 1+C n若C n =1,則意味著和大于9,需要進(jìn)行加01102修正;若C n =0,則不需修正。從而,得到圖1.19所示的一位BCD 碼加法電路。 將圖1.19 的1位BCD碼加法器作為一個(gè)功能塊,借助于中間變量,即進(jìn)位信號(hào)Cn,可以構(gòu)成多位8421BCD碼加法電路的迭代陣列。 設(shè)計(jì)代碼: 此為BCD部分,當(dāng)中調(diào)用了四位超前進(jìn)位加法器模塊。 仿真結(jié)果:29+13=4290+23=113個(gè)位,十位進(jìn)位都正確。思考題:1、比較逐次進(jìn)

10、位和超前進(jìn)位加法器的區(qū)別答:逐次進(jìn)位加法器的原理是每一位的進(jìn)位輸出作為下一位的進(jìn)位輸入,而超前進(jìn)位加法器利用“進(jìn)位遞推公式”,每位的進(jìn)位由輸入直接決定,不需要經(jīng)過(guò)全加器。當(dāng)位數(shù)很多時(shí),逐次進(jìn)位從低位到高位,每步時(shí)間累積,使加法器運(yùn)算速度變慢,而超前進(jìn)位加法器在位數(shù)很多時(shí)運(yùn)算速度比逐次進(jìn)位快很多。2、自行設(shè)計(jì)一個(gè)一位全減器。如何利用4位加法器實(shí)現(xiàn)一個(gè)4位減法器?答:1位二進(jìn)制數(shù)的全減器有3個(gè)輸入端:被減數(shù)An ,減數(shù)Bn,從低位來(lái)得借位Cn-1;2個(gè)輸出端:差Dn ,向高位的借位Cn。全減器的真值表如表1.3所示。輸入輸出An BnCn-1CnDn0 0 0 0 0 0 0 1 1 1 0 1

11、0 1 10 1 1 1 01 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1從表中可以畫(huà)出差Dn 和借位Cn的卡諾圖,得出Dn=AnBnCn-1Cn=A-nBn+A-nCn-1+BnCn-1根據(jù)上面表達(dá)式,可以通過(guò)門級(jí)描述,得到全減器。由于減法可以看做是被減數(shù)加上減數(shù)的補(bǔ)碼,所以可以將減數(shù)全部取反后與被減數(shù)輸入4位加法器,即可以得到4位減法器。實(shí)驗(yàn)1.2 競(jìng)爭(zhēng)冒險(xiǎn)消除實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、了解競(jìng)爭(zhēng)冒險(xiǎn)的產(chǎn)生原因及其避免方法;2、學(xué)會(huì)利用軟件仿真和硬件實(shí)現(xiàn)對(duì)數(shù)字電路的邏輯功能進(jìn)行驗(yàn)證和分析。二、實(shí)驗(yàn)原理 當(dāng)B=C=1 時(shí),Y 應(yīng)恒為1。然而,由于在下方的支路中,非門引

12、入額外延時(shí),當(dāng)A 從1 變?yōu)? 的瞬間,輸出端Y 會(huì)出現(xiàn)短暫的低電平。這反映了組合邏輯電路的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象。為了消除競(jìng)爭(zhēng)冒險(xiǎn),可以修改邏輯設(shè)計(jì)。增加冗余項(xiàng)通常能夠有效地消除競(jìng)爭(zhēng)冒險(xiǎn)。例如,對(duì)于上述邏輯,可以引入冗余項(xiàng)BC,使之成為Y=A´B+AC+BC。當(dāng)B=C=1 時(shí),BC=1。通過(guò)或操作,暫態(tài)0 被消除了。同時(shí),由于BC 為冗余項(xiàng),它不會(huì)改變?cè)壿嫳磉_(dá)式的功能。三、實(shí)驗(yàn)內(nèi)容要求1、軟件仿真:根據(jù)要求設(shè)計(jì)該電路,并進(jìn)行仿真,觀察電路的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象,在仿真輸出結(jié)果上標(biāo)出穩(wěn)態(tài)和暫態(tài)。加入冗余項(xiàng),再進(jìn)行相同的仿真,觀察是否消除了競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象;(必做內(nèi)容采用門級(jí)描述的代碼如下: 再進(jìn)行tim

13、ing仿真即可以看見(jiàn)險(xiǎn)象。推測(cè)出現(xiàn)這樣結(jié)果的原因是QuartusII會(huì)對(duì)系統(tǒng)自帶的與或非門進(jìn)行優(yōu)化,消除險(xiǎn)象。 思考題:還有那些方法可以消除險(xiǎn)象,舉例說(shuō)明答:險(xiǎn)象消除最常用的方法是加入冗余項(xiàng),消除險(xiǎn)象的另一種方法是在組合電路輸出端連接一個(gè)慣性延時(shí)環(huán)節(jié)。通常采用RC電路作慣性延時(shí)環(huán)節(jié), RC電路實(shí)際上是一個(gè)低通濾波器。由于競(jìng)爭(zhēng)引起的險(xiǎn)象都是一些頻率較高的尖脈沖信號(hào),因此,險(xiǎn)象在通過(guò)RC電路后能基本被濾掉,保留下來(lái)的僅僅是一些幅度極小的毛刺,它們不再對(duì)電路的可靠性產(chǎn)生影響。注意:采用這種方法時(shí),必須適當(dāng)選擇慣性環(huán)節(jié)的時(shí)間常數(shù)(=RC,一般要求大于尖脈沖的寬度,以便能將尖脈沖“削平”;但也不能太大,

14、否則將使正常輸出信號(hào)產(chǎn)生不允許的畸變。 三. 選通法組合電路中的險(xiǎn)象除了用上述方法消除外,還可以采用另外一種完全不同的方法,那就是避開(kāi)險(xiǎn)象而不是消除險(xiǎn)象。選通法不必增加任何器件,僅僅是利用選通脈沖的作用,從時(shí)間上加以控制,使輸出避開(kāi)險(xiǎn)象脈沖。由于組合電路中的險(xiǎn)象總是發(fā)生在輸入信號(hào)發(fā)生變化的過(guò)程中,且險(xiǎn)象總是以尖脈沖的形式輸出。因此,只要對(duì)輸出波形從時(shí)間上加以選擇和控制,利用選通脈沖選擇輸出波形的穩(wěn)定部分,而有意避開(kāi)可能出現(xiàn)的尖脈沖,便可獲得正確的輸出。實(shí)驗(yàn)二基本時(shí)序電路設(shè)計(jì)實(shí)驗(yàn)2.1 D觸發(fā)器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、掌握時(shí)序邏輯電路的基本分析和設(shè)計(jì)方法;2、理解觸發(fā)器的工作原理,用硬件描述語(yǔ)言實(shí)現(xiàn)

15、觸發(fā)器的門級(jí)設(shè)計(jì)。二、實(shí)驗(yàn)原理 三、實(shí)驗(yàn)內(nèi)容要求 注意到D觸發(fā)器邏輯圖中主要由6個(gè)三輸入的與非門構(gòu)成,為使邏輯清晰,單獨(dú)寫(xiě)出三輸入與非門的模塊,在D_trigger模塊中調(diào)用即可。其中R為異步置0,S為異步置1端。當(dāng)R=1,S=0時(shí),觸發(fā)器被置0;當(dāng)R=0,S=1時(shí),觸發(fā)器被置1,R=S=0時(shí),觸發(fā)器輸出同D,R和S不能同時(shí)為1; 2、利用觸發(fā)器實(shí)現(xiàn)給定功能4 位移位寄存器的設(shè)計(jì);要求設(shè)計(jì)的移位寄存器有異步清零控制端和同步置數(shù)控制端(高電平同步置數(shù),低電平時(shí)執(zhí)行移位操作;(選做內(nèi)容答:利用之前設(shè)計(jì)的帶異步清零置1的D觸發(fā)器,每一個(gè)D觸發(fā)器的輸出Q作為下一個(gè)D觸發(fā)器的輸入D,4個(gè)D觸發(fā)器級(jí)聯(lián),構(gòu)

16、成移位寄存器。 從仿真中可以看出,輸入IN為1101,最先輸入至OUT【0】,然后依次向高位移位, ACLR為清零端,可以看出當(dāng)ACLR為高位時(shí),所有輸出都清零。3、實(shí)現(xiàn)一個(gè)上升沿觸發(fā)的JK 觸發(fā)器的行為級(jí)設(shè)計(jì)。(選做內(nèi)容 JK觸發(fā)器的功能可以簡(jiǎn)述為:當(dāng)JK同時(shí)為0時(shí),保持,當(dāng)JK同時(shí)為1時(shí),輸出翻轉(zhuǎn),當(dāng)JK不同時(shí)為0或1時(shí),輸出同J;根據(jù)狀態(tài)轉(zhuǎn)換表畫(huà)出卡諾圖,得到JK觸發(fā)器的狀態(tài)轉(zhuǎn)換方程為:Q n+1=J n Qn+K n Qn根據(jù)狀態(tài)轉(zhuǎn)換方程,可以設(shè)計(jì)行為級(jí)的JK觸發(fā)器,設(shè)計(jì)代碼如下: 從功能仿真圖上可以看出,當(dāng)JK都為0時(shí),Q保持,當(dāng)J=1,K=0時(shí),Q輸出為1,同J,當(dāng)JK同時(shí)為0時(shí),

17、輸出翻轉(zhuǎn),當(dāng)J=0,K=1時(shí),Q輸出為0,即設(shè)計(jì)完成了JK觸發(fā)器的功能。思考題:1、給出鎖存器的定義,它與邊沿型觸發(fā)器的區(qū)別是什么?答:鎖存器是一種單元儲(chǔ)存電路,具有邏輯0和1兩個(gè)穩(wěn)定的狀態(tài),可以根據(jù)輸入值改變電路的穩(wěn)定狀態(tài)。鎖存器與觸發(fā)器的區(qū)別在于,前者是電位觸發(fā)型電路,后者是脈沖觸發(fā)型電路。實(shí)驗(yàn)2.2 累加器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、掌握時(shí)序邏輯電路的基本分析和設(shè)計(jì)方法;2、初步了解模塊化設(shè)計(jì)的思想;理解累加器的工作原理,用硬件描述語(yǔ)言實(shí)現(xiàn)指定功能累加器的設(shè)計(jì)。二、實(shí)驗(yàn)原理 三、實(shí)驗(yàn)任務(wù)1利用4位二進(jìn)制加法器和4位寄存器,實(shí)現(xiàn)4位累加器的設(shè)計(jì),要求具有aclr 端和累加使能端。設(shè)計(jì)思路:定義一

18、個(gè)4位的寄存器Qreg,用于保存每次累加的和,在時(shí)鐘上升沿來(lái)臨時(shí),Qreg與IN輸入相加,相加結(jié)果輸出,同時(shí)Qreg更新,等待下一次相加。設(shè)計(jì)代碼如下: 從仿真中可以看出,使能端ENABLE為1,清零端R為0時(shí),執(zhí)行累加功能,結(jié)果為1,2,3,4,5。當(dāng)清零端R為1時(shí),寄存器Qreg清零,輸出清零。當(dāng)使能端ENABLE為0時(shí),累加器不工作。功能完成。2、利用4位累加器和前面的計(jì)數(shù)器,實(shí)現(xiàn)兩個(gè)2位二進(jìn)制數(shù)的乘法操作(選做設(shè)計(jì)思路:乘法可以看做是進(jìn)行多次加法運(yùn)算。設(shè)計(jì)代碼如下: 設(shè)計(jì)i為計(jì)數(shù)器,Q,B構(gòu)成累加器,CLEAR為清零端,當(dāng)CLEAR為1時(shí),寄存器清零,計(jì)數(shù)器清零,否則,若計(jì)數(shù)器還沒(méi)有達(dá)

19、到乘數(shù),則隨時(shí)鐘持續(xù)累加。 功能仿真2*4,可以看到在結(jié)果了4個(gè)時(shí)鐘周期進(jìn)行了累加后,Q算出結(jié)果為8,且不再進(jìn)行累加。當(dāng)CLEAR為1時(shí),輸出清零,計(jì)數(shù)器清零。實(shí)驗(yàn)三序列檢測(cè)器的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康恼莆绽糜邢逘顟B(tài)機(jī)實(shí)現(xiàn)時(shí)序邏輯的方法。二、實(shí)驗(yàn)原理有限狀態(tài)機(jī)(FSM:Finite State Machine是時(shí)序電路設(shè)計(jì)中經(jīng)常要遇到的,在數(shù)字電路中學(xué)過(guò)通過(guò)建立有限狀態(tài)機(jī)來(lái)進(jìn)行數(shù)字邏輯的設(shè)計(jì),而在硬件描述語(yǔ)言中,這種設(shè)計(jì)方法得到進(jìn)一步的發(fā)展,可以很好地描述各個(gè)狀態(tài)之間的轉(zhuǎn)移關(guān)系,設(shè)計(jì)出邏輯更為復(fù)雜的電路。有限狀態(tài)機(jī)從本質(zhì)上講是由寄存器和組合邏輯構(gòu)成的時(shí)序電路,各個(gè)狀態(tài)之間的轉(zhuǎn)移總是在時(shí)鐘的觸發(fā)下進(jìn)行

20、的。三、實(shí)驗(yàn)任務(wù)設(shè)計(jì)一個(gè)簡(jiǎn)單的狀態(tài)機(jī),功能是檢測(cè)一個(gè)5 位的二進(jìn)制序列“10101”,當(dāng)連續(xù)的5個(gè)輸入為10101時(shí),第3個(gè)1出現(xiàn)時(shí)輸出1,其他情況下輸出0(輸入序列可重復(fù)檢測(cè),即輸入010*時(shí),輸出為0000010101設(shè)計(jì)思路:采用Mealy型狀態(tài)機(jī),設(shè)輸入為X,狀態(tài)變量為Si,輸出為Z,X/Z可以畫(huà)出狀態(tài)轉(zhuǎn)換圖: 圖3.1 狀態(tài)轉(zhuǎn)換圖狀態(tài)分配采用一熱態(tài)位分配。一熱態(tài)位分配是指p個(gè)狀態(tài)采用p位二元代碼,即p個(gè)觸發(fā)器的狀態(tài)分配。在這種狀態(tài)分配中,對(duì)應(yīng)于每一種狀態(tài)僅有1位二元代碼為1,其余的p-1位二元代碼都為0,并將等于1的那位代碼稱為處于熱態(tài),故有一熱態(tài)分配。其中S0=10000,S1=0

21、1000,S2=00100,S3=00010,S4=00001.一熱態(tài)位分配的優(yōu)點(diǎn)是,簡(jiǎn)化了邏輯電路的設(shè)計(jì)過(guò)程;縮短了設(shè)計(jì)時(shí)間;便于電路的故障檢查;一熱態(tài)位時(shí)序電路的輸出邏輯簡(jiǎn)單,且輸出信號(hào)上無(wú)毛刺,避免了多個(gè)觸發(fā)器同時(shí)動(dòng)作,有利于減小電源線和地線上的尖峰干擾脈沖;當(dāng)時(shí)序電路狀態(tài)數(shù)目不多時(shí),一熱態(tài)位分配所需的觸發(fā)器數(shù)目比其他狀態(tài)分配方法所需的觸發(fā)器數(shù)目雖然會(huì)有所增加,但是這種時(shí)序電路中組合所需的門的數(shù)目卻減少了,可使總的硬件成本僅有少量增加。而FPGA中觸發(fā)器眾多,常采用一熱態(tài)位的狀態(tài)分配方案。設(shè)計(jì)代碼:module test10101(CLK,IN,OUT;input CLK,IN;outp

22、ut OUT;reg OUT;reg4:0 state;parameter S0=5'b10000,S1=5'b01000,S2=5'b00100,S3=5'b00010,S4=5'b00001;always(posedge CLKcase(stateS0:if(INbeginstate<=S1;OUT<=0;endelsebeginstate<=S0;OUT<=0;endS1:if(INbeginstate<=S1;OUT<=0;endelsebeginstate<=S2;OUT<=0;endS2:if(

23、INbeginstate<=S3;OUT<=0;endelsebeginstate<=S0;OUT<=0;endS3:if(INbeginstate<=S1;OUT<=0;endelsebeginstate<=S4;OUT<=0;endS4:if(INbeginstate<=S3;OUT<=1;endelsebeginstate<=S0;OUT<=0;enddefault:beginstate<=S0;OUT<=0;endendcaseendmodule代碼中設(shè)立5個(gè)狀態(tài),利用case語(yǔ)句完成狀態(tài)轉(zhuǎn)換。 圖3.

24、2 10101序列檢測(cè)器功能仿真從仿真中可以看出,10101為可重復(fù)檢測(cè)序列檢測(cè)器。四、思考題1、如果本實(shí)驗(yàn)內(nèi)容要求輸入序列不可以重復(fù)使用,所設(shè)計(jì)的序列檢測(cè)器會(huì)不會(huì)變得更復(fù)雜?請(qǐng)說(shuō)明原因。答:代碼不會(huì)變得復(fù)雜,只是在檢測(cè)到10101,由S4返回狀態(tài)S即可。2、說(shuō)明行為級(jí)描述與門級(jí)描述的優(yōu)缺點(diǎn)。答:行為級(jí)描述使得設(shè)計(jì)思路簡(jiǎn)單,不需要關(guān)心具體實(shí)現(xiàn),具有更高級(jí)的抽象,使人有更多的精力去思考各部分功能。而門級(jí)描述可以優(yōu)化電路,使電路所消耗的原件更少,但是增加了設(shè)計(jì)和編寫(xiě)代碼的負(fù)擔(dān),且容易出錯(cuò)。總體來(lái)說(shuō),對(duì)于功能復(fù)雜的系統(tǒng),采用行為級(jí)描述較為方便。實(shí)驗(yàn)四HDB3編解碼器設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、掌握結(jié)構(gòu)化設(shè)計(jì)

25、方法,理解系統(tǒng)級(jí)/行為級(jí)設(shè)計(jì)思路2、理解HDB3 碼的原理并掌握HDB3 編碼器和解碼器的設(shè)計(jì)方法。二、實(shí)驗(yàn)原理HDB3 是一種偽三進(jìn)制歸零碼。圖4.1 給出了一種歸零碼(RZ和非歸零碼(NRZ的示意圖。HDB3 碼的三個(gè)狀態(tài)可用B+、B-和0 表示。二進(jìn)制信號(hào)中的空號(hào)(0在HDB3 中仍編為0;但是對(duì)4 個(gè)連空號(hào)應(yīng)用特殊規(guī)則。二進(jìn)制信號(hào)中的傳號(hào)(1在HDB3 信號(hào)中應(yīng)交替編為B+和B-(交替翻轉(zhuǎn)。因此HDB3 編碼輸出包含正端碼和負(fù)端碼。在編4 個(gè)連空號(hào)時(shí)引入交替翻轉(zhuǎn)的“破壞點(diǎn)”。4 個(gè)連0 被000V 或者B00V 取代。V 表示破壞點(diǎn)。選取原則是:使任意兩個(gè)V 脈沖間的B 脈沖數(shù)目為奇數(shù)

26、。這樣,相鄰V 脈沖的極性也滿足交替規(guī)則,因而整個(gè)信號(hào)保持無(wú)直流分量。圖4.2 所示為HDB3 編碼的對(duì)應(yīng)表和波形示意,其中B 碼和V 碼都是歸零碼,為寬度為半個(gè)時(shí)鐘周期的脈沖。編碼流程是記住上一次B 碼編碼的極性(B+、B-以及從上一次極性翻轉(zhuǎn)碼V 出現(xiàn)以來(lái)B 的個(gè)數(shù)的奇偶性。如果當(dāng)前的NRZ 碼輸入是1,則直接編碼為B 碼,如果當(dāng)前的NRZ 碼輸入是0,則要分兩種情況處理:如果已經(jīng)連續(xù)輸入了4 個(gè)0,則回溯最前面的那個(gè)碼對(duì)應(yīng)的HDB3 編碼結(jié)果,將它編為B 碼,同時(shí)將當(dāng)前NRZ 碼編為V 碼。 圖4.1 歸零碼與非歸零碼 圖4.2 HDB3 編碼示意圖表具體的解碼流程是:記住上一次B 碼的

27、極性(B+、B-,判斷當(dāng)前HDB3 碼是V 碼、B 碼或者0 碼,如果是V 碼,則進(jìn)行長(zhǎng)度為4 的回溯,將它們?nèi)恐匦戮幋a為0000;如果是B 碼,則從移位寄存器的最高位存入1;如果是0 碼,則從移位寄存器的最高位存入0。任意時(shí)刻的解碼輸出總是移位寄存器的最低位。HDB3 編解碼器的測(cè)試驗(yàn)證可以采用M序列發(fā)生器的輸出作為編碼器的輸入,然后將編碼器輸出的碼流送入解碼器進(jìn)行解碼,解碼結(jié)果再送入M 序列接收器,如果解碼正確,M 序列接收器的輸出應(yīng)該恒為0。圖4.3所示即為測(cè)試系統(tǒng)的簡(jiǎn)單框圖。 圖4.3 用M 序列測(cè)試編解碼器的框圖三、實(shí)驗(yàn)內(nèi)容要求1、設(shè)計(jì)將NRZ 碼轉(zhuǎn)換為HDB3 碼的編碼器以及相應(yīng)

28、的解碼器,并用圖5.25 所示的方式進(jìn)行回環(huán)測(cè)試。用M 序列生成器的輸出作為編碼器輸入,然后將編碼值送入解碼器解碼,輸出的序列送入M 序列接收器進(jìn)行檢測(cè),通過(guò)時(shí)序仿真觀察輸出端是否為全0。由于延時(shí)的關(guān)系,輸出端可能會(huì)有毛刺,并不影響結(jié)果的正確性;(必做內(nèi)容答:HDB3碼的編碼部分:module HDB3_ENCODER(CLK,CR,IN,E1OUTP,E1OUTN;input CLK,CR,IN;output E1OUTP,E1OUTN;reg counterZ,BPN,BEO,VPN;/BPN:last B was negative or positive/BEO:last B was e

29、ven or odd, VPN: last V was positive or negative reg E1OUTP,E1OUTN;reg 7:0 Q;initialbeginQ<=8'b00000000;BPN<=1'b0;BEO<=1'b0;VPN<=1'b0;endalways(posedge CLKbegin /date shiftQ7:6<=Q5:4;Q5:4<=Q3:2;Q3:2<=Q1:0;if(IN /change to double phase codebeginQ1:0<=1'b1,1

30、'b0;endelsebeginQ1:0<=1'b0,1'b1;endif(Q=8'b01010101/checking 0000beginQ3:2<=1'b1,1'b1;/mark V by 11! CAUTION! THIS SHOULD NOT BE Q1:0,THE VALUE WON'T CHANGE IMMEDIATELYif(BEO / there were odd B in previous code,0 => 0beginE1OUTP<=1'b0;E1OUTN<=1'b0;B

31、EO<=1'b0;endelse / there were even B in previous code,0=>Bbeginif(BPN/last b was positivebeginE1OUTP<=1'b0;E1OUTN<=1'b1;BPN<=BPN;endelse /last b was negetivebeginE1OUTP<=1'b1;E1OUTN<=1'b0;BPN<=BPN;endendendelse if(Q7:6=1'b1,1'b1beginBEO<=1'b

32、0;if(VPN/last V was positivebeginE1OUTN<=1'b1;E1OUTP<=1'b0;VPN<=VPN;endelse/last V was negetivebeginE1OUTP<=1'b1;E1OUTN<=1'b0;VPN<=VPN;endendelsebeginif(Q7:6=1'b0,1'b1/code was 0beginE1OUTP<=1'b0;E1OUTN<=1'b0;endelse if(Q7:6=1'b1,1'b0/c

33、ode was 1beginif(BPN/last B was positivebeginE1OUTN<=1'b1;E1OUTP<=1'b0;BPN<=BPN;BEO<=BEO;endelse/ last B was negetivebeginE1OUTP<=1'b1;E1OUTN<=1'b0;BPN<=BPN;BEO<=BEO;endendelse/ Q7:6=00beginE1OUTP<=1'b0;E1OUTN<=1'b0;endendendendmodule設(shè)計(jì)思路:第一個(gè)難點(diǎn)是如

34、何準(zhǔn)確識(shí)別電路中的“1”、“V”和“B”。因?yàn)椤癡”和“B”符號(hào)是人為標(biāo)識(shí)的符號(hào),但在電路中最終的表現(xiàn)形式還是邏輯電平“1”。解決的方法是利用了雙相碼,將其用二進(jìn)制代碼分別表示。雙相碼的編碼規(guī)則:它是對(duì)每個(gè)二進(jìn)制代碼分別利用具有兩個(gè)不同相位的二進(jìn)制代碼去取代。例如:代碼: 1 1 0 0 1 0雙相碼: 10 10 01 01 10 01故采用8位的寄存器。其余部分按照HDB3編碼規(guī)則進(jìn)行編碼。首先判斷寄存器中存的是否為01010101,即連續(xù)4個(gè)零,若是,則高位標(biāo)出V,用11表示,等到11移至低位時(shí),再進(jìn)行判斷。其中BEO,BPN用來(lái)記錄之前B碼的奇偶和正負(fù),VPN用于記錄V碼的正負(fù)。輸出H

35、DB3+為E1OUTP,輸出HDB3-為E1OUTN。解碼設(shè)計(jì)代碼:module HDB3_DECODER(CLK,INPUTP,INPUTN,OUT;input CLK,INPUTP,INPUTN;output OUT;reg B;reg4:0 R;reg OUT;initialbeginR<=5'b00000;B<=1'b1;/ last B was positiveendalways(posedge CLKbeginR4<=INPUTP|INPUTN;R3<=R4;R2<=R3;R1<=R2;R0<=R1;if(INPUTP |

36、INPUTNbeginif(B=1'b0 && INPUTP=1'b1/V positive codebeginR4:1<=1'b0,1'b0,1'b0,1'b0;endelse if(B=1'b1 && INPUTN=1'b1/V negetive codebeginR4:1<=1'b0,1'b0,1'b0,1'b0;endelse if(B=1'b1 && INPUTP=1'b1/last b was negetive,

37、 temporary B is postive. B CODEbeginB<=B;endelse if(B=1'b0 && INPUTN=1'b1/last b was positive, temoporary B is negetive. B codebeginB<=B;endendOUT<=R0;endendmodule設(shè)計(jì)思路:當(dāng)輸入HDB3+和HDB3-有一個(gè)為1時(shí)(二者不可能同時(shí)為1,可以同時(shí)為0,首先判斷是否為V碼,若是,再判斷V的正負(fù),若不是則判斷為B碼,判斷B的正負(fù)。判斷條件在代碼注釋中。M序列發(fā)生器:設(shè)計(jì)代碼:module M

38、sequence(CLK,Q7;input CLK;output Q7;reg Q1,Q2,Q3,Q4,Q5,Q6,Q7;reg Q,F,IN;initialbeginQ1<=1'b0;Q2<=1'b0;Q3<=1'b0;Q4<=1'b0;Q5<=1'b0;Q6<=1'b0;Q7<=1'b0;endalways(posedge CLKif(CLKbeginQ<=(Q1|Q2|Q3|Q4|Q5|Q6|Q7;F<=Q6Q7;IN<=F|Q;Q1<=IN;Q2<=Q1;Q3

39、<=Q2;Q4<=Q3;Q5<=Q4;Q6<=Q5;Q7<=Q6;endendmodule采用7位M序列發(fā)生器,反饋函數(shù)為F<=Q6Q7;為了避免出現(xiàn)全0而使發(fā)生器停止工作,加入防全零最小項(xiàng):Q<=(Q1|Q2|Q3|Q4|Q5|Q6|Q7;Q與F相或輸入低位D觸發(fā)器Q1,高位Q7為輸出。M序列接收器:設(shè)計(jì)思路: 圖4.4M序列接收器圖6.1是一個(gè)4位M序列接收器。M序列接收器的工作原理是接收器到的輸入為同樣電路產(chǎn)生的M序列,則高位的輸出就和輸入完全相同,兩者相異或,則M序列接收器的輸出為全0。當(dāng)輸入不是相同電路產(chǎn)生的M序列時(shí),輸出會(huì)有1出現(xiàn)。代碼設(shè)計(jì)

40、思路簡(jiǎn)單,只需將M序列發(fā)生器的產(chǎn)生部分代碼完全照搬,加入輸入與高位輸出異或的語(yǔ)句即可。設(shè)計(jì)代碼如下:module MsequenceReciver(IN,CLK,OUT;input CLK,IN;output OUT;reg Q1,Q2,Q3,Q4,Q5,Q6,Q7;reg AT,Q,F,OUT;always(posedge CLKbeginQ<=(Q1|Q2|Q3|Q4|Q5|Q6|Q7;F<=Q6Q7;AT<=F|Q;Q1<=IN;Q2<=Q1;Q3<=Q2;Q4<=Q3;Q5<=Q4;Q6<=Q5;Q7<=Q6;OUT<=

41、ATIN;endendmodule注意:M序列檢測(cè)器的反饋函數(shù)部分必須和發(fā)生器的反饋函數(shù)完全相同,在開(kāi)始時(shí)我認(rèn)為防全0的最小項(xiàng)可有可無(wú),在接收器中就沒(méi)有加入,導(dǎo)致檢測(cè)器功能不正常。將各部分搭接起來(lái)的整體模塊:設(shè)計(jì)思路:按照?qǐng)D4.3的系統(tǒng)結(jié)構(gòu)圖,將不同模塊輸入輸出進(jìn)行配對(duì)即可。代碼如下:module HDB3CODER(CLK,CR,MIN,OUT,MOUT,E1OUTP,E1OUTN;input CLK,CR;output OUT,MIN,MOUT,E1OUTP,E1OUTN;wire OUT,E1OUTP,E1OUTN,MIN,MOUT;Msequence(CLK,MIN;HDB3_ENCO

42、DER(CLK,CR,MIN,E1OUTP,E1OUTN;HDB3_DECODER(CLK,E1OUTP,E1OUTN,MOUT;MsequenceReciver(MOUT,CLK,OUT;endmodule其中M序列發(fā)生器輸出為MIN,作為源碼輸入編碼器,編碼器編碼后輸出HDB3+(E1OUTP碼和HDB3-碼(E1OUTN,兩路碼再輸入解碼器,解碼輸出為MOUT, MOUT輸入M序列接收器,輸出OUT。 圖4.5 HDB3編解碼功能仿真從仿真中可以看出MOUT比MIN延遲了8個(gè)周期,M序列檢測(cè)器輸出為0,證明解碼成功。2、將設(shè)計(jì)的HDB3 編碼器和解碼器下載到開(kāi)發(fā)板進(jìn)行驗(yàn)。采用手動(dòng)輸入時(shí)鐘

43、,用一個(gè)開(kāi)關(guān)代替M 序列發(fā)生器提供輸入的RXD 信號(hào)。用一個(gè)按鍵作為時(shí)鐘輸入。兩個(gè)數(shù)碼管在時(shí)鐘的控制下截取輸入RXD 碼流的4 位和輸入TXD 碼流的4 位分別顯示。用8 個(gè)發(fā)光二極管在時(shí)鐘的控制下截取HDB3 碼正端碼流和負(fù)端碼流的4 位顯示。驗(yàn)證時(shí),需要編寫(xiě)測(cè)試附加電路,將這四段碼流延遲不同的周期再移位輸出(具體延遲多少周期根據(jù)各設(shè)計(jì)的不同而有所差異。最后能夠直觀地顯示HDB3 碼的編解碼效果(例如,輸入全1 碼,數(shù)個(gè)周期后,輸入RXD 為F,同時(shí)顯示解碼后的輸出TXD 為F ,HDB3 碼的正端為“0101” ,HDB3 碼的負(fù)端為“1010”。(必做內(nèi)容設(shè)計(jì)思路:不需要M序列發(fā)生器,只需要編碼模塊和解碼模塊即可。只需要改正top entity代碼即可代碼如下:module HDB3CODER(CLK,CR,IN,MIN,OUT,MOUT,E1OUTPC,E1OUTNC;input CLK,IN,CR;output OUT,MIN,MOUT,E1OUTPC,E1OUTNC;reg3:0 MOUT,MIN;reg3:0 E1OUTPC,E1OUTNC;wire OUT,E1OUTP,E1OUTN;HDB3_ENCODER(CLK,CR,IN,E1OUTP,E1OUTN;HDB3_DECODER(CLK,E1OUTP,E1OUTN,OUT;alway

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論