堆棧處理器的設(shè)計_第1頁
堆棧處理器的設(shè)計_第2頁
堆棧處理器的設(shè)計_第3頁
堆棧處理器的設(shè)計_第4頁
堆棧處理器的設(shè)計_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 何小艇電子系統(tǒng)設(shè)計浙江大學(xué)出版社2008.1潘松黃繼業(yè)EDA技術(shù)實用教程科學(xué)出版社2006.10齊晶晶現(xiàn)代電子系統(tǒng)設(shè)計實驗指導(dǎo)書電工電子實驗教學(xué)中心2009.8摘要堆棧處理器是具有兩個功能,首先它與數(shù)據(jù)總線的數(shù)據(jù)交換符合堆棧的要求(即先進后出);能對存儲的數(shù)據(jù)進行算術(shù)運算。本次設(shè)計就是基于FPGA用VHDL語言實現(xiàn)的一個堆棧處理器,擁有一個RAM進行堆棧的數(shù)據(jù)存儲操作,同時有兩個寄存器存放運算器的輸入和運算結(jié)果。堆棧處理器的主要組成部分如下:1、堆棧存儲器:進行數(shù)據(jù)的存儲是堆棧處理器的基本功能,這里的堆棧存儲器就是一個可以用來存儲和讀取數(shù)據(jù)的RAM,它的存儲和讀取符合堆棧先進后出的要求,具體

2、的實現(xiàn)方法將在后面的方案論證中詳細論述。2、運算器:運算器的功能就是對處于棧頂?shù)膬蓚€數(shù)據(jù)進行算術(shù)運算(加、減、乘、除),并將運算結(jié)果送至控制部分,進行下一步的操作。3、控制模塊:控制堆棧處理器的各項操作(入棧、出棧、算術(shù)運算)、狀態(tài)轉(zhuǎn)移、設(shè)置各種狀態(tài)標志和RAM地址的產(chǎn)生。4、顯示模塊:用來顯示A、B寄存器中的數(shù)據(jù)、數(shù)據(jù)總線數(shù)據(jù)和輸入數(shù)據(jù)的實時顯示。TOC o 1-5 h z HYPERLINK l bookmark2 一、任務(wù)解析3 HYPERLINK l bookmark4 二、系統(tǒng)方案論證42.1總體方案比較論證42.2系統(tǒng)結(jié)構(gòu)與原理4 HYPERLINK l bookmark6 三、數(shù)

3、據(jù)子系統(tǒng)的設(shè)計43.1堆棧存儲器的設(shè)計43.2運算器的設(shè)計53.3數(shù)據(jù)路徑6 HYPERLINK l bookmark10 四、控制子系統(tǒng)64.1方案論證64.2控制部分的實現(xiàn)7 HYPERLINK l bookmark36 五、總結(jié)85.1仿真結(jié)果85.2系統(tǒng)缺陷分析11 HYPERLINK l bookmark38 六、心得體會11一、任務(wù)解析根據(jù)任務(wù)要求,堆棧處理器與總線的數(shù)據(jù)交換要符合先進后出的原則,它是一個具有數(shù)據(jù)存儲和讀取功能的RAM,為了便于測試,這里我們設(shè)定了一個8*8的RAM,它的字數(shù)為8,每個字為8位,滿足了數(shù)據(jù)位數(shù)為8的要求。在堆棧中定義一個堆棧指針SP,用來表征存儲字在

4、RAM中的位置,當進行入棧操作PUSH時,數(shù)據(jù)存入地址為SP的單元后,SP-SP-1;而進行出棧操作POP時,將SP單元的數(shù)據(jù)讀出后,SP-SP+1。當指針處于棧頂,對應(yīng)滿棧,應(yīng)有滿棧信號FULL=1,此時不能進行入棧PUSH。當SP=8時,指針處于棧底,對應(yīng)棧空,應(yīng)有棧空信號EMPTY=1,此時不可以進行出棧POP。堆棧處理器的第二個功能是算術(shù)運算操作,首先應(yīng)有四個算術(shù)運算的指示信號,即輸入信號ADD、SUB、MUL、DIV。算術(shù)運算的過程就是把地址分別為SP和SP+1的兩個數(shù)據(jù)分別送入運算器進行運算,運算后將結(jié)果送入地址為SP+1的字中。當棧中只有一個字時不能進行算術(shù)運算,因此應(yīng)有一個ON

