版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 題目:基于微程序控制器的簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p> 課程名稱: </p><p> 專業(yè)班級: </p><p> 學(xué) 號:
2、 </p><p> 姓 名: </p><p> 指導(dǎo)教師: </p><p> 同組人員: </p><p> 試驗(yàn)臺號:
3、 </p><p> 完成時(shí)間: </p><p> 報(bào)告日期: </p><p> 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p><b> 目 錄</b></p>&
4、lt;p> 1 課程設(shè)計(jì)概述1</p><p> 1.1 課設(shè)目的1</p><p> 1.2 設(shè)計(jì)任務(wù)1</p><p> 1.3 設(shè)計(jì)要求1</p><p> 2 實(shí)驗(yàn)原理與環(huán)境2</p><p> 2.1 實(shí)驗(yàn)原理結(jié)構(gòu)圖2</p><p> 2.1.1 功能
5、結(jié)構(gòu)圖2</p><p> 2.1.2 中央處理器的功能2</p><p> 2.1.3 中央處理器的組成3</p><p> 2.2 實(shí)驗(yàn)環(huán)境4</p><p> 3 模塊設(shè)計(jì)方案5</p><p> 3.1 實(shí)驗(yàn)分析5</p><p> 3.2 數(shù)據(jù)通路圖5<
6、/p><p> 3.3 模塊設(shè)計(jì)6</p><p> 3.2.1 主存儲器6</p><p> 3.2.3 控制存儲器7</p><p> 3.2.3 運(yùn)算器和寄存器9</p><p> 3.2.4 程序計(jì)數(shù)器11</p><p> 3.2.5 總體設(shè)計(jì)12</p>
7、;<p> 4 微指令設(shè)計(jì)14</p><p> 4.1 機(jī)器指令設(shè)計(jì)14</p><p> 4.2 微指令設(shè)計(jì)14</p><p> 4.3 微程序設(shè)計(jì)14</p><p> 4.4 指令流程圖15</p><p> 4.4.1 取指公操作16</p><p&
8、gt; 4.4.2 立即數(shù)加17</p><p> 4.4.3 直接尋址加17</p><p> 4.4.4 直接尋址減18</p><p> 4.4.5 回存19</p><p> 4.4.6 無條件跳轉(zhuǎn)20</p><p> 4.4.7 有條件跳轉(zhuǎn)20</p><p>
9、; 4.4.8 非21</p><p> 4.4.9 與22</p><p> 4.4.10 異或22</p><p> 4.4.11 SHL24</p><p> 4.4.12 LOAD24</p><p> 4.5 芯片控點(diǎn)設(shè)計(jì)25</p><p> 5 實(shí)驗(yàn)過程與
10、調(diào)試27</p><p> 5.1 主要故障與調(diào)試27</p><p> 5.1.1 395載入失敗27</p><p> 5.1.2 6116中存儲數(shù)據(jù)被改變27</p><p> 5.1.3 2816中存儲數(shù)據(jù)被改變27</p><p> 5.1.4 193計(jì)數(shù)器跳轉(zhuǎn)出問題28</p&g
11、t;<p> 5.1.5 193自加時(shí)的毛刺28</p><p> 5.2 功能測試28</p><p> 5.3 實(shí)驗(yàn)流程30</p><p> 6 設(shè)計(jì)總結(jié)與心得31</p><p> 6.1 課設(shè)總結(jié)31</p><p> 6.1.1 方案總結(jié)31</p>&l
12、t;p> 6.1.2 功能總結(jié)31</p><p> 6.1.3 未實(shí)現(xiàn)功能總結(jié)31</p><p> 6.2 課設(shè)心得31</p><p><b> 參考文獻(xiàn)33</b></p><p> 附錄 部分芯片介紹34</p><p><b> 1 課程設(shè)計(jì)概述&
13、lt;/b></p><p><b> 1.1 課設(shè)目的</b></p><p> 計(jì)算機(jī)組成原理是計(jì)算機(jī)專業(yè)的核心基礎(chǔ)課。本課程力圖以“培養(yǎng)學(xué)生現(xiàn)代計(jì)算機(jī)系統(tǒng)設(shè)計(jì)能力”為目標(biāo),貫徹“強(qiáng)調(diào)軟/硬件關(guān)聯(lián)與協(xié)同、以CPU設(shè)計(jì)為核心/層次化系統(tǒng)設(shè)計(jì)的組織思路,有效地增強(qiáng)對學(xué)生的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)能力的培養(yǎng)”。課程設(shè)計(jì)是學(xué)完該課程并進(jìn)行多個(gè)單元實(shí)驗(yàn)后,綜合利用所學(xué)的理論
14、知識,并結(jié)合在單元實(shí)驗(yàn)中所積累的計(jì)算機(jī)部件設(shè)計(jì)和調(diào)試方法,設(shè)計(jì)出一臺具有自己指令系統(tǒng)的簡單計(jì)算機(jī)系統(tǒng)。所設(shè)計(jì)的系統(tǒng)能在基于EDA的實(shí)驗(yàn)平臺上運(yùn)行一段程序,通過檢查程序結(jié)果的正確性來判斷所設(shè)計(jì)計(jì)算機(jī)系統(tǒng)正確性。</p><p> 課程設(shè)計(jì)屬于設(shè)計(jì)型實(shí)驗(yàn),不僅鍛煉學(xué)生簡單計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)能力,而且通過進(jìn)行主機(jī)系統(tǒng)底層電路的實(shí)現(xiàn)、故障分析與定位、系統(tǒng)調(diào)式等環(huán)節(jié)的鍛煉,進(jìn)一步提高了學(xué)生分析和解決問題的能力。</p
15、><p><b> 1.2 設(shè)計(jì)任務(wù)</b></p><p> 課程設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)一臺簡單的計(jì)算機(jī)系統(tǒng),并調(diào)試通過。本組所選用的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是基于微程序控制器的簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。 </p><p> 完成數(shù)據(jù)通路設(shè)計(jì)并驗(yàn)證數(shù)據(jù)通路功能.確定CPU 的基本結(jié)構(gòu)是采用總線方式還是采用專用通路方式;</p>
16、;<p> 完成指定功能的各指令周期流程圖(表)和所需要的控制信號。把所有指令的狀態(tài)進(jìn)行綜合,并歸納成最終需要的若干個(gè)狀態(tài),畫出指令流程的狀態(tài)圖,根據(jù)狀態(tài)圖設(shè)計(jì)狀態(tài)機(jī);</p><p> 完成時(shí)序列電路設(shè)計(jì)。通過畫出帶控制信號的多周期數(shù)據(jù)通路圖,列出 指令譯碼表,設(shè)計(jì)控制譯碼器。最后將控制譯碼器信號與多周期數(shù)據(jù)通路圖上的控制信號對應(yīng)相連;</p><p><b>
17、; 主要技術(shù)指標(biāo)如下:</b></p><p> 1) 支持算術(shù)運(yùn)算、邏輯運(yùn)算、存儲器讀寫、寄存器間數(shù)據(jù)傳送等幾類指令。</p><p> 2) 支持立即數(shù)尋址、直接尋址、隱含尋址、寄存器尋址等幾種基本的數(shù)據(jù)尋址方式和順序?qū)ぶ?、跳躍尋址兩種指令的尋址方式。</p><p> 3) 支持10條以上的指令。</p><p>
18、 4) 能運(yùn)行由自己所是設(shè)計(jì)的指令系統(tǒng)構(gòu)成的一段程序,程序執(zhí)行功能正確。</p><p><b> 1.3 設(shè)計(jì)要求</b></p><p> 根據(jù)課程設(shè)計(jì)指導(dǎo)書的要求,制定出設(shè)計(jì)方案;</p><p> 2) 畫出自己所設(shè)計(jì)計(jì)算機(jī)系統(tǒng)的原理框圖和器件連接圖,分析器件連接圖中各器件不同引腳的功能,哪些可以固定連接,哪些需要通過微程序來控制
19、,及這些控制信號的有效形式;</p><p> 3) 畫出各指令的指令周期流程圖和所需要的控制信號;</p><p> 4) 設(shè)計(jì)出實(shí)現(xiàn)指令功能的微程序控制器或硬布線控制器;</p><p> 5) 布線、調(diào)試、驗(yàn)收;</p><p> 6) 課程設(shè)計(jì)報(bào)告和總結(jié)。</p><p><b> 2 實(shí)驗(yàn)
20、原理與環(huán)境</b></p><p> 2.1 實(shí)驗(yàn)原理結(jié)構(gòu)圖</p><p> 2.1.1 功能結(jié)構(gòu)圖</p><p> 組成原理課程設(shè)計(jì)CPU功能結(jié)構(gòu)圖如圖2.1所示。</p><p> 圖2.1 CPU功能結(jié)構(gòu)圖</p><p> 2.1.2 中央處理器的功能</p><p
21、> CPU作為運(yùn)行指令的部件,從保證程序功能正確的角度看,CPU應(yīng)該具有以下幾方面的功能:</p><p> 1)指令執(zhí)行順序的控制。即控制程序中的指令按事先規(guī)定的順序自動執(zhí)行,從而保證程序執(zhí)行過程中,指令在邏輯上的相互關(guān)系不被改變。</p><p> 2)指令的操作控制。即產(chǎn)生指令執(zhí)行過程中所需要的信號,以控制執(zhí)行部件按指令規(guī)定的操作運(yùn)行。</p><p&
22、gt; 3)時(shí)間控制。即對每個(gè)控制信號進(jìn)行定時(shí),一邊按規(guī)定的時(shí)間順序啟動各操作。對于任何一條指令而言,如果操作控制信號的時(shí)間不正確,則指令的功能也就不能正確的實(shí)現(xiàn)。</p><p> 4)數(shù)據(jù)加工處理。即對數(shù)據(jù)進(jìn)行算術(shù)、邏輯運(yùn)算,或?qū)?shù)據(jù)在相關(guān)的部件之間傳輸。</p><p> 5)異常和中斷處理。即處理運(yùn)算中的異常及處理外部設(shè)備的中斷服務(wù)請求等。</p><p&
23、gt; 2.1.3 中央處理器的組成</p><p> 中央處理器主要由控制器和運(yùn)算器兩部分構(gòu)成??刂破鞯闹饕δ馨ǎ喝≈噶?、計(jì)算下一條指令的地址、對指令譯碼、產(chǎn)生相應(yīng)的操作控制信號、控制指令執(zhí)行的步驟和數(shù)據(jù)流動的方向。運(yùn)算器是執(zhí)行部件,有算術(shù)邏輯單元和各種寄存器組成。運(yùn)算器接受控制器的命令執(zhí)行算術(shù)運(yùn)算、邏輯運(yùn)算即邏輯測試。許多中央處理器中具有多個(gè)運(yùn)算功能單元,這些功能單元能夠進(jìn)行并行運(yùn)算。中央處理器的功能
24、與其結(jié)構(gòu)緊密相關(guān),任何一種功能都依賴相應(yīng)的硬件去實(shí)現(xiàn)。如圖2.1是一種能實(shí)現(xiàn)上述功能的CPU基本組成。</p><p> 下面對圖2.1的各部分功能進(jìn)行簡要分析。</p><p> a.CPU內(nèi)常用的寄存器</p><p> 1)PC(程序計(jì)數(shù)器)</p><p> PC保存將要執(zhí)行的指令地址,又稱指令地址寄存器。CPU取指令時(shí),將P
25、C的內(nèi)容送到主存地址寄存器,然后修改PC的值形成下一條要執(zhí)行的指令地址,有以下兩種修改PC內(nèi)容的方法:(1)程序順序執(zhí)行是,可利用程序計(jì)數(shù)器本身的遞增功能來實(shí)現(xiàn),若程序無此功能,則通過加法器實(shí)現(xiàn);(2)轉(zhuǎn)移時(shí),用轉(zhuǎn)移指令提供的地址修改PC的值。</p><p> 2)IR(指令寄存器)</p><p> IR用于保存指令。從主存儲器取出的指令存放在IR中,直到新的指令從主存中取出為止。
26、IR中對應(yīng)于指令操作碼的部分輸出送到指令譯碼器。IR中指令的操作碼字段內(nèi)容經(jīng)指令譯碼器,送到微操作信號形成不見;指令的地址碼字段根據(jù)尋址方式的不同可能送入程序計(jì)數(shù)器、地址寄存器或運(yùn)算部件。有的機(jī)器指令操作碼中包含尋址方式,因此不單獨(dú)設(shè)計(jì)尋址方式字段;有的機(jī)器將尋址方式字段和操作碼一并送入指令譯碼器;有的機(jī)器將操作碼字段和地址碼字段送入地址形成部件,以決定地址碼的作用。</p><p> 3)AR(地址寄存器)&
27、lt;/p><p> AR用來保存當(dāng)前CPU所要訪問的主存單元地址,無論CPU是取指令還是存取數(shù)據(jù),都必須先將要訪問的主存單元地址送AR,知道讀寫操作完成。</p><p> 4)DR(數(shù)據(jù)緩沖寄存器):</p><p> DR作為CPU和主存之間的數(shù)據(jù)緩沖寄存器用于存放操作數(shù)、運(yùn)算結(jié)果或 中間結(jié)果以減少訪問主存的次數(shù);也可以存放從主存中讀出的數(shù)據(jù),或準(zhǔn)備寫入的數(shù)
28、據(jù)。</p><p> b.指令譯碼器、地址形成部件和微操作產(chǎn)生部件</p><p><b> 指令譯碼器(ID)</b></p><p> 指令譯碼器對指令的操作碼進(jìn)行譯碼,它的輸出送到微操作產(chǎn)生部件。</p><p><b> 地址形成部件</b></p><p>
29、; 地址形成部件對指令的尋址方式字段、地址字段進(jìn)行譯碼,計(jì)算操作數(shù)的地址信息。</p><p><b> 3)微操作產(chǎn)生部件</b></p><p> 微操作產(chǎn)生部件接收指令譯碼器送來的信息,與時(shí)序信號、條件及狀態(tài)信息進(jìn)行組合,形成各種具有時(shí)間標(biāo)志的控制信號(即微操作控制序列)并發(fā)送到計(jì)算機(jī)的各個(gè)部件。</p><p> 微操作產(chǎn)生部件
30、是控制決策機(jī)構(gòu)。信息流的控制就是把操作產(chǎn)生部件的微操作控制序列(即微操作控制信號),送到各個(gè)部件的控制門、觸發(fā)器或鎖存器,去打開或關(guān)閉某些特定的門電路,使數(shù)據(jù)信息按完成指令功能所需要經(jīng)過的路徑,從一個(gè)功能部件傳送到另一個(gè)功能部件,實(shí)現(xiàn)對數(shù)據(jù)加工處理的控制。</p><p> 根據(jù)設(shè)計(jì)方法不同,微操作產(chǎn)生部件的結(jié)構(gòu)有三種不同的類型:組合邏輯型、存儲邏輯型即前兩者的結(jié)合型。它們分別對應(yīng)三中不同的控制器組成方式:組合
31、邏輯控制器、微程序控制器及組合邏輯與存儲邏輯混合型控制器。</p><p><b> c.時(shí)序控制部件</b></p><p> 指令執(zhí)行過程中所有操作都必須按照一定的次序完成,而且每個(gè)操作在什么時(shí)刻執(zhí)行,執(zhí)行多長時(shí)間都有嚴(yán)格的規(guī)定,不能有任何差錯。例如執(zhí)行加法 指令,必須先將操作數(shù)送到ALU的輸入端,然后再給出ALU執(zhí)行加法的操作控制信號,待加法操作完成后,才能
32、將結(jié)果送往目的地。不僅次序有規(guī)定,而且對什么時(shí)刻送操作數(shù)、什么時(shí)刻執(zhí)行加法操作、什么時(shí)刻送出結(jié)果也有規(guī)定。因此,需要時(shí)序概念。圖2.1中時(shí)序控制部件的作用就是產(chǎn)生一組時(shí)序信號,即一系列電位與脈沖,送到微操作產(chǎn)生部件,對各種操作信號進(jìn)行時(shí)序控制。</p><p><b> 2.2 實(shí)驗(yàn)環(huán)境</b></p><p> JZYL—Ⅱ型計(jì)算機(jī)組成原理實(shí)驗(yàn)儀一臺。</
33、p><p><b> 導(dǎo)線若干。</b></p><p> 涉及芯片類型及數(shù)量如表2.1所示。</p><p> 表2.1 所需芯片類型及數(shù)量</p><p><b> 3 模塊設(shè)計(jì)方案</b></p><p><b> 3.1 實(shí)驗(yàn)分析</b>&
34、lt;/p><p> 分析本次課程設(shè)計(jì)中對簡易CPU的要求,需要設(shè)計(jì)的功能部件有主存儲器、控制存儲器、運(yùn)算器、寄存器、計(jì)數(shù)器等。由于課程設(shè)計(jì)提供的芯片種類有限,我們選取了其中的74LS373、181、6116、2816A、74LS244、74LS193、74LS157、74LS395等芯片實(shí)現(xiàn)相應(yīng)的功能。</p><p> 我們設(shè)計(jì)的機(jī)器指令長度為8為,其中前4位為操作碼,后四位為操作數(shù)。
35、</p><p> 在設(shè)計(jì)方案時(shí),我們先將總體方案分解為多個(gè)小的模塊,分別進(jìn)行設(shè)計(jì),然后再將各個(gè)模塊拼接在一起,實(shí)現(xiàn)最終需要的功能。分解的模塊包括主存儲器、控制存儲器、運(yùn)算器、寄存器、計(jì)數(shù)器。下面將逐個(gè)分析各個(gè)模塊的設(shè)計(jì)思路。</p><p><b> 3.2 數(shù)據(jù)通路圖</b></p><p> 圖3.1 數(shù)據(jù)通路圖</p>
36、;<p> 課程設(shè)計(jì)的數(shù)據(jù)通路圖如圖3.1所示。圖中標(biāo)明了計(jì)算機(jī)系統(tǒng)中的各個(gè)部件,包括內(nèi)存、程序計(jì)數(shù)器、運(yùn)算器、寄存器、控制存儲器、指令寄存器、數(shù)據(jù)寄存器、微指令寄存器等等功能部件。同時(shí),也注明了不同部件的芯片組成,以及控制信號??刂菩盘柺怯晌⒊绦蛑械男盘枺ㄒ?.3 微程序設(shè)計(jì))和時(shí)序節(jié)拍通過組合邏輯的方式形成。</p><p><b> 3.3 模塊設(shè)計(jì)</b></
37、p><p> 3.2.1 主存儲器</p><p> 主存儲器相當(dāng)于計(jì)算機(jī)系統(tǒng)中的主存。我們選擇一片6116作為主存儲器。我們設(shè)計(jì)的機(jī)器指令長度為8位,低4位為操作數(shù),所以,我們只選用了6116的低四位地址,其他地址位均接低電平。換言之,我們能手動寫入的內(nèi)存只有16位,分別從0000到1111。</p><p> 在寫入6116時(shí),使用了一片74LS244作為緩沖
38、器。因?yàn)樵诳傮w電路中,6116的輸入可能會有多個(gè),為了避免沖突,使用一片244可以方便后面輸入端的選擇。</p><p> 6116的地址通過一片74LS157后輸入。選擇74LS157的原因是,6116的地址選擇有多種情況。第一種情況是手動輸入地址,這種情況發(fā)生在程序執(zhí)行前,需往6116中寫入程序,此時(shí)的地址由操作人員手動選擇;第二種情況是程序自動選擇,這種情況發(fā)生在程序連續(xù)執(zhí)行過程中,由PC自動選擇內(nèi)存地址
39、,取出操作指令或者指令的實(shí)現(xiàn)方式為直接尋址時(shí),選擇數(shù)據(jù)的地址。主存儲器的結(jié)構(gòu)圖如3.2所示。</p><p> 圖3.2 主存儲器結(jié)構(gòu)圖</p><p> 6116芯片的功能如表3.1所示。我們選擇的寫模式為=L,=L,=L。我們選擇的讀模式為=L,=H,=L。其中,需要控制的只有,另外兩個(gè)輸入保持不變。6116是RAM芯片,斷電后,芯片內(nèi)的信息將會丟失。</p><
40、;p> 表3.1 6116芯片功能表</p><p> 74LS244芯片的功能如表3.2所示。</p><p> 表3.2 74LS244芯片功能表</p><p> 74LS157芯片的功能如表3.3所示。</p><p> 表3.3 74LS157芯片功能表</p><p> 3.2.3
41、控制存儲器</p><p> 控制存儲器是整個(gè)課程設(shè)計(jì)中最重要的一個(gè)模塊,這一部分設(shè)計(jì)起來沒有太大難度。但是,由于微程序設(shè)計(jì)中的微指令是從控制存儲器中取出的,這一部分的設(shè)計(jì)尤為重要。</p><p> 我們選擇兩片2816作為控制存儲器。我們設(shè)計(jì)的微指令中,一共有13位有效信號。由于2816是8位的,所以,需要兩片2816存儲需要的微指令。我們設(shè)計(jì)的機(jī)器指令長度為8位,高4位為操作指令
42、,所以,只選用了2816的低四位地址,其他地址位均接低電平。換言之,我們能寫入的控制信號只有16位,分別從0000到1111。實(shí)際上,我們設(shè)計(jì)的指令只有12條,16個(gè)內(nèi)存已能滿足需求。</p><p> 在寫入2816時(shí),使用了一片74LS244作為緩沖器。寫入完成后,去掉74LS244。因?yàn)?816中的信息是確定的,每一個(gè)8位(兩個(gè)2816應(yīng)是16位)都對應(yīng)著一條微指令,只要一次正確寫入后,以后都不需要更改。
43、由于2816是ROM芯片,斷電后,信息不會丟失。但是,寫入數(shù)據(jù)時(shí),需要使用一片74LS244,作為緩沖器。</p><p> 2816的微指令信號輸出后,將會鎖存到373中,避免在指令執(zhí)行周期,控制信號發(fā)生改變。與2816相連的兩片373的功能相當(dāng)于計(jì)算機(jī)系統(tǒng)中的μIR(微指令寄存器)。</p><p> 與2816相連的74LS395的作用是,在執(zhí)行周期結(jié)束后,395清零(也可能是結(jié)
44、束前,只要對結(jié)果不產(chǎn)生干擾就可以),系統(tǒng)進(jìn)入取值周期。</p><p> 與74LS395相連的74LS373相當(dāng)于計(jì)算機(jī)系統(tǒng)中的IR(指令寄存器)。其中,高4位為操作指令,這4位將會作為74LS395的輸入,選擇2816中的微指令,進(jìn)而鎖存在微指令寄存器中??刂拼鎯ζ鞯慕Y(jié)構(gòu)圖如圖3.3所示。</p><p> 結(jié)構(gòu)圖中沒有標(biāo)明寫入2816時(shí)用到的緩沖器74LS244,因?yàn)樗辉趯懭霑r(shí)
45、使用,寫入成功之后,244將沒有其他的作用,可以去掉。</p><p> 圖3.3 控制存儲器結(jié)構(gòu)圖</p><p> 2816的芯片功能如表3.4所示。</p><p> 表3.4 2816芯片功能表</p><p> 74LS373芯片功能如表3.5所示。</p><p> 表4.6 74LS373功能
46、表</p><p> 74LS395芯片功能如表3.6所示。</p><p> 表3.6 74LS395芯片功能表</p><p> 3.2.3 運(yùn)算器和寄存器</p><p> 運(yùn)算器是CPU可以實(shí)現(xiàn)運(yùn)算操作的基本部件,所使用的芯片本身只能實(shí)現(xiàn)最基本的加減算術(shù)運(yùn)算和亦或、非與等基本邏輯運(yùn)算。但是,通過基本運(yùn)算的組合,可以實(shí)現(xiàn)及其復(fù)
47、雜的運(yùn)算,如積分,甚至傅里葉變換?,F(xiàn)代計(jì)算機(jī)可以顯示各種我們需要的功能,但是,如果把每條指令分解來看,可以發(fā)現(xiàn),它可以做到的事情實(shí)際上再簡單不過。唯快不破,它通過將處理速度做到極致,即使它做的事情異常簡單,但是,它能做到的事情卻可以改變整個(gè)世界。</p><p> 由于提供的芯片中,能顯示運(yùn)算操作的芯片只有74LS181。所以,181芯片是實(shí)現(xiàn)運(yùn)算器的不二選擇。由于設(shè)計(jì)的數(shù)據(jù)位數(shù)為8位,而181只能實(shí)現(xiàn)4為的邏
48、輯運(yùn)算和算術(shù)運(yùn)算,所以,我們需要兩片74LS181來實(shí)現(xiàn)8位數(shù)據(jù)操作。181的B輸入通過了74LS157,原因是,由于尋址方式有立即數(shù)和直接尋址,所以,通過157來選擇不同的尋址方式。157中的數(shù)據(jù)有兩種情況,一種是立即數(shù),這時(shí)高四位為0(由于指令位數(shù)的限制,立即數(shù)只能有4位);另一種是直接尋址,這時(shí)181中的8位數(shù)據(jù)全部來自于主存6116。</p><p> 74LS181的運(yùn)算結(jié)果輸入后,鎖存在74LS37
49、3中,這樣,可以防止運(yùn)算結(jié)果被下一條運(yùn)算操作改變。與這個(gè)373相連的是另外一個(gè)74LS373,它的作用相當(dāng)于一個(gè)寄存器。181中的A輸入來自于這個(gè)373(寄存器)。</p><p> 74LS157的其中一個(gè)輸入來自一個(gè)74LS373,它的作用相當(dāng)于計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)寄存器(DR)。直接尋址時(shí),數(shù)據(jù)從主存6116中讀出,鎖存在這個(gè)373中,進(jìn)行運(yùn)算時(shí),數(shù)據(jù)寄存器中的數(shù)據(jù)一直保持不變。運(yùn)算器的結(jié)構(gòu)圖如圖3.4所示
50、。</p><p> 圖3.4 運(yùn)算器結(jié)構(gòu)圖</p><p> 74LS181的功能比較強(qiáng)大,可以實(shí)現(xiàn)多種邏輯運(yùn)算和位運(yùn)算,圖3.5列出了181的部分功能,其中,A0,A1,A2,A3,B0,B1,B2,B3位運(yùn)算器輸入;F0,F(xiàn)1,F(xiàn)2,F(xiàn)3為運(yùn)算器輸出;S0,S1,S2,S3為運(yùn)算指令控制端;M位算術(shù)或邏輯運(yùn)算控制端;為有無進(jìn)位控制端,為高位進(jìn)位。</p><p
51、> 圖3.5 74LS181功能表</p><p> 3.2.4 程序計(jì)數(shù)器</p><p> 程序計(jì)數(shù)器的功能比較簡單,就是在程序執(zhí)行過程中,指示正確的內(nèi)存地址,讓計(jì)算機(jī)自動的從內(nèi)存中讀取出正確的指令執(zhí)行。順序執(zhí)行時(shí),每一條執(zhí)行指令結(jié)束,PC自加1;但有跳轉(zhuǎn)指令出現(xiàn)時(shí),PC被設(shè)置為需要跳轉(zhuǎn)到的內(nèi)存地址。</p><p> 提供的芯片中,具有計(jì)數(shù)功能
52、的有74LS193和74LS181。但是,181的功能過于強(qiáng)大,用這個(gè)比較復(fù)雜的芯片去實(shí)現(xiàn)如此簡單的功能,不太合適,況且,181的置數(shù)操作不太容易實(shí)現(xiàn),經(jīng)比較可以知道,應(yīng)選用193做為顯示程序計(jì)數(shù)器的芯片。一片74LS193便可以實(shí)現(xiàn)。</p><p> 與74LS193相連的373是指令寄存器。當(dāng)出現(xiàn)跳轉(zhuǎn)指令時(shí),指令寄存器的低4位將會被load到193中,以確保下一條指令的執(zhí)行時(shí)正確的。在順序執(zhí)行的情況下,1
53、93實(shí)現(xiàn)的都是+1功能。由于一片193只有四位,所以,能表達(dá)的指令內(nèi)存地址最大只能到1111。</p><p> 74LS193的輸入接到一片74LS157,而此片157的另外一個(gè)輸入為指令寄存器的低4位。這樣設(shè)計(jì)是因?yàn)?,取址周期時(shí),從PC中讀入地址,在從6116的指定內(nèi)存單元中讀出8位操作指令;而在執(zhí)行階段,如果尋址方式為直接尋址,則需要將指令寄存器的低4位作為數(shù)據(jù)的內(nèi)存地址,從6116的指定內(nèi)存單元中讀出8
54、位操作數(shù)。因?yàn)檫@兩種情況都是存在的,所以,需要有一片74LS157來區(qū)分這兩種情況。區(qū)分的條件是不同的機(jī)器指令對應(yīng)著不同的微操作,通過微指令來選擇157的輸出是程序計(jì)數(shù)器的輸入還是指令寄存器的低4位輸入。</p><p> 程序計(jì)數(shù)器的結(jié)構(gòu)圖如圖3.6所示。</p><p> 圖3.6 程序計(jì)數(shù)器結(jié)構(gòu)圖</p><p> 74LS193芯片的功能如表3.7所示
55、。</p><p> 表3.7 74LS193芯片功能表</p><p><b> 功能說明:</b></p><p> 直接清零:當(dāng)=1時(shí),計(jì)數(shù)器異步清零。</p><p> 直接置數(shù):當(dāng)LD=0時(shí),計(jì)數(shù)器異步置數(shù)。</p><p> 二進(jìn)制加/減法計(jì)數(shù)脈沖CPU/CPD上升沿有效。
56、</p><p> 3.2.5 總體設(shè)計(jì)</p><p> 整個(gè)課程設(shè)計(jì)的總體結(jié)構(gòu)圖如圖3.6所示。總體結(jié)構(gòu)圖中,添加了一個(gè)回存的功能,由于只是在寄存器后邊加上一個(gè)74LS244芯片,然后將244的輸出接到主存6116的輸入端,所以,在模塊設(shè)計(jì)中,沒有把回存作為單獨(dú)的一個(gè)模塊說明。</p><p> 圖3.6 總體結(jié)構(gòu)圖</p><p&g
57、t;<b> 4 微指令設(shè)計(jì)</b></p><p> 4.1 機(jī)器指令設(shè)計(jì)</p><p> 根據(jù)課程設(shè)計(jì)要求,我們設(shè)計(jì)的機(jī)器指令為8位,其中,前4位表示操作命令,后4位為操作數(shù)。由于操作命令用4位表示,所以,可以實(shí)現(xiàn)的操作最多只能有16條。</p><p> 設(shè)計(jì)的指令包括算術(shù)指令:立即數(shù)加、直接尋址加、直接尋址減;邏輯運(yùn)算:非運(yùn)算
58、、與運(yùn)算、亦或運(yùn)算;回存;跳轉(zhuǎn)指令:無條件跳轉(zhuǎn)、溢出跳轉(zhuǎn);載入指令;乘二指令;停機(jī)指令;取址操作。其中,直接尋址加、直接尋址減、邏輯運(yùn)算及乘二運(yùn)算均使用隱含尋址。</p><p> 取址操作、立即數(shù)加、載入操作、跳轉(zhuǎn)指令和回存指令均使用立即數(shù)尋址。直接尋址加、直接尋址減、與運(yùn)算、亦或運(yùn)算均使用直接尋址。</p><p> 機(jī)器指令由操作人員將匯編語言翻譯成機(jī)器語言后,手動輸入到內(nèi)存中。
59、</p><p><b> 4.2 微指令設(shè)計(jì)</b></p><p> 控制存儲器由兩片2816組成,最多可以有16位控制信號。但我們在設(shè)計(jì)微指令時(shí),只使用了13個(gè)控制信號,使用了一片2816的所有8位,另一片2816的低5位。</p><p> 微命令編碼方法采用直接表示法,將微指令操作控制字段的每一個(gè)二進(jìn)制位定義為一個(gè)微命令。一條微
60、指令從控存中取出時(shí),它所包含的微命令經(jīng)時(shí)間同步后去控制相應(yīng)的數(shù)據(jù)通路中的部件。13位控制信號機(jī)器作用如表4.1所示。其他3位接低電平。</p><p> 表4.1 控制信號作用</p><p><b> 4.3 微程序設(shè)計(jì)</b></p><p> 程序中每一條指令用8位二進(jìn)制位來表示,而前四位為操作碼,即為實(shí)現(xiàn)該指令的微程序的入口地址
61、,后四位為操作數(shù)的地址(直接尋址)或操作數(shù)(立即數(shù)尋址)。</p><p> 操作指令對應(yīng)的微程序如表4.2所示。寫出這個(gè)表的過程比較復(fù)雜,也是整個(gè)課程設(shè)計(jì)最有技術(shù)含量的一部分,還有一部分是時(shí)序電路的加入。首先,先把可能需要控制的全部芯片控制信號列舉出來,可能會超過16個(gè),但是沒關(guān)系,因?yàn)樵诤竺娴牟襟E中,會發(fā)現(xiàn)有些控制信息一直沒有變化,可以用一個(gè)確定的信號代替。然后,給需要用到的指令分配一個(gè)4位的控存地址,這將
62、會成為該指令的微程序的入口地址。由于指令只有4位,所以,所有指令條數(shù)不能超過16條。接著,就是比較復(fù)雜的一步了。分析每一條指令,畫出每條指令的數(shù)據(jù)流和控制流,(具體流程圖見4.4 指令流程圖)通過這種方式,知道每條指令需要的控制信號。</p><p> 表4.2 匯編指令對應(yīng)的微程序表</p><p> 微程序表中,每條微程序都有16個(gè)控制信號。芯片編號參考圖4.13。如表中編號所示,
63、0,1,2,3分別表示181中的S0,S1,S2,S3;4,5分別表示181中的和M;6表示244a的;7表示157a和157b的使能端S;8表示157c的使能端S;9表示395中的;10用來停機(jī),實(shí)際使用時(shí),沒有使用9號控制信號;11和12分別表示193中的up和load;其他位均為0。</p><p><b> 4.4 指令流程圖</b></p><p> 我
64、們設(shè)計(jì)的指令,包括取址公操作在內(nèi),一共有12條。不同類型的指令控制流和數(shù)據(jù)流都是不相同的,由于數(shù)據(jù)流這個(gè)部分可以參考圖2.1,圖中說明了所有數(shù)據(jù)所在的芯片。在同一個(gè)周期中,數(shù)據(jù)都是存在的,關(guān)鍵在與控制信息在同一個(gè)周期中不同節(jié)拍的控制。需要控制的芯片包括74LS373,它是8位鎖存器,所以,需要控制數(shù)據(jù)何時(shí)寫入373中,何時(shí)保持373中的數(shù)據(jù)不發(fā)生改變;74LS157,它是2選1數(shù)據(jù)選擇器,所以,需要控制輸出數(shù)據(jù)是兩個(gè)輸入數(shù)據(jù)中的哪一個(gè);
65、6116,這個(gè)芯片在回存指令時(shí),必須要在某個(gè)節(jié)拍變成寫模式,但是,在其他指令的周期中,必須一直保持讀模式。另外還需要控制的芯片是74LS395,因?yàn)槿≈分芷谇?,它需要清零,而?zhí)行周期前,它需要置數(shù)。</p><p> 4.4.1 取指公操作</p><p> 我們設(shè)計(jì)的指令都是雙周期的,其中,第一個(gè)周期為取指周期,從內(nèi)存中取出執(zhí)行指令;第二個(gè)周期為執(zhí)行周期,執(zhí)行該指令。取址公操作的控制
66、信號存放在控制存儲器的0000號單元,也就是說,需要進(jìn)行取址操作時(shí),將395清零即可??刂菩盘枏目刂拼鎯ζ髦凶x出后,寫入到微指令寄存器中。通過這一組控制信號,從6116的指定單元中讀出指令。指令存放在指令寄存器中。接下來,將4位操作指令載入74LS395中。這4位操作數(shù)成為這條指令的微程序的入口地址,從控制存儲器中讀出微程序后,鎖存在微指令寄存器中。(這個(gè)鎖存的節(jié)拍不在取指公操作,而是在執(zhí)行周期的第一個(gè)節(jié)拍)</p>&l
67、t;p> 取值公操作的控制流如圖4.1所示。</p><p> 圖4.1 取值公操作控制流</p><p> 4.4.2 立即數(shù)加</p><p> 立即數(shù)加的控制流程圖如圖4.2所示。</p><p> 圖4.2 立即數(shù)加控制流</p><p> 4.4.3 直接尋址加</p>&
68、lt;p> 立即數(shù)加和直接尋址加的區(qū)別在于,立即數(shù)加的加數(shù)為低4位操作數(shù),被加數(shù)為寄存器AC中的值;而直接尋址加的加數(shù)為地址為低4位操作數(shù)的6116單元內(nèi)的數(shù)據(jù),被加數(shù)為寄存器AC中的值。其他基本一致。</p><p> 直接尋址加的控制流程圖如圖4.3所示。</p><p> 圖4.3 直接尋址加控制流</p><p> 4.4.4 直接尋址減&l
69、t;/p><p> 直接尋址加和直接尋址減的數(shù)據(jù)流和控制流上基本一致,只是在74LS181的控制上,對于4個(gè)運(yùn)算控制信號有些區(qū)別。</p><p> 直接尋址減的控制流程圖如圖4.4所示。</p><p> 圖4.4 直接尋址減控制流</p><p><b> 4.4.5 回存</b></p><
70、;p> 回存時(shí),內(nèi)存需要由讀模式變?yōu)閷懩J健?lt;/p><p> 回存控制流程圖如圖4.5所示。</p><p> 圖4.5 回存控制流</p><p> 4.4.6 無條件跳轉(zhuǎn)</p><p> 無條件跳轉(zhuǎn)控制流程圖如4.6所示。</p><p> 圖4.6 無條件跳轉(zhuǎn)控制流</p>
71、<p> 4.4.7 有條件跳轉(zhuǎn)</p><p> 有條件跳轉(zhuǎn)流程圖如圖4.7所示。與無條件跳轉(zhuǎn)的不同之處在于,必須判斷數(shù)據(jù)時(shí)是否溢出。如果有溢出,則實(shí)現(xiàn)跳轉(zhuǎn),否則不實(shí)現(xiàn)跳轉(zhuǎn)。</p><p> 圖4.7 有條件跳轉(zhuǎn)控制流</p><p><b> 4.4.8 非</b></p><p> 求非指
72、令控制流程圖如圖4.8所示。</p><p> 圖4.8 求非指令控制流</p><p><b> 4.4.9 與</b></p><p> 求非指令使用的尋址方式是隱含尋址,但是求與指令使用的尋址方式是隱含尋址加直接尋址。所以,數(shù)據(jù)通路要比求非運(yùn)算要長一些??刂菩盘栆哺鼜?fù)雜一些。</p><p> 求與指令的
73、控制流程圖如圖4.9所示。</p><p> 圖4.9 求與指令控制流</p><p><b> 4.4.10 異或</b></p><p> 亦或指令和與指令的數(shù)據(jù)流和控制流上基本一致,只是在74LS181的控制上,對于4個(gè)運(yùn)算控制信號有些區(qū)別。</p><p> 亦或指令的控制流程圖如圖4.10所示。<
74、;/p><p> 圖4.10 亦或指令控制流</p><p> 圖4.11 乘2指令控制流</p><p> 4.4.11 SHL</p><p> 乘2指令的尋址方式為隱含尋址,即把寄存器AC中的值擴(kuò)大一倍,再存入AC中。</p><p> 乘2指令的控制流程圖如圖4.11所示。</p>&l
75、t;p> 4.4.12 LOAD</p><p> 載入指令的功能是將指定內(nèi)存單元中的數(shù)據(jù)載入寄存器AC中,作為運(yùn)算的初始值。與之相對應(yīng)的是回存指令,它的作用是將寄存器AC中的值存入指定內(nèi)存單元。</p><p> 載入指令的控制流程圖如圖4.12所示。</p><p> 圖4.12 載入指令控制流</p><p> 4.5
76、 芯片控點(diǎn)設(shè)計(jì)</p><p> 在設(shè)計(jì)微指令之前,我們分析整個(gè)電路中的各個(gè)芯片的控點(diǎn),其中有些是需要控制的,而有些是不需要變動的,始終接到一個(gè)電位就可以了。數(shù)據(jù)通路圖如圖4.13所示。</p><p> 圖4.13 數(shù)據(jù)通路圖</p><p> 不需要控制的控點(diǎn)有:</p><p> 向6116輸入的74LS244芯片:和并接到一
77、個(gè)開關(guān)上,只有在寫機(jī)器指令的時(shí)候?yàn)榈碗娖?,其他時(shí)刻都為高電平,手動控制,不需要微指令控制。和并接接地,多余的地址線接在一起并接地。</p><p> 向2816輸入的74LS244芯片:和并接到一個(gè)開關(guān)上,只有在寫微指令的時(shí)候?yàn)榈碗娖?,其他時(shí)刻都為高電平,手動控制,不需要微指令控制。多余地址線接地。</p><p> 74LS157d芯片:使能端S分別接開關(guān),需要手動控制輸入改變地址時(shí)
78、為低電平,0通道選通;其他時(shí)候?yàn)楦唠娖剑?通道選通。</p><p> 所有74LS373芯片的輸出控制端接地。</p><p> 2816芯片:和并接接地,多余的地址線接在一起并接地。</p><p><b> 需要控制的控點(diǎn)有:</b></p><p> 回存244a芯片:和并接一起控制。</p>
79、<p> 74LS157a,74LS157b,74LS157c芯片的使能端S。</p><p> 所有74LS373的使能端S。</p><p> 181芯片:運(yùn)算指令控制端,算術(shù)或邏輯運(yùn)算控制端M,有無進(jìn)位控制端。</p><p><b> 6116芯片:端。</b></p><p> 74LS
80、193的up和load。 </p><p> 74LS395的,和。</p><p> 這些控點(diǎn)都是需要微程序中的信號來控制的,具體控制見表4.2。還有些控制信號需要微程序中的控制信號與時(shí)序節(jié)拍組合邏輯后實(shí)現(xiàn),具體組合邏輯見4.4 指令控制流程圖。</p><p> 表達(dá)式如下。其中T1,T2,T3,T4分別表示一個(gè)周期中的四個(gè)節(jié)拍,C11和C12為表4.2中
81、編號為11,12的控制信號,A3是4位操作指令中的最低位。</p><p> 373a的使能端G = T3;</p><p> 373b的使能端G = T4;</p><p><b> 373c的使能端;</b></p><p><b> 373d的使能端;</b></p>&
82、lt;p> 373e和373f的使能端;</p><p><b> 395的=,;</b></p><p><b> 193的, </b></p><p><b> 5 實(shí)驗(yàn)過程與調(diào)試</b></p><p> 5.1 主要故障與調(diào)試</p>&l
83、t;p> 5.1.1 395載入失敗</p><p> 74LS395在本次課程設(shè)計(jì)中的功能有兩個(gè),第一個(gè)功能是在取址周期前,將數(shù)據(jù)清零。而0000是控制存儲器中,取址指令的入口地址。通過這一操作,將取址的控制信號鎖存在微指令寄存器中,保證雙周期中,取址周期的正確執(zhí)行。第二個(gè)功能是在執(zhí)行周期前,將指令寄存器中的高4位,也就是4位操作命令載入,此時(shí),將會從控制存儲器中讀出特定指令的控制信號,鎖存到微指令寄
84、存器中,保證執(zhí)行周期的正確執(zhí)行。</p><p> 按照步驟連接好電路后,開始測試時(shí),發(fā)現(xiàn)74LS395清零功能是好的,但是,載入功能出問題了。給395提供載入信號后,輸出仍然保持不變,還是0000。</p><p> 接下來需要做的就是排錯。首先,將395的輸入信號和輸出信號分別接到信號燈上,及時(shí)顯示輸入和輸出的數(shù)據(jù)。結(jié)果發(fā)現(xiàn),不論輸入信號如何,加上載入信號后,4個(gè)輸出燈全是藍(lán)色的,
85、也就是0000。問題只有可能出在控制信號上,于是,我們也將控制信號接到信號燈上。讓我們不可思議的是,控制信號也沒有問題。</p><p> 最后,由于時(shí)間的原因,我們必須要離開實(shí)驗(yàn)室,便將試驗(yàn)臺斷電了。第二天來后,發(fā)現(xiàn)這個(gè)問題莫名其妙的被解決了。到現(xiàn)在也不知道載入失敗的原因是什么。</p><p> 5.1.2 6116中存儲數(shù)據(jù)被改變</p><p> 61
86、16數(shù)據(jù)的寫入是一個(gè)很大的問題。寫入數(shù)據(jù)時(shí),之前的已經(jīng)寫入的數(shù)據(jù)經(jīng)常會被后來的數(shù)據(jù)更改,所以,從6116指定的內(nèi)存中讀出數(shù)據(jù)時(shí),顯示在信號燈上的數(shù)據(jù)總是和預(yù)期的不一樣。仔細(xì)觀察后發(fā)現(xiàn),這些數(shù)據(jù)是之后寫入的某些數(shù)據(jù),也就是說,數(shù)據(jù)被改寫了。</p><p> 分析6116的寫入方式,它是直接寫入的,不需要另外的載入信號,當(dāng)?shù)刂繁贿x定后,數(shù)據(jù)就已經(jīng)寫入了制定的內(nèi)存單元中。為了避免這一問題,我們在寫入數(shù)據(jù)的過程中,需
87、要改變地址時(shí),要先選到較大的地址,保證這一地址還沒有寫入數(shù)據(jù)。比如寫完0011后,接下來寫入0100,這時(shí)候需要做的是,先將地址選擇到0111,然后再選擇到0100。通過這種方式,解決了6116中數(shù)據(jù)被改變的問題。</p><p> 5.1.3 2816中存儲數(shù)據(jù)被改變</p><p> 將控制信號寫入2816后,馬上測試,讀出2816中存儲的數(shù)據(jù),保證數(shù)據(jù)都是準(zhǔn)確無誤的。但是,斷電后
88、,第二天發(fā)現(xiàn),2816中的0000單元和0001單元數(shù)據(jù)被改變,而其他單元中的數(shù)據(jù)都沒有問題。我們只能重新寫入2816中的數(shù)據(jù)。這次因?yàn)橥祽?,沒有使用244作為緩沖器,而是直接將信號給到了2816的輸入輸出端。寫入成功后,將2816由寫模式轉(zhuǎn)換成讀模式。結(jié)果,輸出信號燈的顏色變得很詭異,馬上可以判定,這是數(shù)據(jù)沖突了。</p><p> 檢查電路后,發(fā)現(xiàn)這是因?yàn)闆]有使用244的原因。因?yàn)闆]有244的高阻功能,使得
89、輸入信號和2816的輸出信號同時(shí)存在了。將輸入信號去掉后,信號燈變得正常。</p><p> 但是,奇怪的事情發(fā)生了,當(dāng)寫入其中一片2816時(shí),另一片2816的數(shù)據(jù)也被改變了,但是,我們對另一片2816什么也沒做。</p><p> 這樣直接輸入嘗試了幾次之后,發(fā)現(xiàn)這樣的問題一直是存在的。檢查電路發(fā)現(xiàn),兩片2816的控制信號是接在一起,也就是說,當(dāng)一片2816處于寫模式時(shí),另一片281
90、6也處于寫模式(這是由于控制信號相同造成了)。由于另一片2816的輸入沒有給,所以,寫入的數(shù)據(jù)肯定是有問題的。于是,我們將兩片2816同時(shí)寫入,這樣,就不會出現(xiàn)一片2816寫入,另一片輸入懸空的情況了。</p><p> 在寫入2816的過程中,還遇到了一個(gè)問題。因?yàn)橹?816的控制開關(guān)沒有放在一起,在寫模式與讀模式之間轉(zhuǎn)換時(shí),有些麻煩,所以,想改變開關(guān)的位置,把它們放在一起,方便操作。但是,當(dāng)把CE控制開關(guān)
91、撥出來后,就出大問題了。2816所有單元的數(shù)據(jù)全部被改變。原來,CE這個(gè)控制信號只能在斷電的情況下才能改變,這是另一組的同學(xué)告訴我的,他們也遇到過這樣的問題。沒辦法,2816中的控制信號只能再次寫入。</p><p> 5.1.4 193計(jì)數(shù)器跳轉(zhuǎn)出問題</p><p> 在時(shí)序執(zhí)行時(shí),遇到最嚴(yán)重的問題要算這個(gè)了。當(dāng)把所有的機(jī)器指令寫入6116后,開始自動執(zhí)行,順序執(zhí)行語句執(zhí)行得很好,
92、一點(diǎn)問題都沒有,而且很穩(wěn)定。但是,遇到跳轉(zhuǎn)指令時(shí),問題就來了。如果需要跳轉(zhuǎn)的地址的最低位為0,則不會有任何的問題;但是,如果最低位為1,則跳轉(zhuǎn)的地址會自動加1。這個(gè)問題真的解決不了,跟老師討論過這個(gè)問題,也安裝排錯的步驟把193的輸入輸出都接了出來,發(fā)現(xiàn)載入時(shí),輸入和預(yù)期的一樣,但是輸出就會加1。為了嘗試解決這個(gè)問題,我們將PC自加的節(jié)拍由執(zhí)行周期換到了取址周期,但是,對這個(gè)問題沒有什么實(shí)質(zhì)性的作用。換過193,但這個(gè)問題依然存在。大約
93、花了2天的時(shí)間,改過很多的控制節(jié)拍,除了拿掉很多冗余的導(dǎo)線外,基本沒有什么大的幫助。</p><p> 最后沒有辦法,在檢查的時(shí)候,需要實(shí)現(xiàn)跳轉(zhuǎn)的功能時(shí),我們只能講跳轉(zhuǎn)的地址設(shè)定到最低位為0。這樣人為的去編寫機(jī)器代碼,避開了這個(gè)無法消除的問題。</p><p> 5.1.5 193自加時(shí)的毛刺</p><p> 這個(gè)問題是大家在做實(shí)驗(yàn)時(shí)普遍遇到過的問題。因?yàn)?
94、93芯片本身的問題,通過一個(gè)負(fù)脈沖,實(shí)現(xiàn)數(shù)據(jù)的加1功能。但是,芯片對負(fù)脈沖實(shí)在太過于敏感,如果用手指握住導(dǎo)線的一端,另一端接到193的up,可以看到,193的數(shù)據(jù)就會不停的跳動。當(dāng)有人從旁邊走過的時(shí)候,193也會自加。進(jìn)行時(shí)序控制時(shí),有些與193加1毫不相干的節(jié)拍出現(xiàn)時(shí),也會使193的值發(fā)生改變。</p><p> 跟同學(xué)討論后,知道了大家基本上都有遇到這樣的問題,至于解決方案,有些同學(xué)是在脈沖信號給到193的
95、up前,接2個(gè)D觸發(fā)器,這樣,就可以達(dá)到整形的目的。但是我們沒這么做。我們是盡可能的減少直接接到時(shí)序的導(dǎo)線數(shù)量,最后做到接到T0,T1,T2,T3都只有一根導(dǎo)線,這樣就減少了信號之間的干擾,193的跳動也開始受控制了。</p><p><b> 5.2 功能測試</b></p><p> 檢查時(shí),我們有兩組測試程序,一組是我們自測時(shí)用到的程序,將所以的指令全部執(zhí)行
96、了一遍。另外一組是老師布置給我們的任務(wù),讓我們實(shí)現(xiàn)一個(gè)比較大小的功能,并顯示較大的那個(gè)數(shù)據(jù)。需要先寫出匯編語句,再將匯編改寫成機(jī)器指令。</p><p> 自測程序如表5.1所示。</p><p> 表5.1 自測程序</p><p> 按照上述內(nèi)容寫好主存后,手動將PC清零,將395清零,按下START鍵使程序自動運(yùn)行,觀察各指示燈顯示,運(yùn)行結(jié)果正確。&l
97、t;/p><p> 老師要求實(shí)現(xiàn)功能程序如表5.2所示。</p><p> 表5.2 要求功能程序</p><p> 該段機(jī)器指令的功能是比較1110單元與1111單元數(shù)據(jù)的大小,并將較大的數(shù)據(jù)載入到AC中。由于此時(shí)1110單元的值為6A,1111單元的值為6C,所以,AC的預(yù)期值為6C。執(zhí)行該代碼后,觀察指示燈顯示,顯示結(jié)果正確。</p><
98、;p> 交換6116中1110單元與1111單元的數(shù)據(jù),其他的機(jī)器指令不發(fā)生任何改變,再次執(zhí)行該指令。此時(shí)6116中各單元的數(shù)據(jù)和AC的預(yù)期值如表5.3所示。</p><p> 表5.2 要求功能程序</p><p> 此時(shí),1110單元的數(shù)據(jù)為6C,1111單元的數(shù)據(jù)為6A。執(zhí)行同樣的指令后,觀察指示燈,AC顯示的結(jié)果仍然為6C。說明該機(jī)器代碼可以實(shí)現(xiàn)比較大小的功能。<
99、;/p><p><b> 5.3 實(shí)驗(yàn)流程</b></p><p> 第一天:在實(shí)驗(yàn)室聽老師布置任務(wù)和集中講解。熟悉實(shí)驗(yàn)要求,查閱資料。</p><p> 第二天:領(lǐng)取芯片和導(dǎo)線。</p><p> 第三天:測試導(dǎo)線和芯片,熟悉芯片的功能。設(shè)計(jì)實(shí)驗(yàn)方案。</p><p> 第四天:初步完成總
100、體實(shí)驗(yàn)圖的設(shè)計(jì)。</p><p> 第五天:設(shè)計(jì)微指令。</p><p> 第六天:設(shè)計(jì)微指令,測試微指令。</p><p> 第七天:測試電路,測試各種硬布線信號。</p><p> 第八天:測試硬布線信號,修改硬布線信號。</p><p> 第九天:測試微指令,修改微指令。</p><
101、p> 第十天:修改微指令。</p><p> 第十一天:處理74LS193的自加問題以及跳轉(zhuǎn)問題。</p><p> 第十二天:處理74LS193的跳轉(zhuǎn)問題,下午檢查。</p><p><b> 6 設(shè)計(jì)總結(jié)與心得</b></p><p><b> 6.1 課設(shè)總結(jié)</b></
102、p><p> 基于微程序控制器的簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)是基于CPU的基本運(yùn)行原理選取適當(dāng)芯片實(shí)現(xiàn)的。在本次課程設(shè)計(jì)過程中,我們對如下內(nèi)容作了總結(jié)工作。</p><p> 6.1.1 方案總結(jié)</p><p> 本次課程設(shè)計(jì),我們采用微程序方式實(shí)現(xiàn)簡易CPU。按照CPU基本工作原理,選擇適當(dāng)?shù)男酒?,完成了本次設(shè)計(jì)。我們采用定長的8位數(shù)據(jù)進(jìn)行存取,4位地址用于數(shù)據(jù)存取,用
103、一片193芯片和157芯片實(shí)現(xiàn)主存地址的得到,利用193的加1和置數(shù)功能,完成程序的順序執(zhí)行和跳轉(zhuǎn),利用157芯片區(qū)分讀取指令或數(shù)據(jù);用一片6116芯片作為主存儲器存儲指令和數(shù)據(jù);用兩片181芯片相結(jié)合進(jìn)行8位數(shù)據(jù)的數(shù)學(xué)運(yùn)算和邏輯運(yùn)算,在輸入端和輸出端共運(yùn)用2片373芯片用于緩存運(yùn)算的數(shù)據(jù)用于下次的運(yùn)算和回存;用一片373芯片緩存由主存讀取出的指令;用一片373芯片緩存由主存讀取出的數(shù)據(jù);用一片244芯片控制進(jìn)行回存工作;用一片395芯
104、片實(shí)現(xiàn)操作指令的清零和置數(shù)。</p><p> 6.1.2 功能總結(jié)</p><p> 本次課程設(shè)計(jì),利用現(xiàn)有芯片,用傳統(tǒng)方式實(shí)現(xiàn)了微程序方式的簡單計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)。采用8位定長指令,8位變長數(shù)據(jù)、16位微命令在單指令周期內(nèi),實(shí)現(xiàn)了算術(shù)邏輯運(yùn)算、取數(shù)、存數(shù)、JMP、JO操作、移位操作、停機(jī)操作,并實(shí)現(xiàn)了隱含尋址、直接尋址、立即數(shù)尋址三種尋址方式。</p><p>
105、; 6.1.3 未實(shí)現(xiàn)功能總結(jié)</p><p> 未能實(shí)現(xiàn)JZ操作。有條件跳轉(zhuǎn)時(shí),我們有兩個(gè)選擇,為零跳轉(zhuǎn)和溢出跳轉(zhuǎn)。因?yàn)闉榱闾D(zhuǎn)的判斷比較復(fù)雜,需要使用多個(gè)或門,但實(shí)驗(yàn)臺上的或門只有一片,所以,很難實(shí)現(xiàn)這一功能,我們只能退而求次之,選擇了對邏輯門要求較少的溢出跳轉(zhuǎn)。</p><p> 未能將溢出信號保留。我們將181的溢出信號鎖存在一片373中,當(dāng)數(shù)據(jù)溢出時(shí),溢出信號將會保留兩個(gè)周
106、期。但是,在下個(gè)執(zhí)行周期發(fā)生時(shí),執(zhí)行任何操作,溢出信號都會丟失。</p><p> 但是,如果是執(zhí)行邏輯運(yùn)算或者是跳轉(zhuǎn)操作時(shí),溢出信號不應(yīng)該發(fā)生改變。因?yàn)闀r(shí)間的原因,檢查完課設(shè)已經(jīng)是星期五的下午了,所以,這個(gè)功能未能實(shí)現(xiàn)。</p><p><b> 6.2 課設(shè)心得</b></p><p> 兩個(gè)星期的課程設(shè)計(jì)終于結(jié)束,回想這兩周,雖然很
107、辛苦,但也獲益良多。</p><p> 首先,這次計(jì)算機(jī)組成原理課程設(shè)計(jì)讓我充分認(rèn)識到磨刀不誤砍柴工。起先想著數(shù)據(jù)通路部分上學(xué)期做過實(shí)驗(yàn)應(yīng)該很好實(shí)現(xiàn),我們便直接開始連接電路而沒有管總體架構(gòu),以致出現(xiàn)了剛開始就很多問題。幸虧我們迷途知返,重新開始思考,設(shè)計(jì)出總體實(shí)驗(yàn)原理圖,并在大腦中運(yùn)用邏輯推理模擬實(shí)現(xiàn)整個(gè)實(shí)驗(yàn)總體方向。有了清晰的整體思路后繪制出電路圖,最后省下不少時(shí)間。</p><p>
108、 而且多與老師和其他同學(xué)交流至關(guān)重要。有時(shí)候遇到問題不能死鉆牛角尖,而應(yīng)該將問題提出來,與同學(xué)和老師討論,集思廣益才能事半功倍。其實(shí)我們遇到的很多問題,都是由于我們自己已經(jīng)有了一個(gè)思維定式,在思想上已經(jīng)肯定了我們的理論方案,所以無論在大腦中模擬多少次程序運(yùn)行,仍然找不出問題出在哪里。這時(shí)候就必須主動問老師或者請教同學(xué)指點(diǎn)迷津,有時(shí)候甚至別人只說了一句話,我們就能茅塞頓開。</p><p> 同時(shí)遇到問題必須冷
109、靜思考。在這兩周的時(shí)間里我們遇到的問題層出不窮,也有著多方面的原因,有的是我們對實(shí)驗(yàn)原理不夠熟悉,有的是太相信自己的思路,當(dāng)然也有很大部分是實(shí)驗(yàn)臺的問題,當(dāng)遇到這些那些大大小小的問題時(shí),很容易產(chǎn)生負(fù)面情緒,焦躁不安,面對著那么多的導(dǎo)線和芯片往往一個(gè)頭兩個(gè)大,因?yàn)檫@樣也浪費(fèi)了不少時(shí)間。唯有靜下心來,耐心理順邏輯思路,往往會豁然開朗,茅塞頓開。</p><p> 這一次課設(shè)的所獲得的經(jīng)驗(yàn),是我們從課本上那些理論知識
110、上學(xué)習(xí)不到的。理論知識固然重要,但動手實(shí)踐能力往往更為重要。大多數(shù)人都有豐富的理論知識,但是一到動手操作的時(shí)候就會手足無措,手忙腳亂的,所以這一次的課設(shè)很好的培養(yǎng)了我們的動手能力和將理論結(jié)合實(shí)踐的能力。</p><p><b> 參考文獻(xiàn)</b></p><p> 《 計(jì)算機(jī)組成原理》(第一版) 秦磊華編著 清華大學(xué)出版社2011年2月</p>&l
111、t;p> 《數(shù)字邏輯實(shí)驗(yàn)指導(dǎo)書》(第一版)華中科技大學(xué)計(jì)算機(jī)學(xué)院數(shù)字邏輯課程組編著2010年3月</p><p> 《計(jì)算機(jī)組成原理實(shí)驗(yàn)指導(dǎo)書》(第六版)華中科技大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)組成原理課程組編著 2010年9月</p><p><b> 附錄 部分芯片介紹</b></p><p> 1. 74LS193 二進(jìn)制同步可逆計(jì)數(shù)器
112、</p><p> 193芯片引腳圖及引腳說明</p><p><b> 193芯片功能表</b></p><p><b> 功能說明:</b></p><p> (1)直接清零:當(dāng)=1時(shí),計(jì)數(shù)器異步清零。</p><p> (2)直接置數(shù):當(dāng)LD=0時(shí),計(jì)數(shù)器異步
113、置數(shù)。</p><p> (3)二進(jìn)制加/減法計(jì)數(shù)脈沖CPU/CPD上升沿有效。</p><p> 2. 74LS181 四位運(yùn)算器</p><p><b> 181芯片引腳圖</b></p><p><b> 181芯片功能表</b></p><p> 3. 74
114、LS244 三態(tài)8位緩沖器</p><p><b> 244芯片引腳圖</b></p><p> 74LS244芯片功能表</p><p> 4. 74LS157 四位2選1數(shù)據(jù)選擇器</p><p> 74LS157芯片引腳圖</p><p> 74LS157芯片功能表</p&g
115、t;<p> 5. 74LS373 八D鎖存器</p><p> 74LS373芯片引腳圖</p><p> 74LS373功能表</p><p> 6. 6116 16K CMOS靜態(tài)RAM(2048*8)</p><p><b> 6116芯片引腳圖</b></p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 組成原理課程設(shè)計(jì)---基于微程序控制器的簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--微程序控制器的設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--16位機(jī)微程序控制器指令系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告--16位機(jī)微程序控制器指令系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--微程序控制運(yùn)算器的設(shè)計(jì)
- 微程序控制器的設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)--簡單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 微程序控制器實(shí)驗(yàn)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)——簡單模型機(jī)的微程序設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)---——簡單模型機(jī)的微程序設(shè)計(jì)
- 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)課程設(shè)計(jì)---簡單16位cpu設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)(微程序設(shè)計(jì))
- 計(jì)算機(jī)硬件課程設(shè)計(jì)——基于微程序的復(fù)雜模型機(jī)設(shè)計(jì)
- 計(jì)算機(jī)系統(tǒng)綜合課程設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告--簡單模型機(jī)的微程序設(shè)計(jì)
- 計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告-微程序設(shè)計(jì)
- 計(jì)算機(jī)硬件課程設(shè)計(jì)報(bào)告--基于微程序的復(fù)雜模型機(jī)設(shè)計(jì)
- 課程設(shè)計(jì)--微型計(jì)算機(jī)系統(tǒng)設(shè)計(jì)
評論
0/150
提交評論