課程設(shè)計(jì)基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
課程設(shè)計(jì)基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
課程設(shè)計(jì)基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
課程設(shè)計(jì)基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁
課程設(shè)計(jì)基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 設(shè) 計(jì) 報(bào) 告題目:基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)課程名稱: 專業(yè)班級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 同組人員: 試驗(yàn)臺(tái)號(hào): 完成時(shí)間: 報(bào)告日期: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院目 錄1 課程設(shè)計(jì)概述11.1 課設(shè)目的11.2 設(shè)計(jì)任務(wù)11.3 設(shè)計(jì)要求12 實(shí)驗(yàn)原理與環(huán)境22.1 實(shí)驗(yàn)原理結(jié)構(gòu)圖22.1.1 功能結(jié)構(gòu)圖22.1.2 中央處理器的功能22.1.3 中央處理器的組成32.2 實(shí)驗(yàn)環(huán)境43 模塊設(shè)計(jì)方案53.1 實(shí)驗(yàn)分析53.2 數(shù)據(jù)通路圖53.3 模塊設(shè)計(jì)63.2.1 主存儲(chǔ)器63.2.3 控制存儲(chǔ)器73.2.3 運(yùn)算器和寄存器93.2.4 程序計(jì)數(shù)器113.2.

2、5 總體設(shè)計(jì)124 微指令設(shè)計(jì)144.1 機(jī)器指令設(shè)計(jì)144.2 微指令設(shè)計(jì)144.3 微程序設(shè)計(jì)144.4 指令流程圖154.4.1 取指公操作164.4.2 立即數(shù)加174.4.3 直接尋址加174.4.4 直接尋址減184.4.5 回存194.4.6 無條件跳轉(zhuǎn)204.4.7 有條件跳轉(zhuǎn)204.4.8 非214.4.9 與224.4.10 異或224.4.11 shl244.4.12 load244.5 芯片控點(diǎn)設(shè)計(jì)255 實(shí)驗(yàn)過程與調(diào)試275.1 主要故障與調(diào)試275.1.1 395載入失敗275.1.2 6116中存儲(chǔ)數(shù)據(jù)被改變275.1.3 2816中存儲(chǔ)數(shù)據(jù)被改變275.1.4

3、193計(jì)數(shù)器跳轉(zhuǎn)出問題285.1.5 193自加時(shí)的毛刺285.2 功能測(cè)試285.3 實(shí)驗(yàn)流程306 設(shè)計(jì)總結(jié)與心得316.1 課設(shè)總結(jié)316.1.1 方案總結(jié)316.1.2 功能總結(jié)316.1.3 未實(shí)現(xiàn)功能總結(jié)316.2 課設(shè)心得31參考文獻(xiàn)33附錄 部分芯片介紹341 課程設(shè)計(jì)概述1.1 課設(shè)目的計(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)對(duì)學(xué)生的計(jì)算機(jī)系統(tǒng)設(shè)計(jì)能力的培養(yǎng)”。課程設(shè)計(jì)是學(xué)完該課程并進(jìn)行多個(gè)單元實(shí)驗(yàn)后,綜合利用所學(xué)的理論知識(shí),并結(jié)合在單元

4、實(shí)驗(yàn)中所積累的計(jì)算機(jī)部件設(shè)計(jì)和調(diào)試方法,設(shè)計(jì)出一臺(tái)具有自己指令系統(tǒng)的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)。所設(shè)計(jì)的系統(tǒng)能在基于eda的實(shí)驗(yàn)平臺(tái)上運(yùn)行一段程序,通過檢查程序結(jié)果的正確性來判斷所設(shè)計(jì)計(jì)算機(jī)系統(tǒng)正確性。課程設(shè)計(jì)屬于設(shè)計(jì)型實(shí)驗(yàn),不僅鍛煉學(xué)生簡(jiǎn)單計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)能力,而且通過進(jìn)行主機(jī)系統(tǒng)底層電路的實(shí)現(xiàn)、故障分析與定位、系統(tǒng)調(diào)式等環(huán)節(jié)的鍛煉,進(jìn)一步提高了學(xué)生分析和解決問題的能力。1.2 設(shè)計(jì)任務(wù)課程設(shè)計(jì)的主要任務(wù)是設(shè)計(jì)一臺(tái)簡(jiǎn)單的計(jì)算機(jī)系統(tǒng),并調(diào)試通過。本組所選用的計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)是基于微程序控制器的簡(jiǎn)單計(jì)算機(jī)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。 1) 完成數(shù)據(jù)通路設(shè)計(jì)并驗(yàn)證數(shù)據(jù)通路功能確定cpu 的基本結(jié)構(gòu)是采用總線方式還是采用專用

5、通路方式;2) 完成指定功能的各指令周期流程圖(表)和所需要的控制信號(hào)。把所有指令的狀態(tài)進(jìn)行綜合,并歸納成最終需要的若干個(gè)狀態(tài),畫出指令流程的狀態(tài)圖,根據(jù)狀態(tài)圖設(shè)計(jì)狀態(tài)機(jī);3) 完成時(shí)序列電路設(shè)計(jì)。通過畫出帶控制信號(hào)的多周期數(shù)據(jù)通路圖,列出 指令譯碼表,設(shè)計(jì)控制譯碼器。最后將控制譯碼器信號(hào)與多周期數(shù)據(jù)通路圖上的控制信號(hào)對(duì)應(yīng)相連;主要技術(shù)指標(biāo)如下:1) 支持算術(shù)運(yùn)算、邏輯運(yùn)算、存儲(chǔ)器讀寫、寄存器間數(shù)據(jù)傳送等幾類指令。2) 支持立即數(shù)尋址、直接尋址、隱含尋址、寄存器尋址等幾種基本的數(shù)據(jù)尋址方式和順序?qū)ぶ?、跳躍尋址兩種指令的尋址方式。3) 支持10條以上的指令。4) 能運(yùn)行由自己所是設(shè)計(jì)的指令系統(tǒng)構(gòu)

6、成的一段程序,程序執(zhí)行功能正確。1.3 設(shè)計(jì)要求1) 根據(jù)課程設(shè)計(jì)指導(dǎo)書的要求,制定出設(shè)計(jì)方案;2) 畫出自己所設(shè)計(jì)計(jì)算機(jī)系統(tǒng)的原理框圖和器件連接圖,分析器件連接圖中各器件不同引腳的功能,哪些可以固定連接,哪些需要通過微程序來控制,及這些控制信號(hào)的有效形式;3) 畫出各指令的指令周期流程圖和所需要的控制信號(hào);4) 設(shè)計(jì)出實(shí)現(xiàn)指令功能的微程序控制器或硬布線控制器;5) 布線、調(diào)試、驗(yàn)收;6) 課程設(shè)計(jì)報(bào)告和總結(jié)。2 實(shí)驗(yàn)原理與環(huán)境2.1 實(shí)驗(yàn)原理結(jié)構(gòu)圖2.1.1 功能結(jié)構(gòu)圖組成原理課程設(shè)計(jì)cpu功能結(jié)構(gòu)圖如圖2.1所示。圖2.1 cpu功能結(jié)構(gòu)圖2.1.2 中央處理器的功能cpu作為運(yùn)行指令的部