5、E指示信號,當指針為7時,棧內(nèi)只有一個字,指示信號ONE=1??刂破髦饕脕碓O(shè)置各個標志位的狀態(tài),數(shù)據(jù)的具體流向、存儲路徑,控制顯示模塊的顯示。對于顯示的部分,只需將數(shù)據(jù)總線的數(shù)據(jù)送至數(shù)碼管顯示電路即可。系統(tǒng)框圖的確定由以上分析可以得到堆棧處理器的功能框圖和系統(tǒng)原理框圖如下所示:操作信號輸入PUSH、POP、算術(shù)操作圖一、系統(tǒng)原理框圖DINADD-*-FULLSUBfEMPTYMUL-*堆棧處理器+ONEDIVfRILADYPUWHfPRESETPOPfSTARTDOUT圖二、功能框圖二、系統(tǒng)方案論證2.1總體方案比較論證方案一:采用數(shù)字邏輯電路,根據(jù)堆棧處理器的各種狀態(tài)轉(zhuǎn)移和邏輯關(guān)系畫出卡諾

6、圖,分析其邏輯關(guān)系,使用觸發(fā)器、門電路等一系列芯片來連接電路實現(xiàn)堆棧處理器的功能。但是由于堆棧處理器的狀態(tài)轉(zhuǎn)移較多,邏輯關(guān)系分析起來比較復(fù)雜,而且會需要大量的芯片,電路連接復(fù)雜,不易實現(xiàn),不是理想方案。方案二:采用FPGA實現(xiàn),用語言描述或者微程序法實現(xiàn)各種狀態(tài)轉(zhuǎn)移和邏輯關(guān)系。這種方案較之于第一種方案比較容易實現(xiàn),省去了復(fù)雜的電路連接,而且堆棧處理器的RAM,以及加法器,減法器,乘法器,除法器都可以定制,相對來說,省去了構(gòu)建運算器的工作量。因此我們選擇了方案二作為我們的設(shè)計方案。2.2系統(tǒng)結(jié)構(gòu)與原理本方案的系統(tǒng)原理圖見圖一,它主要包括數(shù)據(jù)子系統(tǒng)和控制子系統(tǒng)兩大模塊,下面我們來討論具體功能的實現(xiàn)

7、。三、數(shù)據(jù)子系統(tǒng)的設(shè)計數(shù)據(jù)子系統(tǒng)包括對數(shù)據(jù)的存儲、運算、傳輸以及控制子系統(tǒng)之間的條件和控制信號交換部分,下面就從這幾個方面來分析數(shù)據(jù)子系統(tǒng)的設(shè)計和實現(xiàn)放法。31堆棧存儲器的設(shè)計方案一:定制RAM,然后根據(jù)各種操作對RAM的訪問不同,編寫一個RAM的讀寫控制器,它產(chǎn)生讀寫控制信號和相應(yīng)的RAM地址。方案二:用語言編寫,這里我們采用了語言編寫了一個RAM,將各種的控制操作和RAM整合在了一起,作為一個堆棧存儲器的模塊。為了便于測試,我們這里定義一個8*8的RAM作為堆棧存儲器,地址產(chǎn)生器產(chǎn)生的地址即為指針SP,由于RAM的速度問題,因此我們用兩個高速的寄存器A、B來數(shù)據(jù)總線進行數(shù)據(jù)交換,而RAM作

8、為后備不直接和數(shù)據(jù)總線通信,這樣就解決了RAM的讀寫速度較慢的問題。圖示即為堆棧存儲器的結(jié)構(gòu)框圖。堆棧存儲器的工作有三個方面:入棧、出棧和算術(shù)運算。由于添加了兩個寄存器,因此數(shù)據(jù)的流向不再是簡單的將數(shù)據(jù)存儲到RAM中,下面來分別討論在這三方面的數(shù)據(jù)流向問題:圖三、堆棧存儲器的結(jié)構(gòu)入棧(PUSH)操作:A,B均空時:BDIN。A空B滿時:ADIN。A、B均滿時:RAMB,BA,ADIN。出棧(POP)操作A,B均滿:DOUTA。A空B滿:DOUTB。A,B均空:BRAM,DOUTB。算術(shù)運算(OP)操作:A,B均滿:BA(OP)B。A空B滿:AB,BRAM,BA(OP)B。A,B均空:BRAM,

