計(jì)算機(jī)組成原理堆棧_第1頁(yè)
計(jì)算機(jī)組成原理堆棧_第2頁(yè)
計(jì)算機(jī)組成原理堆棧_第3頁(yè)
計(jì)算機(jī)組成原理堆棧_第4頁(yè)
計(jì)算機(jī)組成原理堆棧_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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、摘 要堆棧是計(jì)算機(jī)系統(tǒng)中的一個(gè)重要概念,也是理解微型計(jì)算機(jī)組成的一個(gè)基礎(chǔ)概念。堆棧是一種存儲(chǔ)部件,即數(shù)據(jù)的寫入跟讀出不需要提供地址,而是根據(jù)寫入的順序決定讀出的順序。堆棧也是一種數(shù)據(jù)結(jié)構(gòu)。有一個(gè)地址指針總指向最后一個(gè)壓入堆棧的數(shù)據(jù)所在的數(shù)據(jù)單元,存放這個(gè)地址指針的寄存器就叫做堆棧指示器。數(shù)據(jù)一個(gè)一個(gè)地存入,這個(gè)過(guò)程叫做“壓?!?。在壓棧的過(guò)程中,每有一個(gè)數(shù)據(jù)壓入堆棧,就放在和前一個(gè)單元相連的后面一個(gè)單元中,堆棧指示器中的地址自動(dòng)加1。讀取這些數(shù)據(jù)時(shí),按照堆棧指示器中的地址讀取數(shù)據(jù),堆棧指示器中的地址數(shù)自動(dòng)減 1。這個(gè)過(guò)程叫做“出棧pop”。如此就實(shí)現(xiàn)了后進(jìn)先出的原則。一般的堆棧存儲(chǔ)器由ram、寄

2、存器a,寄存器b構(gòu)成。算術(shù)運(yùn)算一般在寄存器a和寄存器b 之間進(jìn)行,其中的數(shù)據(jù)可能來(lái)自于進(jìn)棧的輸入也可能來(lái)自棧堆的出棧。運(yùn)算結(jié)果則會(huì)放入寄存器b中以待下步操作。此次的課程設(shè)計(jì)做出的堆棧處理器,使其能與外部數(shù)據(jù)總線進(jìn)行數(shù)據(jù)交換,且符合堆棧要求(先進(jìn)后出),并能對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,且存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)位不少于8位,通過(guò)數(shù)碼管顯示操作數(shù)據(jù)及運(yùn)算結(jié)果(只有寄存器a、b直接與外部總線進(jìn)行數(shù)據(jù)交換,ram只和寄存器b進(jìn)行數(shù)據(jù)交換)。關(guān)鍵詞:堆棧,ram, push, pop , 寄存器a,寄存器b 目 錄一. 任務(wù)解析.3二. 系統(tǒng)方案論證.32.1總體方案與比較論證.32.2 設(shè)計(jì)思路.42.3系統(tǒng)原

3、理與結(jié)構(gòu).4 2.3.1 系統(tǒng)框圖.4 2.3.2 系統(tǒng)結(jié)構(gòu)框圖.5 2.3.3堆棧電路圖.5三. 設(shè)計(jì)過(guò)程.63.1堆棧存儲(chǔ)器的設(shè)計(jì).6 3.1.1堆棧存儲(chǔ)器設(shè)計(jì)原理及仿真結(jié)果.63.2對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算的設(shè)計(jì)及仿真.7 3.2.1 對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行加法運(yùn)算.7 3.2.2 對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行減法運(yùn)算.8 3.2.3 對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行乘法運(yùn)算.8 3.2.4 對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行除法運(yùn)算.9四. 總結(jié).94.1遇到的問(wèn)題及解決方案.94.2設(shè)計(jì)心得.104.3參考文獻(xiàn).101、 任務(wù)解析堆棧處理器應(yīng)能完成兩個(gè)基本的功能:與外部數(shù)據(jù)線的數(shù)據(jù)交換符合堆棧要求(先進(jìn)后出);對(duì)存儲(chǔ)的數(shù)據(jù)能進(jìn)行算術(shù)