7、件,從保證程序功能正確的角度看,cpu應(yīng)該具有以下幾方面的功能:1)指令執(zhí)行順序的控制。即控制程序中的指令按事先規(guī)定的順序自動(dòng)執(zhí)行,從而保證程序執(zhí)行過程中,指令在邏輯上的相互關(guān)系不被改變。2)指令的操作控制。即產(chǎn)生指令執(zhí)行過程中所需要的信號(hào),以控制執(zhí)行部件按指令規(guī)定的操作運(yùn)行。3)時(shí)間控制。即對(duì)每個(gè)控制信號(hào)進(jìn)行定時(shí),一邊按規(guī)定的時(shí)間順序啟動(dòng)各操作。對(duì)于任何一條指令而言,如果操作控制信號(hào)的時(shí)間不正確,則指令的功能也就不能正確的實(shí)現(xiàn)。4)數(shù)據(jù)加工處理。即對(duì)數(shù)據(jù)進(jìn)行算術(shù)、邏輯運(yùn)算,或?qū)?shù)據(jù)在相關(guān)的部件之間傳輸。5)異常和中斷處理。即處理運(yùn)算中的異常及處理外部設(shè)備的中斷服務(wù)請(qǐng)求等。2.1.3 中央處理

8、器的組成中央處理器主要由控制器和運(yùn)算器兩部分構(gòu)成??刂破鞯闹饕δ馨ǎ喝≈噶睢⒂?jì)算下一條指令的地址、對(duì)指令譯碼、產(chǎn)生相應(yīng)的操作控制信號(hào)、控制指令執(zhí)行的步驟和數(shù)據(jù)流動(dòng)的方向。運(yùn)算器是執(zhí)行部件,有算術(shù)邏輯單元和各種寄存器組成。運(yùn)算器接受控制器的命令執(zhí)行算術(shù)運(yùn)算、邏輯運(yùn)算即邏輯測(cè)試。許多中央處理器中具有多個(gè)運(yùn)算功能單元,這些功能單元能夠進(jìn)行并行運(yùn)算。中央處理器的功能與其結(jié)構(gòu)緊密相關(guān),任何一種功能都依賴相應(yīng)的硬件去實(shí)現(xiàn)。如圖2.1是一種能實(shí)現(xiàn)上述功能的cpu基本組成。下面對(duì)圖2.1的各部分功能進(jìn)行簡(jiǎn)要分析。a.cpu內(nèi)常用的寄存器1)pc(程序計(jì)數(shù)器)pc保存將要執(zhí)行的指令地址,又稱指令地址寄存器。

9、cpu取指令時(shí),將pc的內(nèi)容送到主存地址寄存器,然后修改pc的值形成下一條要執(zhí)行的指令地址,有以下兩種修改pc內(nèi)容的方法:(1)程序順序執(zhí)行是,可利用程序計(jì)數(shù)器本身的遞增功能來實(shí)現(xiàn),若程序無此功能,則通過加法器實(shí)現(xiàn);(2)轉(zhuǎn)移時(shí),用轉(zhuǎn)移指令提供的地址修改pc的值。2)ir(指令寄存器)ir用于保存指令。從主存儲(chǔ)器取出的指令存放在ir中,直到新的指令從主存中取出為止。ir中對(duì)應(yīng)于指令操作碼的部分輸出送到指令譯碼器。ir中指令的操作碼字段內(nèi)容經(jīng)指令譯碼器,送到微操作信號(hào)形成不見;指令的地址碼字段根據(jù)尋址方式的不同可能送入程序計(jì)數(shù)器、地址寄存器或運(yùn)算部件。有的機(jī)器指令操作碼中包含尋址方式,因此不單獨(dú)

10、設(shè)計(jì)尋址方式字段;有的機(jī)器將尋址方式字段和操作碼一并送入指令譯碼器;有的機(jī)器將操作碼字段和地址碼字段送入地址形成部件,以決定地址碼的作用。3)ar(地址寄存器)ar用來保存當(dāng)前cpu所要訪問的主存單元地址,無論cpu是取指令還是存取數(shù)據(jù),都必須先將要訪問的主存單元地址送ar,知道讀寫操作完成。4)dr(數(shù)據(jù)緩沖寄存器):dr作為cpu和主存之間的數(shù)據(jù)緩沖寄存器用于存放操作數(shù)、運(yùn)算結(jié)果或 中間結(jié)果以減少訪問主存的次數(shù);也可以存放從主存中讀出的數(shù)據(jù),或準(zhǔn)備寫入的數(shù)據(jù)。b.指令譯碼器、地址形成部件和微操作產(chǎn)生部件1) 指令譯碼器(id)指令譯碼器對(duì)指令的操作碼進(jìn)行譯碼,它的輸出送到微操作產(chǎn)生部件。2

11、) 地址形成部件地址形成部件對(duì)指令的尋址方式字段、地址字段進(jìn)行譯碼,計(jì)算操作數(shù)的地址信息。3)微操作產(chǎn)生部件微操作產(chǎn)生部件接收指令譯碼器送來的信息,與時(shí)序信號(hào)、條件及狀態(tài)信息進(jìn)行組合,形成各種具有時(shí)間標(biāo)志的控制信號(hào)(即微操作控制序列)并發(fā)送到計(jì)算機(jī)的各個(gè)部件。微操作產(chǎn)生部件是控制決策機(jī)構(gòu)。信息流的控制就是把操作產(chǎn)生部件的微操作控制序列(即微操作控制信號(hào)),送到各個(gè)部件的控制門、觸發(fā)器或鎖存器,去打開或關(guān)閉某些特定的門電路,使數(shù)據(jù)信息按完成指令功能所需要經(jīng)過的路徑,從一個(gè)功能部件傳送到另一個(gè)功能部件,實(shí)現(xiàn)對(duì)數(shù)據(jù)加工處理的控制。根據(jù)設(shè)計(jì)方法不同,微操作產(chǎn)生部件的結(jié)構(gòu)有三種不同的類型:組合邏輯型、存