9、AB,BRAM,BA(OP)B。由以上分析可以看出堆棧處理器的工作特點:只有A,B寄存器和外部總線進行數(shù)據(jù)交換,RAM只和B寄存器進行數(shù)據(jù)交換。必須設(shè)置兩個標志位FA,FB來指示A,B寄存器是否已滿。應(yīng)設(shè)置一個READY信號,指示操作是否完成,只有當處理器輸出READY信號時才可以進行下一步的操作。關(guān)于堆棧指針SP,為了實現(xiàn)堆棧的要求(先進后出),因此在系統(tǒng)的起始狀態(tài),SP應(yīng)指向棧底(RAM的最后一個單元,SP=8),而且應(yīng)注意到,入棧時,數(shù)據(jù)不直接進入RAM之中,必須是A、B均滿的時候才進行寫RAM的操作,這時RAM(SP)B,SPSP-1;同樣的對于出棧,應(yīng)該在A、B均空以后才可以讀RAM

10、,SPSP+1,BRAM(SP),DOUTBo棧滿信號FULL應(yīng)該是在SP=0,并且FA=1,FB=1時才指示棧滿,輸出??招盘朎MPTY的條件是FA=0,FB=0,且SP=8。3.2運算器的設(shè)計由上面的分析我們知道運算器的輸入是A,B兩個寄存器的數(shù)據(jù),運算器進行相關(guān)的運算以后將運算結(jié)果送至B寄存器存儲起來。加法器和減法器的設(shè)計比較簡單,直接進行加減運算就可以了,可以用語言描述的方法將他們直接的整合到堆棧存儲器的模塊之中去,不必再去定制相應(yīng)的模塊,節(jié)省了部分資源;乘法器和除法器我們采用定制的方法,將A,B的數(shù)據(jù)送至乘法器、除法器的輸入端,然后將結(jié)果送回堆棧處理器進行處理,下圖即為定制的乘法器和

11、除法器。7圖四、乘法器和除法器當棧內(nèi)只有一個數(shù)時不能進行算術(shù)運算,因此必須設(shè)置一個ONE信號指示棧內(nèi)數(shù)據(jù)為一的狀態(tài),提醒此時不可以經(jīng)行算術(shù)運算。與堆棧存儲器一樣,運算器同樣需要一個READY信號,來指示操作是否完成。3.3數(shù)據(jù)路徑根據(jù)以上的分析,明確了數(shù)據(jù)系統(tǒng)應(yīng)有的模塊及其操作規(guī)則。按照分析的結(jié)果我們可以總結(jié)出其數(shù)據(jù)路徑如下:寄存器A的數(shù)據(jù)來源有兩個,分別是數(shù)據(jù)總線和B寄存器,只有在入棧和算術(shù)運算時才有數(shù)據(jù)進入。寄存器B的數(shù)據(jù)來自四個方面:寄存器A、數(shù)據(jù)總線、RAM和運算器的運算結(jié)果。RAM的數(shù)據(jù)僅來自寄存器B,不和其它設(shè)備進行數(shù)據(jù)的交換。輸出的數(shù)據(jù)來自寄存器A和寄存器B,任何輸出都要經(jīng)過這兩

12、個寄存器才能輸出。運算器的數(shù)據(jù)來自寄存器A和寄存器B,運算結(jié)果輸出到寄存器B。至此,我們已經(jīng)分析了堆棧存儲器的設(shè)計思路,設(shè)計方案,以及實現(xiàn)的方法,根據(jù)上面得出的邏輯關(guān)系和數(shù)據(jù)流向就可以寫出數(shù)據(jù)子系統(tǒng)的VHDL語言代碼。四、控制子系統(tǒng)設(shè)計4.1方案論證方案一:采用微程序法實現(xiàn)控制子系統(tǒng)的微程序設(shè)計適用于系統(tǒng)很復(fù)雜,系統(tǒng)的MDS圖的狀態(tài)數(shù)目很多,輸入輸出變量很多的情況,而且它具有設(shè)計規(guī)范、易于模塊化、便于二次集成、便于修改的有點。其基本結(jié)構(gòu)如下圖所示。輸入輸出XROM、D觸發(fā)器4圖五、微程序設(shè)計基本結(jié)構(gòu)本系統(tǒng)的狀態(tài)轉(zhuǎn)移變量較多,系統(tǒng)較復(fù)雜,因而使用微程序設(shè)計的方法比較適合于這個系統(tǒng)。方案二:語言描