4、運(yùn)算。對(duì)整個(gè)堆棧處理器有以下要求:1與外部數(shù)據(jù)線的數(shù)據(jù)交換符合堆棧要求(先進(jìn)后出)即實(shí)現(xiàn)進(jìn)棧(push)和出棧(pop)操作; 2對(duì)存儲(chǔ)的數(shù)據(jù)能進(jìn)行算術(shù)運(yùn)算即能進(jìn)行簡(jiǎn)單的加減乘除算;3數(shù)據(jù)位數(shù)不少于8位:4能進(jìn)行簡(jiǎn)單的判斷運(yùn)算或操作出現(xiàn)錯(cuò)誤時(shí)會(huì)報(bào)警提示。根據(jù)堆棧處理器實(shí)驗(yàn)要求,可畫出程序流程圖如下圖:圖1、程序流程圖2、 系統(tǒng)方案論證2.1 總體方案與比較論證 方案一、直接用vhdl語(yǔ)言實(shí)現(xiàn)其功能,包括對(duì)存儲(chǔ)器的入棧出棧處理、與數(shù)據(jù)總線的數(shù)據(jù)交換,包括對(duì)數(shù)據(jù)的算術(shù)運(yùn)算處理。 此方案可實(shí)現(xiàn)其功能,但是由于對(duì)于算術(shù)運(yùn)算中乘法器和除法器用vhdl語(yǔ)言來(lái)實(shí)現(xiàn)會(huì)比較繁瑣,且不容易實(shí)現(xiàn),故此方案不夠理想。

5、 方案二、直接用lpm模塊進(jìn)行定制ram、乘法器和除法器等器件。 此方案對(duì)于ram、乘法器、除法器的定制比較簡(jiǎn)單、靈活,但是對(duì)于其數(shù)據(jù)先進(jìn)后出的控制會(huì)比較麻煩。 方案三、用vhdl語(yǔ)言來(lái)實(shí)現(xiàn)數(shù)據(jù)的堆棧處理,用lpm模塊進(jìn)行定制乘法器和除法器等器件。 此方案簡(jiǎn)單且易實(shí)現(xiàn)。 綜合以上幾種方案的優(yōu)缺點(diǎn),方案三簡(jiǎn)單易實(shí)現(xiàn),且其實(shí)現(xiàn)的過(guò)程比較簡(jiǎn)單易理解,并且完全可以達(dá)到設(shè)計(jì)要求,故采用第三種方案。2.2設(shè)計(jì)思路圍繞著要實(shí)現(xiàn)的功能,分析堆棧處理器應(yīng)該具有哪些輸入輸出信號(hào),明確設(shè)計(jì)要求。1.從堆棧角度考慮(1)堆棧的指示信號(hào):堆棧其實(shí)是一個(gè)能隨機(jī)存取數(shù)據(jù)的存儲(chǔ)器,它符合先進(jìn)后出的原則。作為一個(gè)存儲(chǔ)器,除工作

6、速度外,它的首要指標(biāo)是容量,設(shè)其字?jǐn)?shù)為aa,每個(gè)字n位。表征存取字位置的指示信號(hào)是地址,在堆棧中稱為指針sp。當(dāng)指針處于棧頂時(shí),sp=0,對(duì)應(yīng)滿棧,應(yīng)有滿棧指示信號(hào)full=1。當(dāng)棧空時(shí),指針sp=aa,應(yīng)有空棧指示信號(hào)empty=1。同時(shí)規(guī)定指針sp始終指向操作之前的棧內(nèi)有內(nèi)容的位置。(2)堆棧的操作:作為堆棧它的操作只有兩項(xiàng),入棧(push)和出棧(pop)。入棧操作push后指針sp(sp-1),出棧操作pop后指針sp(sp+1)。若full=1,不能入棧(push),若empty=1,不能出棧(pop)。否者出現(xiàn)錯(cuò)誤操作信號(hào)提示error=1。2.從算術(shù)運(yùn)算功能考慮首先應(yīng)有進(jìn)行算術(shù)運(yùn)