12、儲(chǔ)邏輯型即前兩者的結(jié)合型。它們分別對(duì)應(yīng)三中不同的控制器組成方式:組合邏輯控制器、微程序控制器及組合邏輯與存儲(chǔ)邏輯混合型控制器。c.時(shí)序控制部件指令執(zhí)行過程中所有操作都必須按照一定的次序完成,而且每個(gè)操作在什么時(shí)刻執(zhí)行,執(zhí)行多長時(shí)間都有嚴(yán)格的規(guī)定,不能有任何差錯(cuò)。例如執(zhí)行加法 指令,必須先將操作數(shù)送到alu的輸入端,然后再給出alu執(zhí)行加法的操作控制信號(hào),待加法操作完成后,才能將結(jié)果送往目的地。不僅次序有規(guī)定,而且對(duì)什么時(shí)刻送操作數(shù)、什么時(shí)刻執(zhí)行加法操作、什么時(shí)刻送出結(jié)果也有規(guī)定。因此,需要時(shí)序概念。圖2.1中時(shí)序控制部件的作用就是產(chǎn)生一組時(shí)序信號(hào),即一系列電位與脈沖,送到微操作產(chǎn)生部件,對(duì)各種

13、操作信號(hào)進(jìn)行時(shí)序控制。2.2 實(shí)驗(yàn)環(huán)境jzyl型計(jì)算機(jī)組成原理實(shí)驗(yàn)儀一臺(tái)。導(dǎo)線若干。涉及芯片類型及數(shù)量如表2.1所示。表2.1 所需芯片類型及數(shù)量芯片編號(hào)芯片名稱所需數(shù)量74ls193二進(jìn)制同步可逆計(jì)數(shù)器174ls181四位運(yùn)算器274ls244三態(tài)8位緩沖器274ls157四位2選1數(shù)據(jù)選擇器474ls373八d鎖存器7611616k cmos靜態(tài)ram(2048*8)12816aeeprom存儲(chǔ)器(2048*8)274ls395四位寄存器174ls08二輸入四與門274ls04六門反相器174ls32二輸入四或門13 模塊設(shè)計(jì)方案3.1 實(shí)驗(yàn)分析分析本次課程設(shè)計(jì)中對(duì)簡(jiǎn)易cpu的要求,需要設(shè)

14、計(jì)的功能部件有主存儲(chǔ)器、控制存儲(chǔ)器、運(yùn)算器、寄存器、計(jì)數(shù)器等。由于課程設(shè)計(jì)提供的芯片種類有限,我們選取了其中的74ls373、181、6116、2816a、74ls244、74ls193、74ls157、74ls395等芯片實(shí)現(xiàn)相應(yīng)的功能。我們?cè)O(shè)計(jì)的機(jī)器指令長度為8為,其中前4位為操作碼,后四位為操作數(shù)。在設(shè)計(jì)方案時(shí),我們先將總體方案分解為多個(gè)小的模塊,分別進(jìn)行設(shè)計(jì),然后再將各個(gè)模塊拼接在一起,實(shí)現(xiàn)最終需要的功能。分解的模塊包括主存儲(chǔ)器、控制存儲(chǔ)器、運(yùn)算器、寄存器、計(jì)數(shù)器。下面將逐個(gè)分析各個(gè)模塊的設(shè)計(jì)思路。3.2 數(shù)據(jù)通路圖圖3.1 數(shù)據(jù)通路圖課程設(shè)計(jì)的數(shù)據(jù)通路圖如圖3.1所示。圖中標(biāo)明了計(jì)算

15、機(jī)系統(tǒng)中的各個(gè)部件,包括內(nèi)存、程序計(jì)數(shù)器、運(yùn)算器、寄存器、控制存儲(chǔ)器、指令寄存器、數(shù)據(jù)寄存器、微指令寄存器等等功能部件。同時(shí),也注明了不同部件的芯片組成,以及控制信號(hào)??刂菩盘?hào)是由微程序中的信號(hào)(見4.3 微程序設(shè)計(jì))和時(shí)序節(jié)拍通過組合邏輯的方式形成。3.3 模塊設(shè)計(jì)3.2.1 主存儲(chǔ)器主存儲(chǔ)器相當(dāng)于計(jì)算機(jī)系統(tǒng)中的主存。我們選擇一片6116作為主存儲(chǔ)器。我們?cè)O(shè)計(jì)的機(jī)器指令長度為8位,低4位為操作數(shù),所以,我們只選用了6116的低四位地址,其他地址位均接低電平。換言之,我們能手動(dòng)寫入的內(nèi)存只有16位,分別從0000到1111。在寫入6116時(shí),使用了一片74ls244作為緩沖器。因?yàn)樵诳傮w電路中

16、,6116的輸入可能會(huì)有多個(gè),為了避免沖突,使用一片244可以方便后面輸入端的選擇。6116的地址通過一片74ls157后輸入。選擇74ls157的原因是,6116的地址選擇有多種情況。第一種情況是手動(dòng)輸入地址,這種情況發(fā)生在程序執(zhí)行前,需往6116中寫入程序,此時(shí)的地址由操作人員手動(dòng)選擇;第二種情況是程序自動(dòng)選擇,這種情況發(fā)生在程序連續(xù)執(zhí)行過程中,由pc自動(dòng)選擇內(nèi)存地址,取出操作指令或者指令的實(shí)現(xiàn)方式為直接尋址時(shí),選擇數(shù)據(jù)的地址。主存儲(chǔ)器的結(jié)構(gòu)圖如3.2所示。圖3.2 主存儲(chǔ)器結(jié)構(gòu)圖6116芯片的功能如表3.1所示。我們選擇的寫模式為=l,=l,=l。我們選擇的讀模式為=l,=h,=l。其中

17、,需要控制的只有,另外兩個(gè)輸入保持不變。6116是ram芯片,斷電后,芯片內(nèi)的信息將會(huì)丟失。表3.1 6116芯片功能表輸入i/o工作方式didohhigh-z非選擇lhlhigh-zdo讀llhdihigh-z寫llldihigh-z寫lhhhigh-z選擇74ls244芯片的功能如表3.2所示。表3.2 74ls244芯片功能表輸入輸出lllllllhlhhhhh高阻高阻74ls157芯片的功能如表3.3所示。表3.3 74ls157芯片功能表使能端輸入控制數(shù)據(jù)輸入輸出hllhlllhhhllllllhh3.2.3 控制存儲(chǔ)器控制存儲(chǔ)器是整個(gè)課程設(shè)計(jì)中最重要的一個(gè)模塊,這一部分設(shè)計(jì)起來沒有