13、述比之于微程序設(shè)計的方法來說,語言描述的方法相對來說比較繁瑣,因為轉(zhuǎn)移變量較多,寫程序的時候比較復(fù)雜,需要仔細的分析系統(tǒng),否則會導(dǎo)致數(shù)據(jù)混亂等一系列的后果,但是如前所述,在設(shè)計數(shù)據(jù)子系統(tǒng)的時候,已經(jīng)涉及到了各項操作的數(shù)據(jù)流向及狀態(tài)標志的問題,這里再進行一次相關(guān)描述會有些重復(fù),因此在這里我們繼續(xù)的使用語言描述的方案,將控制子系統(tǒng)和數(shù)據(jù)子系統(tǒng)相結(jié)合,利用數(shù)據(jù)子系統(tǒng)的資源來進行控制子系統(tǒng)的設(shè)計。雖然這種方案沒有前者那樣看起來模塊清晰,但是由于和數(shù)據(jù)子系統(tǒng)結(jié)合在一起,在閱讀程序時比較容易了解整個系統(tǒng)的工作流程,需要修改時也不必對各個模塊逐一的修改。4.2控制部分的實現(xiàn)在數(shù)據(jù)子系統(tǒng)中我們討論了在各種操作

14、中的數(shù)據(jù)流向的問題,但并沒有明確的指出數(shù)據(jù)的存儲路徑以及各種標志信號的變化,根據(jù)在上面分析的數(shù)據(jù)流向的基礎(chǔ)上,我們加上各種標志位進行詳細的論述:入棧PUSH若FA=O,FB=0:BDIN,F(xiàn)B1;若FA=O,FB=1:ADIN,F(xiàn)A1;若FA=1,F(xiàn)B=1:RAM(SP)B,SPSP-1,BA,ADIN,F(xiàn)A1,F(xiàn)B1;出棧POP若FA=1,F(xiàn)B=1:DOUTA,F(xiàn)A0;若FA=0,FB=1:DOUTB,F(xiàn)B0,;若FA=0,FB=0:SPSP+1,BRAM(SP),DOUTB,F(xiàn)A0,F(xiàn)B0;算術(shù)運算OP若FA=1,F(xiàn)B=1:BA(OP)B,F(xiàn)A=0,FB=1;若FA=0,FB=1:AB,S

15、PSP+1,BRAM(SP),BA(OP)B,FA=0,FB=1;若FA=0,FB=0:SPSP+1,BRAM(SP),AB,SPSP+1,BRAM(SP),BA(OP)B,FA=0,FB=1;READY信號READY信號用來指示是否可以進行操作,因此當有操作輸入(PUSH,POP,OP)時,READY0,此時封鎖操作信號的輸入,而當當前操作結(jié)束后,應(yīng)立即給READY恢復(fù)為1,允許其他操作的進行。可以用下面的方法來實現(xiàn)READY的賦值:IF(PUSHPOPOP)READY0/READY1;ONE信號ONE信號指示棧內(nèi)只有一個數(shù)據(jù)的情況,指示ONE有兩種情況:QfA=0,FB=1,SP=8QFA

16、=0,FB=0,SP=7;根據(jù)堆棧的特點,入??偸窍热隑寄存器,出??偸窍瘸鯝寄存器,因而不會出現(xiàn)A滿B空的情況,因此FA=1,FB=0,SP=8的情況不予考慮。乘法、除法的數(shù)據(jù)處理由于是定制的乘、除法器,因此在進行乘除的運算時,控制器要將A、B寄存器的值輸出給乘、除法器,然后接收兩個運算器的結(jié)果,對其進行處理后存儲起來,并且顯示運算結(jié)果。我們對乘法和除法作如下的規(guī)定:兩個8位的數(shù)據(jù)相乘之后得到的是16位的結(jié)果,我們這里只取其底8位,當結(jié)果的高8位有結(jié)果時,就輸出錯誤警告,表示運算溢出;對于除法,我們只保留其商,對余數(shù)不做處理。顯示部分的控制由于要求顯示A、B寄存器,數(shù)據(jù)總線,和輸入數(shù)據(jù)的值,