7、算的指示信號(hào),即輸入信號(hào)add, sub, mul, div。由于不同的運(yùn)算所需的時(shí)間不同,因此必須有一個(gè)啟始信號(hào)start和一個(gè)完成信號(hào)ready。堆棧中兩個(gè)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算的為地址分別為sp和sp+1的兩個(gè)數(shù)據(jù)送入運(yùn)算器進(jìn)行運(yùn)算,運(yùn)算后將結(jié)果送入地址為sp+1的字中。當(dāng)堆棧只有一個(gè)字時(shí),不能進(jìn)行算術(shù)運(yùn)算,因此必須有一個(gè)one指示。當(dāng)指針處于棧底時(shí),sp=aa-1,這時(shí)堆棧只有一個(gè)字,應(yīng)有指示信號(hào)one=1。若此時(shí)進(jìn)行運(yùn)算操作則要有報(bào)錯(cuò)信號(hào)error=1.2.3系統(tǒng)原理與結(jié)構(gòu)2.3.1系統(tǒng)框圖對(duì)本設(shè)計(jì)分析: 在本設(shè)計(jì)中要求此堆棧處理器能與外部數(shù)據(jù)總線進(jìn)行數(shù)據(jù)交換,且數(shù)據(jù)遵循先進(jìn)后出的堆棧要求

8、,并要求有指示信號(hào),即滿棧指示信號(hào)full,空棧指示信號(hào)empty,滿棧時(shí)不能入棧(push),空棧時(shí)不能出棧(pop),在此設(shè)計(jì)中要求對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,故有進(jìn)行加減乘除的指示信號(hào),add、sub、mul、div, 由于不同運(yùn)算所需時(shí)間不同,所以需有一個(gè)啟動(dòng)信號(hào)start和一個(gè)完成信號(hào)ready,當(dāng)堆棧中只有一個(gè)字時(shí)不能進(jìn)行算術(shù)運(yùn)算,故需要一個(gè)one指示信號(hào)來(lái)控制是否可以進(jìn)行算術(shù)運(yùn)算,由此得到如下系統(tǒng)框圖: 圖2、系統(tǒng)框圖2.3.2系統(tǒng)結(jié)構(gòu)框圖通過(guò)對(duì)設(shè)計(jì)任務(wù)的各個(gè)功能實(shí)現(xiàn)的具體分析,得到下面的堆棧處理器的結(jié)構(gòu)框圖: 圖3、結(jié)構(gòu)框圖2.3.3堆棧電路圖 圖4、電路圖3、 設(shè)計(jì)過(guò)程3.1

9、堆棧存儲(chǔ)器的設(shè)計(jì)3.1.1 堆棧存儲(chǔ)器設(shè)計(jì)原理及仿真結(jié)果 對(duì)此設(shè)計(jì)進(jìn)行具體分析,首先是對(duì)數(shù)據(jù)的先進(jìn)后出的堆棧處理: 圖5、堆棧存儲(chǔ)器結(jié)構(gòu)圖堆棧其實(shí)是一個(gè)能隨機(jī)存取數(shù)據(jù)的存儲(chǔ)器,它符合先進(jìn)后出的原則。作為一個(gè)存儲(chǔ)器,除工作速度外,它的首要指標(biāo)是容量,設(shè)其字?jǐn)?shù)為aa,每個(gè)字n位。表征存取字位置的指示信號(hào)是地址,在堆棧中稱為指針sp。當(dāng)指針處于棧頂時(shí),sp=0,對(duì)應(yīng)滿棧,應(yīng)有滿棧指示信號(hào)full=1。當(dāng)??諘r(shí),指針sp=aa,應(yīng)有空棧指示信號(hào)empty=1。同時(shí)規(guī)定指針sp始終指向操作之前的棧內(nèi)有內(nèi)容的位置。設(shè)fa、fb為寄存器a、b的指示信號(hào),當(dāng)fa=1、fb=1時(shí)表示a、b中存有數(shù)據(jù)。當(dāng)指針處于