18、太大難度。但是,由于微程序設(shè)計(jì)中的微指令是從控制存儲(chǔ)器中取出的,這一部分的設(shè)計(jì)尤為重要。我們選擇兩片2816作為控制存儲(chǔ)器。我們?cè)O(shè)計(jì)的微指令中,一共有13位有效信號(hào)。由于2816是8位的,所以,需要兩片2816存儲(chǔ)需要的微指令。我們?cè)O(shè)計(jì)的機(jī)器指令長度為8位,高4位為操作指令,所以,只選用了2816的低四位地址,其他地址位均接低電平。換言之,我們能寫入的控制信號(hào)只有16位,分別從0000到1111。實(shí)際上,我們?cè)O(shè)計(jì)的指令只有12條,16個(gè)內(nèi)存已能滿足需求。在寫入2816時(shí),使用了一片74ls244作為緩沖器。寫入完成后,去掉74ls244。因?yàn)?816中的信息是確定的,每一個(gè)8位(兩個(gè)2816應(yīng)

19、是16位)都對(duì)應(yīng)著一條微指令,只要一次正確寫入后,以后都不需要更改。由于2816是rom芯片,斷電后,信息不會(huì)丟失。但是,寫入數(shù)據(jù)時(shí),需要使用一片74ls244,作為緩沖器。2816的微指令信號(hào)輸出后,將會(huì)鎖存到373中,避免在指令執(zhí)行周期,控制信號(hào)發(fā)生改變。與2816相連的兩片373的功能相當(dāng)于計(jì)算機(jī)系統(tǒng)中的ir(微指令寄存器)。與2816相連的74ls395的作用是,在執(zhí)行周期結(jié)束后,395清零(也可能是結(jié)束前,只要對(duì)結(jié)果不產(chǎn)生干擾就可以),系統(tǒng)進(jìn)入取值周期。與74ls395相連的74ls373相當(dāng)于計(jì)算機(jī)系統(tǒng)中的ir(指令寄存器)。其中,高4位為操作指令,這4位將會(huì)作為74ls395的輸

20、入,選擇2816中的微指令,進(jìn)而鎖存在微指令寄存器中??刂拼鎯?chǔ)器的結(jié)構(gòu)圖如圖3.3所示。結(jié)構(gòu)圖中沒有標(biāo)明寫入2816時(shí)用到的緩沖器74ls244,因?yàn)樗辉趯懭霑r(shí)使用,寫入成功之后,244將沒有其他的作用,可以去掉。圖3.3 控制存儲(chǔ)器結(jié)構(gòu)圖2816的芯片功能如表3.4所示。表3.4 2816芯片功能表引腳輸入/輸出讀出llh數(shù)據(jù)出閑置l高阻字節(jié)擦除lhl數(shù)據(jù)入=h字節(jié)寫入lhl數(shù)據(jù)入整片擦除l+1015vl數(shù)據(jù)入=h不工作lhh高阻禁寫hhl高阻74ls373芯片功能如表3.5所示。表4.6 74ls373功能表輸出控制使能gd輸出qlhhhlhllllq0hz74ls395芯片功能如表3.

21、6所示。表3.6 74ls395芯片功能表功能輸入輸出pedsdnqn總清ll裝入hhllhhhh3.2.3 運(yùn)算器和寄存器運(yùn)算器是cpu可以實(shí)現(xiàn)運(yùn)算操作的基本部件,所使用的芯片本身只能實(shí)現(xiàn)最基本的加減算術(shù)運(yùn)算和亦或、非與等基本邏輯運(yùn)算。但是,通過基本運(yùn)算的組合,可以實(shí)現(xiàn)及其復(fù)雜的運(yùn)算,如積分,甚至傅里葉變換?,F(xiàn)代計(jì)算機(jī)可以顯示各種我們需要的功能,但是,如果把每條指令分解來看,可以發(fā)現(xiàn),它可以做到的事情實(shí)際上再簡(jiǎn)單不過。唯快不破,它通過將處理速度做到極致,即使它做的事情異常簡(jiǎn)單,但是,它能做到的事情卻可以改變整個(gè)世界。由于提供的芯片中,能顯示運(yùn)算操作的芯片只有74ls181。所以,181芯片是

22、實(shí)現(xiàn)運(yùn)算器的不二選擇。由于設(shè)計(jì)的數(shù)據(jù)位數(shù)為8位,而181只能實(shí)現(xiàn)4為的邏輯運(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。74ls181的運(yùn)算結(jié)果輸入后,鎖存在74ls373中,這樣,可以防止運(yùn)算結(jié)果被下一條運(yùn)算操作改變。與這個(gè)373相連的是另外一個(gè)74ls373,它的作用相當(dāng)于一個(gè)寄存器。181中的a輸

23、入來自于這個(gè)373(寄存器)。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所示。圖3.4 運(yùn)算器結(jié)構(gòu)圖74ls181的功能比較強(qiáng)大,可以實(shí)現(xiàn)多種邏輯運(yùn)算和位運(yùn)算,圖3.5列出了181的部分功能,其中,a0,a1,a2,a3,b0,b1,b2,b3位運(yùn)算器輸入;f0,f1,f2,f3為運(yùn)算器輸出;s0,s1,s2,s3為運(yùn)算指令控制端;m位算術(shù)或邏輯運(yùn)算控制端;為有無進(jìn)位控制端,為高位進(jìn)位。圖3.5 74ls181功

24、能表3.2.4 程序計(jì)數(shù)器程序計(jì)數(shù)器的功能比較簡(jiǎn)單,就是在程序執(zhí)行過程中,指示正確的內(nèi)存地址,讓計(jì)算機(jī)自動(dòng)的從內(nèi)存中讀取出正確的指令執(zhí)行。順序執(zhí)行時(shí),每一條執(zhí)行指令結(jié)束,pc自加1;但有跳轉(zhuǎn)指令出現(xiàn)時(shí),pc被設(shè)置為需要跳轉(zhuǎn)到的內(nèi)存地址。提供的芯片中,具有計(jì)數(shù)功能的有74ls193和74ls181。但是,181的功能過于強(qiáng)大,用這個(gè)比較復(fù)雜的芯片去實(shí)現(xiàn)如此簡(jiǎn)單的功能,不太合適,況且,181的置數(shù)操作不太容易實(shí)現(xiàn),經(jīng)比較可以知道,應(yīng)選用193做為顯示程序計(jì)數(shù)器的芯片。一片74ls193便可以實(shí)現(xiàn)。與74ls193相連的373是指令寄存器。當(dāng)出現(xiàn)跳轉(zhuǎn)指令時(shí),指令寄存器的低4位將會(huì)被load到193中

25、,以確保下一條指令的執(zhí)行時(shí)正確的。在順序執(zhí)行的情況下,193實(shí)現(xiàn)的都是+1功能。由于一片193只有四位,所以,能表達(dá)的指令內(nèi)存地址最大只能到1111。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位操作數(shù)。因?yàn)檫@兩種情況都是存在的,所以,需要有一片74ls157來區(qū)分這兩種情況。區(qū)分的條件是不同的機(jī)器指令對(duì)應(yīng)著不同的微操作,通過微指令來選擇15