17、因此控制模塊還要把A、B寄存器,數(shù)據(jù)總線的數(shù)據(jù)送至數(shù)碼管顯示,同時還要實時的顯示輸入數(shù)據(jù)的值。FULL信號和EMPTY信號在3.1中已進行過論述,這里不再討論。到此為止,我們已經(jīng)把控制部分的設(shè)計討論結(jié)束,結(jié)合數(shù)據(jù)子系統(tǒng)的設(shè)計,我們就得到了最終的堆棧處理器,它可以實現(xiàn)堆棧和基本的算術(shù)運算操作。五、總結(jié)51仿真結(jié)果由于堆棧處理器的輸入輸出變量較多,把所有的輸入輸出放在一起進行仿真不易觀察結(jié)果,觀察不到內(nèi)部個狀態(tài)的轉(zhuǎn)移,數(shù)據(jù)的存儲等,因此這里分塊對系統(tǒng)進行仿真,分別對入棧PUSH,出棧POP,算術(shù)運算OP進行仿真,下面是仿真的結(jié)果。Q入棧PUSH的仿真圖六、入棧PUSH的波形仿真由于試驗箱的按鍵有限

18、,因此這里我們定義了兩個計數(shù)器作為數(shù)據(jù)的輸入,dinl,din2為計數(shù)器的輸入,dispA,dispB為A、B寄存器得到內(nèi)容,F(xiàn)A,F(xiàn)B為A、B寄存器的標志位,data_bus為數(shù)據(jù)總線的內(nèi)容,data_set為輸入的數(shù)據(jù),sp為堆棧指針(RAM的地址),sram為我們定義的8*8的RAM。如圖所示,在入棧前,堆棧處理器為空,empty為1,第一次PUSH時,A、B均空,因此B寄存器存入數(shù)據(jù)1,且FB為1,此時SP指針不變,這時只有一個數(shù)據(jù),one為1第二次PUSH時,A空B滿,A寄存器存放輸入數(shù)據(jù)2,FA變?yōu)?,SP仍舊沒有變化;第三次PUSH時,A、B均滿,B寄存器中的1放入了RAM的最底

19、部單元RAM7中,A寄存器中的2放入了B中,A中存放新進入的數(shù)據(jù)3,且SP-1;從圖中我們可以看到ready信號的變化,沒有操作時,ready始終為1,當有操作進行時ready立即跳變?yōu)?,封鎖其他的操作。綜上所述,堆棧(push)操作完全符合前面所分析的指標的要求,是正確的。Q出棧POP的仿真P0elk畛1dinlim2din2田t1:0XX312pushii_i1_13pop1_11I1i_Z14ready1丨Il_11i11I1IiCy15田hta_buzi:0XXto!:w0(X0汎、iXBlCy24田dizpAirk0313pilEh14popni5op_enop218C27Cy36

20、busdizpBFE47emptyLUiiiiiiiiiUl11J:oif23L11iiinEElEUEEEEEl00000206126圖九、乘法(MUL)的仿真如圖所示,事先我們已經(jīng)往A、B寄存器中放入了兩個數(shù)3和2,進行一圖十、除法(DIV)的仿真如圖,A寄存器的值為3,B寄存器的值為2,進行一次除法(op2=1,op1=1)后,得到的商為1,由前面的分析我們知道余數(shù)被舍棄了,因此我們只保留運算的商,并將它存放在B寄存器中。5.2系統(tǒng)的缺陷分析這次堆棧處理器的設(shè)計大部分功能均已實現(xiàn),且符合設(shè)計要求,然而還并不十分完美,下面我們就本系統(tǒng)設(shè)計的不足之處進行一下討論。第一,沒有添加錯誤報警模塊,例如棧滿和棧空時雖然有FULL和EMPTY信號,但是還是應(yīng)該增加一個報警指示,當再進行入棧和出棧操作時,指示操作錯誤,并且控制器不執(zhí)行相應(yīng)的操作;算術(shù)運算時,棧內(nèi)只有一個數(shù)據(jù)時進行算術(shù)操作也應(yīng)報警且拒絕算術(shù)操作;此外

溫馨提示

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

評論

0/150

提交評論