10、棧頂即sp=0、fa=1、fb=1時(shí),棧滿full=1;當(dāng)指針sp=8、fa=0、fb=0時(shí),??誩mpty=1;當(dāng)sp=7、fa=0、fb=0或sp=8、fa=0、fb=1時(shí),堆棧中只有一個(gè)數(shù)據(jù),one=1。當(dāng)full=1時(shí),不能入棧(push);當(dāng)empty=1時(shí),不能出棧(pop);當(dāng)one=1時(shí),不能進(jìn)行算術(shù)運(yùn)算。圖6堆棧存儲(chǔ)器進(jìn)棧出棧的仿真圖由圖6可知,當(dāng)push=1即高電平時(shí),壓入寄存器b的數(shù)據(jù)為2,而后push為低電平,當(dāng)其為高電平時(shí)壓入寄存器a第二個(gè)數(shù)據(jù)3,當(dāng)pop=1時(shí),數(shù)據(jù)出棧,此時(shí)寄存器a、b均滿,將寄存器a中數(shù)據(jù)輸出到數(shù)據(jù)總線上,輸出數(shù)據(jù)為3。3.2 對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算

11、的設(shè)計(jì)及仿真在此設(shè)計(jì)中,對(duì)于存儲(chǔ)器中數(shù)據(jù)的運(yùn)算是,將數(shù)據(jù)存入寄存器a和寄存器b中進(jìn)行算術(shù)運(yùn)算之后,再將運(yùn)算結(jié)果存入寄存器b中的過(guò)程。3.2.1對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行加法運(yùn)算: 圖7存儲(chǔ)器中數(shù)據(jù)進(jìn)行加法運(yùn)算的仿真圖由圖7可知,依次壓入兩個(gè)數(shù)據(jù)2、3,壓入之后數(shù)據(jù)2存入寄存器b中,3存入寄存器a中,當(dāng)start=1,enter2=0且enter1=0時(shí),數(shù)據(jù)進(jìn)行加法運(yùn)算,結(jié)果為5,存入b寄存器中。3.2.2對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行減法運(yùn)算:圖8存儲(chǔ)器中數(shù)據(jù)進(jìn)行減法運(yùn)算的仿真圖由圖8可知,依次在寄存器b,a中存入數(shù)據(jù)2和3,,當(dāng)start=1,enter2=0且enter1=1時(shí),進(jìn)行減法運(yùn)算,結(jié)果為1,存入

12、b寄存器中。3.2.3對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行乘法運(yùn)算: 圖9存儲(chǔ)器中數(shù)據(jù)進(jìn)行乘法運(yùn)算的仿真圖 依次壓入數(shù)據(jù)2、3,此時(shí)寄存器a和寄存器b中內(nèi)容分別是3和2,當(dāng)start=1,enter2=1且enter1=0時(shí),進(jìn)行乘法運(yùn)算,結(jié)果為6,存入寄存器b中。此時(shí)寄存器a空b滿,再壓入數(shù)據(jù)15,壓入的數(shù)據(jù)存入寄存器a中,當(dāng)start=1,enter2=1且enter1=0時(shí),進(jìn)行乘法運(yùn)算(6*15),結(jié)果有溢出,error=1,發(fā)出報(bào)警信號(hào)。3.2.4對(duì)存儲(chǔ)器中數(shù)據(jù)進(jìn)行除法運(yùn)算:圖10存儲(chǔ)器中數(shù)據(jù)進(jìn)行除法運(yùn)算的仿真圖 依次壓入數(shù)據(jù)3、6,此時(shí)寄存器a和寄存器b中內(nèi)容分別是6和3,當(dāng)start=1,ente

13、r2=1且enter1=1時(shí),進(jìn)行除法運(yùn)算(6/3),結(jié)果為2,存入寄存器b中。4、 總結(jié)4.1 遇到的問(wèn)題及解決方案為期兩周的堆棧處理器課程設(shè)計(jì)終于完成了,努力終于有了結(jié)果,學(xué)到了很多有用的知識(shí),其中也遇到了很多的問(wèn)題。在課程設(shè)計(jì)開始的時(shí)候,我選用vhdl語(yǔ)言編寫乘法器和除法器的程序,但在這個(gè)問(wèn)題上思考花費(fèi)的時(shí)間比較長(zhǎng),并且最終也沒有得到預(yù)期的結(jié)果,乘法器的程序剛開始編寫的時(shí)候就遇到了問(wèn)題,想到乘法如何實(shí)現(xiàn),怎樣實(shí)現(xiàn),多次仿真之后始終得不到滿意的結(jié)果,到最后經(jīng)老師指點(diǎn),順利編寫成功,經(jīng)過(guò)仿真之后結(jié)果也比較令人滿意,但是在編寫除法器的過(guò)程中又遇到了很多的問(wèn)題,編寫出來(lái)的程序仿真結(jié)果一直不正確,