26、7的輸出是程序計(jì)數(shù)器的輸入還是指令寄存器的低4位輸入。 程序計(jì)數(shù)器的結(jié)構(gòu)圖如圖3.6所示。圖3.6 程序計(jì)數(shù)器結(jié)構(gòu)圖74ls193芯片的功能如表3.7所示。表3.7 74ls193芯片功能表輸入輸出備注lddncpucpdqn1dddd0清零(異步)00xddx置數(shù)(異步)01d1累加計(jì)數(shù)上升沿有效01d1累減計(jì)數(shù)上升沿有效功能說明:1. 直接清零:當(dāng)=1時(shí),計(jì)數(shù)器異步清零。2. 直接置數(shù):當(dāng)ld=0時(shí),計(jì)數(shù)器異步置數(shù)。3. 二進(jìn)制加/減法計(jì)數(shù)脈沖cpu/cpd上升沿有效。3.2.5 總體設(shè)計(jì)整個(gè)課程設(shè)計(jì)的總體結(jié)構(gòu)圖如圖3.6所示??傮w結(jié)構(gòu)圖中,添加了一個(gè)回存的功能,由于只是在寄存器后邊加上一

27、個(gè)74ls244芯片,然后將244的輸出接到主存6116的輸入端,所以,在模塊設(shè)計(jì)中,沒有把回存作為單獨(dú)的一個(gè)模塊說明。圖3.6 總體結(jié)構(gòu)圖4 微指令設(shè)計(jì)4.1 機(jī)器指令設(shè)計(jì)根據(jù)課程設(shè)計(jì)要求,我們?cè)O(shè)計(jì)的機(jī)器指令為8位,其中,前4位表示操作命令,后4位為操作數(shù)。由于操作命令用4位表示,所以,可以實(shí)現(xiàn)的操作最多只能有16條。設(shè)計(jì)的指令包括算術(shù)指令:立即數(shù)加、直接尋址加、直接尋址減;邏輯運(yùn)算:非運(yùn)算、與運(yùn)算、亦或運(yùn)算;回存;跳轉(zhuǎn)指令:無條件跳轉(zhuǎn)、溢出跳轉(zhuǎn);載入指令;乘二指令;停機(jī)指令;取址操作。其中,直接尋址加、直接尋址減、邏輯運(yùn)算及乘二運(yùn)算均使用隱含尋址。取址操作、立即數(shù)加、載入操作、跳轉(zhuǎn)指令和回

28、存指令均使用立即數(shù)尋址。直接尋址加、直接尋址減、與運(yùn)算、亦或運(yùn)算均使用直接尋址。機(jī)器指令由操作人員將匯編語言翻譯成機(jī)器語言后,手動(dòng)輸入到內(nèi)存中。4.2 微指令設(shè)計(jì)控制存儲(chǔ)器由兩片2816組成,最多可以有16位控制信號(hào)。但我們?cè)谠O(shè)計(jì)微指令時(shí),只使用了13個(gè)控制信號(hào),使用了一片2816的所有8位,另一片2816的低5位。微命令編碼方法采用直接表示法,將微指令操作控制字段的每一個(gè)二進(jìn)制位定義為一個(gè)微命令。一條微指令從控存中取出時(shí),它所包含的微命令經(jīng)時(shí)間同步后去控制相應(yīng)的數(shù)據(jù)通路中的部件。13位控制信號(hào)機(jī)器作用如表4.1所示。其他3位接低電平。表4.1 控制信號(hào)作用2816輸出控制信號(hào)作用說明c0s0

29、181運(yùn)算控制信號(hào)c1s1181運(yùn)算控制信號(hào)c2s2181運(yùn)算控制信號(hào)c3s3181運(yùn)算控制信號(hào)c4cn181借位輸入信號(hào)c5m181運(yùn)算控制信號(hào)c6write回存時(shí) 244 oe端/6116 we端控制信號(hào)c7aluin157控制選擇來自dr/ir(立即數(shù))的信號(hào)c86116add193地址與直接尋址地址間選擇信號(hào)c9stop停機(jī)時(shí)控制時(shí)序停止c10stop停機(jī)時(shí)控制時(shí)序停止c11count與脈沖信號(hào)進(jìn)行邏輯運(yùn)算后控制193是否加1計(jì)數(shù)c12load與其他控制信號(hào)進(jìn)行邏輯運(yùn)算后控制193是否載入4.3 微程序設(shè)計(jì)程序中每一條指令用8位二進(jìn)制位來表示,而前四位為操作碼,即為實(shí)現(xiàn)該指令的微程序的

30、入口地址,后四位為操作數(shù)的地址(直接尋址)或操作數(shù)(立即數(shù)尋址)。操作指令對(duì)應(yīng)的微程序如表4.2所示。寫出這個(gè)表的過程比較復(fù)雜,也是整個(gè)課程設(shè)計(jì)最有技術(shù)含量的一部分,還有一部分是時(shí)序電路的加入。首先,先把可能需要控制的全部芯片控制信號(hào)列舉出來,可能會(huì)超過16個(gè),但是沒關(guān)系,因?yàn)樵诤竺娴牟襟E中,會(huì)發(fā)現(xiàn)有些控制信息一直沒有變化,可以用一個(gè)確定的信號(hào)代替。然后,給需要用到的指令分配一個(gè)4位的控存地址,這將會(huì)成為該指令的微程序的入口地址。由于指令只有4位,所以,所有指令條數(shù)不能超過16條。接著,就是比較復(fù)雜的一步了。分析每一條指令,畫出每條指令的數(shù)據(jù)流和控制流,(具體流程圖見4.4 指令流程圖)通過這

31、種方式,知道每條指令需要的控制信號(hào)。表4.2 匯編指令對(duì)應(yīng)的微程序表指令控存地址15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0取指公操作0000 0000 1010 0101 0000立即數(shù)加0001 0000 0010 1101 1001立即尋址加0010 0000 0011 0101 1001減0011 0000 0011 0100 0110回存0100 0000 0011 0001 0000jmp0101 0001 0010 0101 0000非0110 0000 0011 0111 0000與0111 0000 0011 0111 1011異或1000 00

32、00 0011 0111 0110停機(jī)1001 0000 0100 0101 0000jo1010 0001 0010 0101 0000load1011 0000 0011 0111 1010shl1100 0000 0011 0101 1100微程序表中,每條微程序都有16個(gè)控制信號(hào)。芯片編號(hào)參考圖4.13。如表中編號(hào)所示,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號(hào)控制信號(hào);11和12分別表示193中的up和lo

33、ad;其他位均為0。4.4 指令流程圖我們?cè)O(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è);6116,這個(gè)芯片在回存指令時(shí),必須要在某個(gè)節(jié)拍變成寫模式,但是,在其他指令的周期中,必須一直保持讀模式。另外還需要控制

34、的芯片是74ls395,因?yàn)槿≈分芷谇埃枰辶?,而?zhí)行周期前,它需要置數(shù)。4.4.1 取指公操作我們?cè)O(shè)計(jì)的指令都是雙周期的,其中,第一個(gè)周期為取指周期,從內(nèi)存中取出執(zhí)行指令;第二個(gè)周期為執(zhí)行周期,執(zhí)行該指令。取址公操作的控制信號(hào)存放在控制存儲(chǔ)器的0000號(hào)單元,也就是說,需要進(jìn)行取址操作時(shí),將395清零即可??刂菩盘?hào)從控制存儲(chǔ)器中讀出后,寫入到微指令寄存器中。通過這一組控制信號(hào),從6116的指定單元中讀出指令。指令存放在指令寄存器中。接下來,將4位操作指令載入74ls395中。這4位操作數(shù)成為這條指令的微程序的入口地址,從控制存儲(chǔ)器中讀出微程序后,鎖存在微指令寄存器中。(這個(gè)鎖存的節(jié)拍不在

35、取指公操作,而是在執(zhí)行周期的第一個(gè)節(jié)拍)取值公操作的控制流如圖4.1所示。圖4.1 取值公操作控制流4.4.2 立即數(shù)加立即數(shù)加的控制流程圖如圖4.2所示。圖4.2 立即數(shù)加控制流4.4.3 直接尋址加立即數(shù)加和直接尋址加的區(qū)別在于,立即數(shù)加的加數(shù)為低4位操作數(shù),被加數(shù)為寄存器ac中的值;而直接尋址加的加數(shù)為地址為低4位操作數(shù)的6116單元內(nèi)的數(shù)據(jù),被加數(shù)為寄存器ac中的值。其他基本一致。直接尋址加的控制流程圖如圖4.3所示。 圖4.3 直接尋址加控制流4.4.4 直接尋址減直接尋址加和直接尋址減的數(shù)據(jù)流和控制流上基本一致,只是在74ls181的控制上,對(duì)于4個(gè)運(yùn)算控制信號(hào)有些區(qū)別。直接尋址減

36、的控制流程圖如圖4.4所示。圖4.4 直接尋址減控制流4.4.5 回存回存時(shí),內(nèi)存需要由讀模式變?yōu)閷懩J??;卮婵刂屏鞒虉D如圖4.5所示。圖4.5 回存控制流4.4.6 無條件跳轉(zhuǎn)無條件跳轉(zhuǎn)控制流程圖如4.6所示。圖4.6 無條件跳轉(zhuǎn)控制流4.4.7 有條件跳轉(zhuǎn)有條件跳轉(zhuǎn)流程圖如圖4.7所示。與無條件跳轉(zhuǎn)的不同之處在于,必須判斷數(shù)據(jù)時(shí)是否溢出。如果有溢出,則實(shí)現(xiàn)跳轉(zhuǎn),否則不實(shí)現(xiàn)跳轉(zhuǎn)。圖4.7 有條件跳轉(zhuǎn)控制流4.4.8 非求非指令控制流程圖如圖4.8所示。圖4.8 求非指令控制流4.4.9 與求非指令使用的尋址方式是隱含尋址,但是求與指令使用的尋址方式是隱含尋址加直接尋址。所以,數(shù)據(jù)通路要比求非

37、運(yùn)算要長一些??刂菩盘?hào)也更復(fù)雜一些。求與指令的控制流程圖如圖4.9所示。圖4.9 求與指令控制流4.4.10 異或亦或指令和與指令的數(shù)據(jù)流和控制流上基本一致,只是在74ls181的控制上,對(duì)于4個(gè)運(yùn)算控制信號(hào)有些區(qū)別。亦或指令的控制流程圖如圖4.10所示。圖4.10 亦或指令控制流圖4.11 乘2指令控制流4.4.11 shl乘2指令的尋址方式為隱含尋址,即把寄存器ac中的值擴(kuò)大一倍,再存入ac中。乘2指令的控制流程圖如圖4.11所示。4.4.12 load載入指令的功能是將指定內(nèi)存單元中的數(shù)據(jù)載入寄存器ac中,作為運(yùn)算的初始值。與之相對(duì)應(yīng)的是回存指令,它的作用是將寄存器ac中的值存入指定內(nèi)存

38、單元。載入指令的控制流程圖如圖4.12所示。圖4.12 載入指令控制流4.5 芯片控點(diǎn)設(shè)計(jì)在設(shè)計(jì)微指令之前,我們分析整個(gè)電路中的各個(gè)芯片的控點(diǎn),其中有些是需要控制的,而有些是不需要變動(dòng)的,始終接到一個(gè)電位就可以了。數(shù)據(jù)通路圖如圖4.13所示。圖4.13 數(shù)據(jù)通路圖不需要控制的控點(diǎn)有:向6116輸入的74ls244芯片:和并接到一個(gè)開關(guān)上,只有在寫機(jī)器指令的時(shí)候?yàn)榈碗娖?,其他時(shí)刻都為高電平,手動(dòng)控制,不需要微指令控制。和并接接地,多余的地址線接在一起并接地。向2816輸入的74ls244芯片:和并接到一個(gè)開關(guān)上,只有在寫微指令的時(shí)候?yàn)榈碗娖?,其他時(shí)刻都為高電平,手動(dòng)控制,不需要微指令控制。多余地

39、址線接地。74ls157d芯片:使能端s分別接開關(guān),需要手動(dòng)控制輸入改變地址時(shí)為低電平,0通道選通;其他時(shí)候?yàn)楦唠娖剑?通道選通。所有74ls373芯片的輸出控制端接地。2816芯片:和并接接地,多余的地址線接在一起并接地。需要控制的控點(diǎn)有:回存244a芯片:和并接一起控制。74ls157a,74ls157b,74ls157c芯片的使能端s。所有74ls373的使能端s。181芯片:運(yùn)算指令控制端,算術(shù)或邏輯運(yùn)算控制端m,有無進(jìn)位控制端。6116芯片:端。74ls193的up和load。 74ls395的,和。這些控點(diǎn)都是需要微程序中的信號(hào)來控制的,具體控制見表4.2。還有些控制信號(hào)需要微程序