14、最終感覺到自己能力有限,就放棄了這種用vhdl語(yǔ)言實(shí)現(xiàn)乘法器和除法器的方案,選擇了用lpm模塊定制乘法器和除法器的方案來(lái)完成設(shè)計(jì),最終選定模式5,并且對(duì)自己的程序進(jìn)行了修改,合理安排輸入輸出,然后下載到試驗(yàn)箱上觀察實(shí)驗(yàn)結(jié)果。最初的開始只有入棧、出棧、加法和減法結(jié)果正確,乘法和除法的結(jié)果都不正確,通過(guò)檢查發(fā)現(xiàn)是自己在建工程的過(guò)程中出現(xiàn)錯(cuò)誤,沒有把頂層文件名和工程名保持一致,之后只好又重新開始建工程,編譯下載,最終在實(shí)驗(yàn)板上看到了實(shí)驗(yàn)結(jié)果,實(shí)現(xiàn)了堆棧處理器應(yīng)能完成兩個(gè)基本的功能:與外部數(shù)據(jù)線的數(shù)據(jù)交換符合堆棧要求(先進(jìn)后出);對(duì)存儲(chǔ)的數(shù)據(jù)能進(jìn)行算術(shù)運(yùn)算,由此完成了此次對(duì)于堆棧處理器的課程設(shè)計(jì)。4.

15、2 設(shè)計(jì)心得 整個(gè)堆棧設(shè)計(jì)通過(guò)了軟件和硬件上的測(cè)試,我想這對(duì)于自己以后的學(xué)習(xí)和工作都會(huì)有很大的幫助。在這次設(shè)計(jì)中遇到了很多實(shí)際性的問(wèn)題,在實(shí)際設(shè)計(jì)中才發(fā)現(xiàn),書本上理論性的東西與在實(shí)際運(yùn)用中的還是有一定的出入的,所以有些問(wèn)題不但要深入地理解,而且要不斷地更正以前的錯(cuò)誤思維。一切問(wèn)題必須要靠自己一點(diǎn)一滴的解決,而在解決的過(guò)程當(dāng)中你會(huì)發(fā)現(xiàn)自己在飛速的提升,對(duì)于堆棧處理器,其程序結(jié)構(gòu)很簡(jiǎn)單,但編寫起來(lái)有些難度,主要是解決程序設(shè)計(jì)中的問(wèn)題,而程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了自己解決問(wèn)題的邏輯思維和創(chuàng)新能力,它才是一個(gè)設(shè)計(jì)的靈魂所在。因此在整個(gè)設(shè)計(jì)過(guò)程中大部分時(shí)間是用在程序上面的。很多子程序是借鑒書本上的,但怎樣銜接各個(gè)子程序才是關(guān)鍵的問(wèn)題所在,這需要對(duì)系統(tǒng)的結(jié)構(gòu)很熟悉。因此可以說(shuō)系統(tǒng)的設(shè)計(jì)是軟件和硬件的結(jié)合,二者是密不可分的。通過(guò)這次課程設(shè)計(jì)我也發(fā)現(xiàn)了自身存在的不足之處,雖然感覺理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過(guò)程中仍有意想不到的困惑,經(jīng)過(guò)一番努力才得以解決。 這也激發(fā)了我今后努力學(xué)習(xí)的興趣,我想這將對(duì)我以后的學(xué)習(xí)產(chǎn)生積極的影響。其次,這次課程設(shè)計(jì)過(guò)程中,當(dāng)我們碰到不明白的問(wèn)題時(shí),齊老師總是耐心耐心的

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論