40、中的控制信號(hào)與時(shí)序節(jié)拍組合邏輯后實(shí)現(xiàn),具體組合邏輯見4.4 指令控制流程圖。表達(dá)式如下。其中t1,t2,t3,t4分別表示一個(gè)周期中的四個(gè)節(jié)拍,c11和c12為表4.2中編號(hào)為11,12的控制信號(hào),a3是4位操作指令中的最低位。373a的使能端g = t3;373b的使能端g = t4;373c的使能端;373d的使能端;373e和373f的使能端;395的=,;193的, 5 實(shí)驗(yàn)過程與調(diào)試5.1 主要故障與調(diào)試5.1.1 395載入失敗74ls395在本次課程設(shè)計(jì)中的功能有兩個(gè),第一個(gè)功能是在取址周期前,將數(shù)據(jù)清零。而0000是控制存儲(chǔ)器中,取址指令的入口地址。通過這一操作,將取址的控制信

41、號(hào)鎖存在微指令寄存器中,保證雙周期中,取址周期的正確執(zhí)行。第二個(gè)功能是在執(zhí)行周期前,將指令寄存器中的高4位,也就是4位操作命令載入,此時(shí),將會(huì)從控制存儲(chǔ)器中讀出特定指令的控制信號(hào),鎖存到微指令寄存器中,保證執(zhí)行周期的正確執(zhí)行。按照步驟連接好電路后,開始測(cè)試時(shí),發(fā)現(xiàn)74ls395清零功能是好的,但是,載入功能出問題了。給395提供載入信號(hào)后,輸出仍然保持不變,還是0000。接下來需要做的就是排錯(cuò)。首先,將395的輸入信號(hào)和輸出信號(hào)分別接到信號(hào)燈上,及時(shí)顯示輸入和輸出的數(shù)據(jù)。結(jié)果發(fā)現(xiàn),不論輸入信號(hào)如何,加上載入信號(hào)后,4個(gè)輸出燈全是藍(lán)色的,也就是0000。問題只有可能出在控制信號(hào)上,于是,我們也將

42、控制信號(hào)接到信號(hào)燈上。讓我們不可思議的是,控制信號(hào)也沒有問題。最后,由于時(shí)間的原因,我們必須要離開實(shí)驗(yàn)室,便將試驗(yàn)臺(tái)斷電了。第二天來后,發(fā)現(xiàn)這個(gè)問題莫名其妙的被解決了。到現(xiàn)在也不知道載入失敗的原因是什么。5.1.2 6116中存儲(chǔ)數(shù)據(jù)被改變6116數(shù)據(jù)的寫入是一個(gè)很大的問題。寫入數(shù)據(jù)時(shí),之前的已經(jīng)寫入的數(shù)據(jù)經(jīng)常會(huì)被后來的數(shù)據(jù)更改,所以,從6116指定的內(nèi)存中讀出數(shù)據(jù)時(shí),顯示在信號(hào)燈上的數(shù)據(jù)總是和預(yù)期的不一樣。仔細(xì)觀察后發(fā)現(xiàn),這些數(shù)據(jù)是之后寫入的某些數(shù)據(jù),也就是說,數(shù)據(jù)被改寫了。分析6116的寫入方式,它是直接寫入的,不需要另外的載入信號(hào),當(dāng)?shù)刂繁贿x定后,數(shù)據(jù)就已經(jīng)寫入了制定的內(nèi)存單元中。為了避

43、免這一問題,我們?cè)趯懭霐?shù)據(jù)的過程中,需要改變地址時(shí),要先選到較大的地址,保證這一地址還沒有寫入數(shù)據(jù)。比如寫完0011后,接下來寫入0100,這時(shí)候需要做的是,先將地址選擇到0111,然后再選擇到0100。通過這種方式,解決了6116中數(shù)據(jù)被改變的問題。5.1.3 2816中存儲(chǔ)數(shù)據(jù)被改變將控制信號(hào)寫入2816后,馬上測(cè)試,讀出2816中存儲(chǔ)的數(shù)據(jù),保證數(shù)據(jù)都是準(zhǔn)確無誤的。但是,斷電后,第二天發(fā)現(xiàn),2816中的0000單元和0001單元數(shù)據(jù)被改變,而其他單元中的數(shù)據(jù)都沒有問題。我們只能重新寫入2816中的數(shù)據(jù)。這次因?yàn)橥祽?,沒有使用244作為緩沖器,而是直接將信號(hào)給到了2816的輸入輸出端。寫入

44、成功后,將2816由寫模式轉(zhuǎn)換成讀模式。結(jié)果,輸出信號(hào)燈的顏色變得很詭異,馬上可以判定,這是數(shù)據(jù)沖突了。檢查電路后,發(fā)現(xiàn)這是因?yàn)闆]有使用244的原因。因?yàn)闆]有244的高阻功能,使得輸入信號(hào)和2816的輸出信號(hào)同時(shí)存在了。將輸入信號(hào)去掉后,信號(hào)燈變得正常。但是,奇怪的事情發(fā)生了,當(dāng)寫入其中一片2816時(shí),另一片2816的數(shù)據(jù)也被改變了,但是,我們對(duì)另一片2816什么也沒做。這樣直接輸入嘗試了幾次之后,發(fā)現(xiàn)這樣的問題一直是存在的。檢查電路發(fā)現(xiàn),兩片2816的控制信號(hào)是接在一起,也就是說,當(dāng)一片2816處于寫模式時(shí),另一片2816也處于寫模式(這是由于控制信號(hào)相同造成了)。由于另一片2816的輸入沒

45、有給,所以,寫入的數(shù)據(jù)肯定是有問題的。于是,我們將兩片2816同時(shí)寫入,這樣,就不會(huì)出現(xiàn)一片2816寫入,另一片輸入懸空的情況了。在寫入2816的過程中,還遇到了一個(gè)問題。因?yàn)橹?816的控制開關(guān)沒有放在一起,在寫模式與讀模式之間轉(zhuǎn)換時(shí),有些麻煩,所以,想改變開關(guān)的位置,把它們放在一起,方便操作。但是,當(dāng)把ce控制開關(guān)撥出來后,就出大問題了。2816所有單元的數(shù)據(jù)全部被改變。原來,ce這個(gè)控制信號(hào)只能在斷電的情況下才能改變,這是另一組的同學(xué)告訴我的,他們也遇到過這樣的問題。沒辦法,2816中的控制信號(hào)只能再次寫入。5.1.4 193計(jì)數(shù)器跳轉(zhuǎn)出問題在時(shí)序執(zhí)行時(shí),遇到最嚴(yán)重的問題要算這個(gè)了。當(dāng)

46、把所有的機(jī)器指令寫入6116后,開始自動(dòng)執(zhí)行,順序執(zhí)行語句執(zhí)行得很好,一點(diǎn)問題都沒有,而且很穩(wěn)定。但是,遇到跳轉(zhuǎn)指令時(shí),問題就來了。如果需要跳轉(zhuǎn)的地址的最低位為0,則不會(huì)有任何的問題;但是,如果最低位為1,則跳轉(zhuǎn)的地址會(huì)自動(dòng)加1。這個(gè)問題真的解決不了,跟老師討論過這個(gè)問題,也安裝排錯(cuò)的步驟把193的輸入輸出都接了出來,發(fā)現(xiàn)載入時(shí),輸入和預(yù)期的一樣,但是輸出就會(huì)加1。為了嘗試解決這個(gè)問題,我們將pc自加的節(jié)拍由執(zhí)行周期換到了取址周期,但是,對(duì)這個(gè)問題沒有什么實(shí)質(zhì)性的作用。換過193,但這個(gè)問題依然存在。大約花了2天的時(shí)間,改過很多的控制節(jié)拍,除了拿掉很多冗余的導(dǎo)線外,基本沒有什么大的幫助。最后沒

47、有辦法,在檢查的時(shí)候,需要實(shí)現(xiàn)跳轉(zhuǎn)的功能時(shí),我們只能講跳轉(zhuǎn)的地址設(shè)定到最低位為0。這樣人為的去編寫機(jī)器代碼,避開了這個(gè)無法消除的問題。5.1.5 193自加時(shí)的毛刺這個(gè)問題是大家在做實(shí)驗(yàn)時(shí)普遍遇到過的問題。因?yàn)?93芯片本身的問題,通過一個(gè)負(fù)脈沖,實(shí)現(xiàn)數(shù)據(jù)的加1功能。但是,芯片對(duì)負(fù)脈沖實(shí)在太過于敏感,如果用手指握住導(dǎo)線的一端,另一端接到193的up,可以看到,193的數(shù)據(jù)就會(huì)不停的跳動(dòng)。當(dāng)有人從旁邊走過的時(shí)候,193也會(huì)自加。進(jìn)行時(shí)序控制時(shí),有些與193加1毫不相干的節(jié)拍出現(xiàn)時(shí),也會(huì)使193的值發(fā)生改變。跟同學(xué)討論后,知道了大家基本上都有遇到這樣的問題,至于解決方案,有些同學(xué)是在脈沖信號(hào)給到1

48、93的up前,接2個(gè)d觸發(fā)器,這樣,就可以達(dá)到整形的目的。但是我們沒這么做。我們是盡可能的減少直接接到時(shí)序的導(dǎo)線數(shù)量,最后做到接到t0,t1,t2,t3都只有一根導(dǎo)線,這樣就減少了信號(hào)之間的干擾,193的跳動(dòng)也開始受控制了。5.2 功能測(cè)試檢查時(shí),我們有兩組測(cè)試程序,一組是我們自測(cè)時(shí)用到的程序,將所以的指令全部執(zhí)行了一遍。另外一組是老師布置給我們的任務(wù),讓我們實(shí)現(xiàn)一個(gè)比較大小的功能,并顯示較大的那個(gè)數(shù)據(jù)。需要先寫出匯編語句,再將匯編改寫成機(jī)器指令。自測(cè)程序如表5.1所示。表5.1 自測(cè)程序主存地址指令/數(shù)據(jù)二進(jìn)制機(jī)器碼ac值0000load1011 1111fd0001add0001 0010

49、ff0010jo1010 0101ff0011sub0011 1110fe0100jmp0101 0001fe0101not0110 0000ff0110xor1000 11015a0111add0010 11105b1000store0100 11015b1001and0111 1111591010shl(乘2)1100 0000b21011load1011 11015b1100stop1001 00005b11011010 01011010 010111100000 00010000 000111111111 11011111 1101按照上述內(nèi)容寫好主存后,手動(dòng)將pc清零,將395清零,

50、按下start鍵使程序自動(dòng)運(yùn)行,觀察各指示燈顯示,運(yùn)行結(jié)果正確。老師要求實(shí)現(xiàn)功能程序如表5.2所示。表5.2 要求功能程序主存地址指令/數(shù)據(jù)二進(jìn)制機(jī)器碼ac值0000load1011 11116c0001sub0011 1110020010jno1010 0101020011load1011 11100100jmp0101 01110101load1011 11116c0110jmp0101 01116c0111stop1001 00006c11100110 10100110 101011110110 11000110 1100該段機(jī)器指令的功能是比較1110單元與1111單元數(shù)據(jù)的大小,并將

51、較大的數(shù)據(jù)載入到ac中。由于此時(shí)1110單元的值為6a,1111單元的值為6c,所以,ac的預(yù)期值為6c。執(zhí)行該代碼后,觀察指示燈顯示,顯示結(jié)果正確。交換6116中1110單元與1111單元的數(shù)據(jù),其他的機(jī)器指令不發(fā)生任何改變,再次執(zhí)行該指令。此時(shí)6116中各單元的數(shù)據(jù)和ac的預(yù)期值如表5.3所示。表5.2 要求功能程序主存地址指令/數(shù)據(jù)二進(jìn)制機(jī)器碼ac值0000load1011 11116a0001sub0011 1110fe0010jno1010 0101fe0011load1011 11106c0100jmp0101 01116c0101load1011 11110110jmp0101

52、01110111stop1001 00006c11100110 11000110 110011110110 10100110 1010此時(shí),1110單元的數(shù)據(jù)為6c,1111單元的數(shù)據(jù)為6a。執(zhí)行同樣的指令后,觀察指示燈,ac顯示的結(jié)果仍然為6c。說明該機(jī)器代碼可以實(shí)現(xiàn)比較大小的功能。5.3 實(shí)驗(yàn)流程第一天:在實(shí)驗(yàn)室聽老師布置任務(wù)和集中講解。熟悉實(shí)驗(yàn)要求,查閱資料。第二天:領(lǐng)取芯片和導(dǎo)線。第三天:測(cè)試導(dǎo)線和芯片,熟悉芯片的功能。設(shè)計(jì)實(shí)驗(yàn)方案。第四天:初步完成總體實(shí)驗(yàn)圖的設(shè)計(jì)。第五天:設(shè)計(jì)微指令。第六天:設(shè)計(jì)微指令,測(cè)試微指令。第七天:測(cè)試電路,測(cè)試各種硬布線信號(hào)。第八天:測(cè)試硬布線信號(hào),修改硬布線信號(hào)。第九天:測(cè)試微指令,修改微指令。第十天:修改微指令。第十一天:處理74ls193的自加問題以及跳轉(zhuǎn)問題。第十二天:處理74ls

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論