




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 報 告題目:基于微程序控制器的簡單計算機系統(tǒng)設計與實現(xiàn)課程名稱: 專業(yè)班級: 學 號: 姓 名: 指導教師: 同組人員: 試驗臺號: 完成時間: 報告日期: 計算機科學與技術學院目 錄1 課程設計概述11.1 課設目的11.2 設計任務11.3 設計要求12 實驗原理與環(huán)境22.1 實驗原理結構圖22.1.1 功能結構圖22.1.2 中央處理器的功能22.1.3 中央處理器的組成32.2 實驗環(huán)境43 模塊設計方案53.1 實驗分析53.2 數(shù)據(jù)通路圖53.3 模塊設計63.2.1 主存儲器63.2.3 控制存儲器73.2.3 運算器和寄存器93.2.4 程序計數(shù)器113.2.
2、5 總體設計124 微指令設計144.1 機器指令設計144.2 微指令設計144.3 微程序設計144.4 指令流程圖154.4.1 取指公操作164.4.2 立即數(shù)加174.4.3 直接尋址加174.4.4 直接尋址減184.4.5 回存194.4.6 無條件跳轉204.4.7 有條件跳轉204.4.8 非214.4.9 與224.4.10 異或224.4.11 shl244.4.12 load244.5 芯片控點設計255 實驗過程與調試275.1 主要故障與調試275.1.1 395載入失敗275.1.2 6116中存儲數(shù)據(jù)被改變275.1.3 2816中存儲數(shù)據(jù)被改變275.1.4
3、193計數(shù)器跳轉出問題285.1.5 193自加時的毛刺285.2 功能測試285.3 實驗流程306 設計總結與心得316.1 課設總結316.1.1 方案總結316.1.2 功能總結316.1.3 未實現(xiàn)功能總結316.2 課設心得31參考文獻33附錄 部分芯片介紹341 課程設計概述1.1 課設目的計算機組成原理是計算機專業(yè)的核心基礎課。本課程力圖以“培養(yǎng)學生現(xiàn)代計算機系統(tǒng)設計能力”為目標,貫徹“強調軟/硬件關聯(lián)與協(xié)同、以cpu設計為核心/層次化系統(tǒng)設計的組織思路,有效地增強對學生的計算機系統(tǒng)設計能力的培養(yǎng)”。課程設計是學完該課程并進行多個單元實驗后,綜合利用所學的理論知識,并結合在單元
4、實驗中所積累的計算機部件設計和調試方法,設計出一臺具有自己指令系統(tǒng)的簡單計算機系統(tǒng)。所設計的系統(tǒng)能在基于eda的實驗平臺上運行一段程序,通過檢查程序結果的正確性來判斷所設計計算機系統(tǒng)正確性。課程設計屬于設計型實驗,不僅鍛煉學生簡單計算機系統(tǒng)的設計能力,而且通過進行主機系統(tǒng)底層電路的實現(xiàn)、故障分析與定位、系統(tǒng)調式等環(huán)節(jié)的鍛煉,進一步提高了學生分析和解決問題的能力。1.2 設計任務課程設計的主要任務是設計一臺簡單的計算機系統(tǒng),并調試通過。本組所選用的計算機系統(tǒng)結構是基于微程序控制器的簡單計算機系統(tǒng)設計與實現(xiàn)。 1) 完成數(shù)據(jù)通路設計并驗證數(shù)據(jù)通路功能確定cpu 的基本結構是采用總線方式還是采用專用
5、通路方式;2) 完成指定功能的各指令周期流程圖(表)和所需要的控制信號。把所有指令的狀態(tài)進行綜合,并歸納成最終需要的若干個狀態(tài),畫出指令流程的狀態(tài)圖,根據(jù)狀態(tài)圖設計狀態(tài)機;3) 完成時序列電路設計。通過畫出帶控制信號的多周期數(shù)據(jù)通路圖,列出 指令譯碼表,設計控制譯碼器。最后將控制譯碼器信號與多周期數(shù)據(jù)通路圖上的控制信號對應相連;主要技術指標如下:1) 支持算術運算、邏輯運算、存儲器讀寫、寄存器間數(shù)據(jù)傳送等幾類指令。2) 支持立即數(shù)尋址、直接尋址、隱含尋址、寄存器尋址等幾種基本的數(shù)據(jù)尋址方式和順序尋址、跳躍尋址兩種指令的尋址方式。3) 支持10條以上的指令。4) 能運行由自己所是設計的指令系統(tǒng)構
6、成的一段程序,程序執(zhí)行功能正確。1.3 設計要求1) 根據(jù)課程設計指導書的要求,制定出設計方案;2) 畫出自己所設計計算機系統(tǒng)的原理框圖和器件連接圖,分析器件連接圖中各器件不同引腳的功能,哪些可以固定連接,哪些需要通過微程序來控制,及這些控制信號的有效形式;3) 畫出各指令的指令周期流程圖和所需要的控制信號;4) 設計出實現(xiàn)指令功能的微程序控制器或硬布線控制器;5) 布線、調試、驗收;6) 課程設計報告和總結。2 實驗原理與環(huán)境2.1 實驗原理結構圖2.1.1 功能結構圖組成原理課程設計cpu功能結構圖如圖2.1所示。圖2.1 cpu功能結構圖2.1.2 中央處理器的功能cpu作為運行指令的部
7、件,從保證程序功能正確的角度看,cpu應該具有以下幾方面的功能:1)指令執(zhí)行順序的控制。即控制程序中的指令按事先規(guī)定的順序自動執(zhí)行,從而保證程序執(zhí)行過程中,指令在邏輯上的相互關系不被改變。2)指令的操作控制。即產(chǎn)生指令執(zhí)行過程中所需要的信號,以控制執(zhí)行部件按指令規(guī)定的操作運行。3)時間控制。即對每個控制信號進行定時,一邊按規(guī)定的時間順序啟動各操作。對于任何一條指令而言,如果操作控制信號的時間不正確,則指令的功能也就不能正確的實現(xiàn)。4)數(shù)據(jù)加工處理。即對數(shù)據(jù)進行算術、邏輯運算,或將數(shù)據(jù)在相關的部件之間傳輸。5)異常和中斷處理。即處理運算中的異常及處理外部設備的中斷服務請求等。2.1.3 中央處理
8、器的組成中央處理器主要由控制器和運算器兩部分構成??刂破鞯闹饕δ馨ǎ喝≈噶?、計算下一條指令的地址、對指令譯碼、產(chǎn)生相應的操作控制信號、控制指令執(zhí)行的步驟和數(shù)據(jù)流動的方向。運算器是執(zhí)行部件,有算術邏輯單元和各種寄存器組成。運算器接受控制器的命令執(zhí)行算術運算、邏輯運算即邏輯測試。許多中央處理器中具有多個運算功能單元,這些功能單元能夠進行并行運算。中央處理器的功能與其結構緊密相關,任何一種功能都依賴相應的硬件去實現(xiàn)。如圖2.1是一種能實現(xiàn)上述功能的cpu基本組成。下面對圖2.1的各部分功能進行簡要分析。a.cpu內常用的寄存器1)pc(程序計數(shù)器)pc保存將要執(zhí)行的指令地址,又稱指令地址寄存器。
9、cpu取指令時,將pc的內容送到主存地址寄存器,然后修改pc的值形成下一條要執(zhí)行的指令地址,有以下兩種修改pc內容的方法:(1)程序順序執(zhí)行是,可利用程序計數(shù)器本身的遞增功能來實現(xiàn),若程序無此功能,則通過加法器實現(xiàn);(2)轉移時,用轉移指令提供的地址修改pc的值。2)ir(指令寄存器)ir用于保存指令。從主存儲器取出的指令存放在ir中,直到新的指令從主存中取出為止。ir中對應于指令操作碼的部分輸出送到指令譯碼器。ir中指令的操作碼字段內容經(jīng)指令譯碼器,送到微操作信號形成不見;指令的地址碼字段根據(jù)尋址方式的不同可能送入程序計數(shù)器、地址寄存器或運算部件。有的機器指令操作碼中包含尋址方式,因此不單獨
10、設計尋址方式字段;有的機器將尋址方式字段和操作碼一并送入指令譯碼器;有的機器將操作碼字段和地址碼字段送入地址形成部件,以決定地址碼的作用。3)ar(地址寄存器)ar用來保存當前cpu所要訪問的主存單元地址,無論cpu是取指令還是存取數(shù)據(jù),都必須先將要訪問的主存單元地址送ar,知道讀寫操作完成。4)dr(數(shù)據(jù)緩沖寄存器):dr作為cpu和主存之間的數(shù)據(jù)緩沖寄存器用于存放操作數(shù)、運算結果或 中間結果以減少訪問主存的次數(shù);也可以存放從主存中讀出的數(shù)據(jù),或準備寫入的數(shù)據(jù)。b.指令譯碼器、地址形成部件和微操作產(chǎn)生部件1) 指令譯碼器(id)指令譯碼器對指令的操作碼進行譯碼,它的輸出送到微操作產(chǎn)生部件。2
11、) 地址形成部件地址形成部件對指令的尋址方式字段、地址字段進行譯碼,計算操作數(shù)的地址信息。3)微操作產(chǎn)生部件微操作產(chǎn)生部件接收指令譯碼器送來的信息,與時序信號、條件及狀態(tài)信息進行組合,形成各種具有時間標志的控制信號(即微操作控制序列)并發(fā)送到計算機的各個部件。微操作產(chǎn)生部件是控制決策機構。信息流的控制就是把操作產(chǎn)生部件的微操作控制序列(即微操作控制信號),送到各個部件的控制門、觸發(fā)器或鎖存器,去打開或關閉某些特定的門電路,使數(shù)據(jù)信息按完成指令功能所需要經(jīng)過的路徑,從一個功能部件傳送到另一個功能部件,實現(xiàn)對數(shù)據(jù)加工處理的控制。根據(jù)設計方法不同,微操作產(chǎn)生部件的結構有三種不同的類型:組合邏輯型、存
12、儲邏輯型即前兩者的結合型。它們分別對應三中不同的控制器組成方式:組合邏輯控制器、微程序控制器及組合邏輯與存儲邏輯混合型控制器。c.時序控制部件指令執(zhí)行過程中所有操作都必須按照一定的次序完成,而且每個操作在什么時刻執(zhí)行,執(zhí)行多長時間都有嚴格的規(guī)定,不能有任何差錯。例如執(zhí)行加法 指令,必須先將操作數(shù)送到alu的輸入端,然后再給出alu執(zhí)行加法的操作控制信號,待加法操作完成后,才能將結果送往目的地。不僅次序有規(guī)定,而且對什么時刻送操作數(shù)、什么時刻執(zhí)行加法操作、什么時刻送出結果也有規(guī)定。因此,需要時序概念。圖2.1中時序控制部件的作用就是產(chǎn)生一組時序信號,即一系列電位與脈沖,送到微操作產(chǎn)生部件,對各種
13、操作信號進行時序控制。2.2 實驗環(huán)境jzyl型計算機組成原理實驗儀一臺。導線若干。涉及芯片類型及數(shù)量如表2.1所示。表2.1 所需芯片類型及數(shù)量芯片編號芯片名稱所需數(shù)量74ls193二進制同步可逆計數(shù)器174ls181四位運算器274ls244三態(tài)8位緩沖器274ls157四位2選1數(shù)據(jù)選擇器474ls373八d鎖存器7611616k cmos靜態(tài)ram(2048*8)12816aeeprom存儲器(2048*8)274ls395四位寄存器174ls08二輸入四與門274ls04六門反相器174ls32二輸入四或門13 模塊設計方案3.1 實驗分析分析本次課程設計中對簡易cpu的要求,需要設
14、計的功能部件有主存儲器、控制存儲器、運算器、寄存器、計數(shù)器等。由于課程設計提供的芯片種類有限,我們選取了其中的74ls373、181、6116、2816a、74ls244、74ls193、74ls157、74ls395等芯片實現(xiàn)相應的功能。我們設計的機器指令長度為8為,其中前4位為操作碼,后四位為操作數(shù)。在設計方案時,我們先將總體方案分解為多個小的模塊,分別進行設計,然后再將各個模塊拼接在一起,實現(xiàn)最終需要的功能。分解的模塊包括主存儲器、控制存儲器、運算器、寄存器、計數(shù)器。下面將逐個分析各個模塊的設計思路。3.2 數(shù)據(jù)通路圖圖3.1 數(shù)據(jù)通路圖課程設計的數(shù)據(jù)通路圖如圖3.1所示。圖中標明了計算
15、機系統(tǒng)中的各個部件,包括內存、程序計數(shù)器、運算器、寄存器、控制存儲器、指令寄存器、數(shù)據(jù)寄存器、微指令寄存器等等功能部件。同時,也注明了不同部件的芯片組成,以及控制信號??刂菩盘柺怯晌⒊绦蛑械男盘枺ㄒ?.3 微程序設計)和時序節(jié)拍通過組合邏輯的方式形成。3.3 模塊設計3.2.1 主存儲器主存儲器相當于計算機系統(tǒng)中的主存。我們選擇一片6116作為主存儲器。我們設計的機器指令長度為8位,低4位為操作數(shù),所以,我們只選用了6116的低四位地址,其他地址位均接低電平。換言之,我們能手動寫入的內存只有16位,分別從0000到1111。在寫入6116時,使用了一片74ls244作為緩沖器。因為在總體電路中
16、,6116的輸入可能會有多個,為了避免沖突,使用一片244可以方便后面輸入端的選擇。6116的地址通過一片74ls157后輸入。選擇74ls157的原因是,6116的地址選擇有多種情況。第一種情況是手動輸入地址,這種情況發(fā)生在程序執(zhí)行前,需往6116中寫入程序,此時的地址由操作人員手動選擇;第二種情況是程序自動選擇,這種情況發(fā)生在程序連續(xù)執(zhí)行過程中,由pc自動選擇內存地址,取出操作指令或者指令的實現(xiàn)方式為直接尋址時,選擇數(shù)據(jù)的地址。主存儲器的結構圖如3.2所示。圖3.2 主存儲器結構圖6116芯片的功能如表3.1所示。我們選擇的寫模式為=l,=l,=l。我們選擇的讀模式為=l,=h,=l。其中
17、,需要控制的只有,另外兩個輸入保持不變。6116是ram芯片,斷電后,芯片內的信息將會丟失。表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 控制存儲器控制存儲器是整個課程設計中最重要的一個模塊,這一部分設計起來沒有
18、太大難度。但是,由于微程序設計中的微指令是從控制存儲器中取出的,這一部分的設計尤為重要。我們選擇兩片2816作為控制存儲器。我們設計的微指令中,一共有13位有效信號。由于2816是8位的,所以,需要兩片2816存儲需要的微指令。我們設計的機器指令長度為8位,高4位為操作指令,所以,只選用了2816的低四位地址,其他地址位均接低電平。換言之,我們能寫入的控制信號只有16位,分別從0000到1111。實際上,我們設計的指令只有12條,16個內存已能滿足需求。在寫入2816時,使用了一片74ls244作為緩沖器。寫入完成后,去掉74ls244。因為2816中的信息是確定的,每一個8位(兩個2816應
19、是16位)都對應著一條微指令,只要一次正確寫入后,以后都不需要更改。由于2816是rom芯片,斷電后,信息不會丟失。但是,寫入數(shù)據(jù)時,需要使用一片74ls244,作為緩沖器。2816的微指令信號輸出后,將會鎖存到373中,避免在指令執(zhí)行周期,控制信號發(fā)生改變。與2816相連的兩片373的功能相當于計算機系統(tǒng)中的ir(微指令寄存器)。與2816相連的74ls395的作用是,在執(zhí)行周期結束后,395清零(也可能是結束前,只要對結果不產(chǎn)生干擾就可以),系統(tǒng)進入取值周期。與74ls395相連的74ls373相當于計算機系統(tǒng)中的ir(指令寄存器)。其中,高4位為操作指令,這4位將會作為74ls395的輸
20、入,選擇2816中的微指令,進而鎖存在微指令寄存器中??刂拼鎯ζ鞯慕Y構圖如圖3.3所示。結構圖中沒有標明寫入2816時用到的緩沖器74ls244,因為它只在寫入時使用,寫入成功之后,244將沒有其他的作用,可以去掉。圖3.3 控制存儲器結構圖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 運算器和寄存器運算器是cpu可以實現(xiàn)運算操作的基本部件,所使用的芯片本身只能實現(xiàn)最基本的加減算術運算和亦或、非與等基本邏輯運算。但是,通過基本運算的組合,可以實現(xiàn)及其復雜的運算,如積分,甚至傅里葉變換。現(xiàn)代計算機可以顯示各種我們需要的功能,但是,如果把每條指令分解來看,可以發(fā)現(xiàn),它可以做到的事情實際上再簡單不過。唯快不破,它通過將處理速度做到極致,即使它做的事情異常簡單,但是,它能做到的事情卻可以改變整個世界。由于提供的芯片中,能顯示運算操作的芯片只有74ls181。所以,181芯片是
22、實現(xiàn)運算器的不二選擇。由于設計的數(shù)據(jù)位數(shù)為8位,而181只能實現(xiàn)4為的邏輯運算和算術運算,所以,我們需要兩片74ls181來實現(xiàn)8位數(shù)據(jù)操作。181的b輸入通過了74ls157,原因是,由于尋址方式有立即數(shù)和直接尋址,所以,通過157來選擇不同的尋址方式。157中的數(shù)據(jù)有兩種情況,一種是立即數(shù),這時高四位為0(由于指令位數(shù)的限制,立即數(shù)只能有4位);另一種是直接尋址,這時181中的8位數(shù)據(jù)全部來自于主存6116。74ls181的運算結果輸入后,鎖存在74ls373中,這樣,可以防止運算結果被下一條運算操作改變。與這個373相連的是另外一個74ls373,它的作用相當于一個寄存器。181中的a輸
23、入來自于這個373(寄存器)。74ls157的其中一個輸入來自一個74ls373,它的作用相當于計算機系統(tǒng)中的數(shù)據(jù)寄存器(dr)。直接尋址時,數(shù)據(jù)從主存6116中讀出,鎖存在這個373中,進行運算時,數(shù)據(jù)寄存器中的數(shù)據(jù)一直保持不變。運算器的結構圖如圖3.4所示。圖3.4 運算器結構圖74ls181的功能比較強大,可以實現(xiàn)多種邏輯運算和位運算,圖3.5列出了181的部分功能,其中,a0,a1,a2,a3,b0,b1,b2,b3位運算器輸入;f0,f1,f2,f3為運算器輸出;s0,s1,s2,s3為運算指令控制端;m位算術或邏輯運算控制端;為有無進位控制端,為高位進位。圖3.5 74ls181功
24、能表3.2.4 程序計數(shù)器程序計數(shù)器的功能比較簡單,就是在程序執(zhí)行過程中,指示正確的內存地址,讓計算機自動的從內存中讀取出正確的指令執(zhí)行。順序執(zhí)行時,每一條執(zhí)行指令結束,pc自加1;但有跳轉指令出現(xiàn)時,pc被設置為需要跳轉到的內存地址。提供的芯片中,具有計數(shù)功能的有74ls193和74ls181。但是,181的功能過于強大,用這個比較復雜的芯片去實現(xiàn)如此簡單的功能,不太合適,況且,181的置數(shù)操作不太容易實現(xiàn),經(jīng)比較可以知道,應選用193做為顯示程序計數(shù)器的芯片。一片74ls193便可以實現(xiàn)。與74ls193相連的373是指令寄存器。當出現(xiàn)跳轉指令時,指令寄存器的低4位將會被load到193中
25、,以確保下一條指令的執(zhí)行時正確的。在順序執(zhí)行的情況下,193實現(xiàn)的都是+1功能。由于一片193只有四位,所以,能表達的指令內存地址最大只能到1111。74ls193的輸入接到一片74ls157,而此片157的另外一個輸入為指令寄存器的低4位。這樣設計是因為,取址周期時,從pc中讀入地址,在從6116的指定內存單元中讀出8位操作指令;而在執(zhí)行階段,如果尋址方式為直接尋址,則需要將指令寄存器的低4位作為數(shù)據(jù)的內存地址,從6116的指定內存單元中讀出8位操作數(shù)。因為這兩種情況都是存在的,所以,需要有一片74ls157來區(qū)分這兩種情況。區(qū)分的條件是不同的機器指令對應著不同的微操作,通過微指令來選擇15
26、7的輸出是程序計數(shù)器的輸入還是指令寄存器的低4位輸入。 程序計數(shù)器的結構圖如圖3.6所示。圖3.6 程序計數(shù)器結構圖74ls193芯片的功能如表3.7所示。表3.7 74ls193芯片功能表輸入輸出備注lddncpucpdqn1dddd0清零(異步)00xddx置數(shù)(異步)01d1累加計數(shù)上升沿有效01d1累減計數(shù)上升沿有效功能說明:1. 直接清零:當=1時,計數(shù)器異步清零。2. 直接置數(shù):當ld=0時,計數(shù)器異步置數(shù)。3. 二進制加/減法計數(shù)脈沖cpu/cpd上升沿有效。3.2.5 總體設計整個課程設計的總體結構圖如圖3.6所示。總體結構圖中,添加了一個回存的功能,由于只是在寄存器后邊加上一
27、個74ls244芯片,然后將244的輸出接到主存6116的輸入端,所以,在模塊設計中,沒有把回存作為單獨的一個模塊說明。圖3.6 總體結構圖4 微指令設計4.1 機器指令設計根據(jù)課程設計要求,我們設計的機器指令為8位,其中,前4位表示操作命令,后4位為操作數(shù)。由于操作命令用4位表示,所以,可以實現(xiàn)的操作最多只能有16條。設計的指令包括算術指令:立即數(shù)加、直接尋址加、直接尋址減;邏輯運算:非運算、與運算、亦或運算;回存;跳轉指令:無條件跳轉、溢出跳轉;載入指令;乘二指令;停機指令;取址操作。其中,直接尋址加、直接尋址減、邏輯運算及乘二運算均使用隱含尋址。取址操作、立即數(shù)加、載入操作、跳轉指令和回
28、存指令均使用立即數(shù)尋址。直接尋址加、直接尋址減、與運算、亦或運算均使用直接尋址。機器指令由操作人員將匯編語言翻譯成機器語言后,手動輸入到內存中。4.2 微指令設計控制存儲器由兩片2816組成,最多可以有16位控制信號。但我們在設計微指令時,只使用了13個控制信號,使用了一片2816的所有8位,另一片2816的低5位。微命令編碼方法采用直接表示法,將微指令操作控制字段的每一個二進制位定義為一個微命令。一條微指令從控存中取出時,它所包含的微命令經(jīng)時間同步后去控制相應的數(shù)據(jù)通路中的部件。13位控制信號機器作用如表4.1所示。其他3位接低電平。表4.1 控制信號作用2816輸出控制信號作用說明c0s0
29、181運算控制信號c1s1181運算控制信號c2s2181運算控制信號c3s3181運算控制信號c4cn181借位輸入信號c5m181運算控制信號c6write回存時 244 oe端/6116 we端控制信號c7aluin157控制選擇來自dr/ir(立即數(shù))的信號c86116add193地址與直接尋址地址間選擇信號c9stop停機時控制時序停止c10stop停機時控制時序停止c11count與脈沖信號進行邏輯運算后控制193是否加1計數(shù)c12load與其他控制信號進行邏輯運算后控制193是否載入4.3 微程序設計程序中每一條指令用8位二進制位來表示,而前四位為操作碼,即為實現(xiàn)該指令的微程序的
30、入口地址,后四位為操作數(shù)的地址(直接尋址)或操作數(shù)(立即數(shù)尋址)。操作指令對應的微程序如表4.2所示。寫出這個表的過程比較復雜,也是整個課程設計最有技術含量的一部分,還有一部分是時序電路的加入。首先,先把可能需要控制的全部芯片控制信號列舉出來,可能會超過16個,但是沒關系,因為在后面的步驟中,會發(fā)現(xiàn)有些控制信息一直沒有變化,可以用一個確定的信號代替。然后,給需要用到的指令分配一個4位的控存地址,這將會成為該指令的微程序的入口地址。由于指令只有4位,所以,所有指令條數(shù)不能超過16條。接著,就是比較復雜的一步了。分析每一條指令,畫出每條指令的數(shù)據(jù)流和控制流,(具體流程圖見4.4 指令流程圖)通過這
31、種方式,知道每條指令需要的控制信號。表4.2 匯編指令對應的微程序表指令控存地址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停機1001 0000 0100 0101 0000jo1010 0001 0010 0101 0000load1011 0000 0011 0111 1010shl1100 0000 0011 0101 1100微程序表中,每條微程序都有16個控制信號。芯片編號參考圖4.13。如表中編號所示,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用來停機,實際使用時,沒有使用9號控制信號;11和12分別表示193中的up和lo
33、ad;其他位均為0。4.4 指令流程圖我們設計的指令,包括取址公操作在內,一共有12條。不同類型的指令控制流和數(shù)據(jù)流都是不相同的,由于數(shù)據(jù)流這個部分可以參考圖2.1,圖中說明了所有數(shù)據(jù)所在的芯片。在同一個周期中,數(shù)據(jù)都是存在的,關鍵在與控制信息在同一個周期中不同節(jié)拍的控制。需要控制的芯片包括74ls373,它是8位鎖存器,所以,需要控制數(shù)據(jù)何時寫入373中,何時保持373中的數(shù)據(jù)不發(fā)生改變;74ls157,它是2選1數(shù)據(jù)選擇器,所以,需要控制輸出數(shù)據(jù)是兩個輸入數(shù)據(jù)中的哪一個;6116,這個芯片在回存指令時,必須要在某個節(jié)拍變成寫模式,但是,在其他指令的周期中,必須一直保持讀模式。另外還需要控制
34、的芯片是74ls395,因為取址周期前,它需要清零,而執(zhí)行周期前,它需要置數(shù)。4.4.1 取指公操作我們設計的指令都是雙周期的,其中,第一個周期為取指周期,從內存中取出執(zhí)行指令;第二個周期為執(zhí)行周期,執(zhí)行該指令。取址公操作的控制信號存放在控制存儲器的0000號單元,也就是說,需要進行取址操作時,將395清零即可。控制信號從控制存儲器中讀出后,寫入到微指令寄存器中。通過這一組控制信號,從6116的指定單元中讀出指令。指令存放在指令寄存器中。接下來,將4位操作指令載入74ls395中。這4位操作數(shù)成為這條指令的微程序的入口地址,從控制存儲器中讀出微程序后,鎖存在微指令寄存器中。(這個鎖存的節(jié)拍不在
35、取指公操作,而是在執(zhí)行周期的第一個節(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單元內的數(shù)據(jù),被加數(shù)為寄存器ac中的值。其他基本一致。直接尋址加的控制流程圖如圖4.3所示。 圖4.3 直接尋址加控制流4.4.4 直接尋址減直接尋址加和直接尋址減的數(shù)據(jù)流和控制流上基本一致,只是在74ls181的控制上,對于4個運算控制信號有些區(qū)別。直接尋址減
36、的控制流程圖如圖4.4所示。圖4.4 直接尋址減控制流4.4.5 回存回存時,內存需要由讀模式變?yōu)閷懩J?。回存控制流程圖如圖4.5所示。圖4.5 回存控制流4.4.6 無條件跳轉無條件跳轉控制流程圖如4.6所示。圖4.6 無條件跳轉控制流4.4.7 有條件跳轉有條件跳轉流程圖如圖4.7所示。與無條件跳轉的不同之處在于,必須判斷數(shù)據(jù)時是否溢出。如果有溢出,則實現(xiàn)跳轉,否則不實現(xiàn)跳轉。圖4.7 有條件跳轉控制流4.4.8 非求非指令控制流程圖如圖4.8所示。圖4.8 求非指令控制流4.4.9 與求非指令使用的尋址方式是隱含尋址,但是求與指令使用的尋址方式是隱含尋址加直接尋址。所以,數(shù)據(jù)通路要比求非
37、運算要長一些??刂菩盘栆哺鼜碗s一些。求與指令的控制流程圖如圖4.9所示。圖4.9 求與指令控制流4.4.10 異或亦或指令和與指令的數(shù)據(jù)流和控制流上基本一致,只是在74ls181的控制上,對于4個運算控制信號有些區(qū)別。亦或指令的控制流程圖如圖4.10所示。圖4.10 亦或指令控制流圖4.11 乘2指令控制流4.4.11 shl乘2指令的尋址方式為隱含尋址,即把寄存器ac中的值擴大一倍,再存入ac中。乘2指令的控制流程圖如圖4.11所示。4.4.12 load載入指令的功能是將指定內存單元中的數(shù)據(jù)載入寄存器ac中,作為運算的初始值。與之相對應的是回存指令,它的作用是將寄存器ac中的值存入指定內存
38、單元。載入指令的控制流程圖如圖4.12所示。圖4.12 載入指令控制流4.5 芯片控點設計在設計微指令之前,我們分析整個電路中的各個芯片的控點,其中有些是需要控制的,而有些是不需要變動的,始終接到一個電位就可以了。數(shù)據(jù)通路圖如圖4.13所示。圖4.13 數(shù)據(jù)通路圖不需要控制的控點有:向6116輸入的74ls244芯片:和并接到一個開關上,只有在寫機器指令的時候為低電平,其他時刻都為高電平,手動控制,不需要微指令控制。和并接接地,多余的地址線接在一起并接地。向2816輸入的74ls244芯片:和并接到一個開關上,只有在寫微指令的時候為低電平,其他時刻都為高電平,手動控制,不需要微指令控制。多余地
39、址線接地。74ls157d芯片:使能端s分別接開關,需要手動控制輸入改變地址時為低電平,0通道選通;其他時候為高電平,1通道選通。所有74ls373芯片的輸出控制端接地。2816芯片:和并接接地,多余的地址線接在一起并接地。需要控制的控點有:回存244a芯片:和并接一起控制。74ls157a,74ls157b,74ls157c芯片的使能端s。所有74ls373的使能端s。181芯片:運算指令控制端,算術或邏輯運算控制端m,有無進位控制端。6116芯片:端。74ls193的up和load。 74ls395的,和。這些控點都是需要微程序中的信號來控制的,具體控制見表4.2。還有些控制信號需要微程序
40、中的控制信號與時序節(jié)拍組合邏輯后實現(xiàn),具體組合邏輯見4.4 指令控制流程圖。表達式如下。其中t1,t2,t3,t4分別表示一個周期中的四個節(jié)拍,c11和c12為表4.2中編號為11,12的控制信號,a3是4位操作指令中的最低位。373a的使能端g = t3;373b的使能端g = t4;373c的使能端;373d的使能端;373e和373f的使能端;395的=,;193的, 5 實驗過程與調試5.1 主要故障與調試5.1.1 395載入失敗74ls395在本次課程設計中的功能有兩個,第一個功能是在取址周期前,將數(shù)據(jù)清零。而0000是控制存儲器中,取址指令的入口地址。通過這一操作,將取址的控制信
41、號鎖存在微指令寄存器中,保證雙周期中,取址周期的正確執(zhí)行。第二個功能是在執(zhí)行周期前,將指令寄存器中的高4位,也就是4位操作命令載入,此時,將會從控制存儲器中讀出特定指令的控制信號,鎖存到微指令寄存器中,保證執(zhí)行周期的正確執(zhí)行。按照步驟連接好電路后,開始測試時,發(fā)現(xiàn)74ls395清零功能是好的,但是,載入功能出問題了。給395提供載入信號后,輸出仍然保持不變,還是0000。接下來需要做的就是排錯。首先,將395的輸入信號和輸出信號分別接到信號燈上,及時顯示輸入和輸出的數(shù)據(jù)。結果發(fā)現(xiàn),不論輸入信號如何,加上載入信號后,4個輸出燈全是藍色的,也就是0000。問題只有可能出在控制信號上,于是,我們也將
42、控制信號接到信號燈上。讓我們不可思議的是,控制信號也沒有問題。最后,由于時間的原因,我們必須要離開實驗室,便將試驗臺斷電了。第二天來后,發(fā)現(xiàn)這個問題莫名其妙的被解決了。到現(xiàn)在也不知道載入失敗的原因是什么。5.1.2 6116中存儲數(shù)據(jù)被改變6116數(shù)據(jù)的寫入是一個很大的問題。寫入數(shù)據(jù)時,之前的已經(jīng)寫入的數(shù)據(jù)經(jīng)常會被后來的數(shù)據(jù)更改,所以,從6116指定的內存中讀出數(shù)據(jù)時,顯示在信號燈上的數(shù)據(jù)總是和預期的不一樣。仔細觀察后發(fā)現(xiàn),這些數(shù)據(jù)是之后寫入的某些數(shù)據(jù),也就是說,數(shù)據(jù)被改寫了。分析6116的寫入方式,它是直接寫入的,不需要另外的載入信號,當?shù)刂繁贿x定后,數(shù)據(jù)就已經(jīng)寫入了制定的內存單元中。為了避
43、免這一問題,我們在寫入數(shù)據(jù)的過程中,需要改變地址時,要先選到較大的地址,保證這一地址還沒有寫入數(shù)據(jù)。比如寫完0011后,接下來寫入0100,這時候需要做的是,先將地址選擇到0111,然后再選擇到0100。通過這種方式,解決了6116中數(shù)據(jù)被改變的問題。5.1.3 2816中存儲數(shù)據(jù)被改變將控制信號寫入2816后,馬上測試,讀出2816中存儲的數(shù)據(jù),保證數(shù)據(jù)都是準確無誤的。但是,斷電后,第二天發(fā)現(xiàn),2816中的0000單元和0001單元數(shù)據(jù)被改變,而其他單元中的數(shù)據(jù)都沒有問題。我們只能重新寫入2816中的數(shù)據(jù)。這次因為偷懶,沒有使用244作為緩沖器,而是直接將信號給到了2816的輸入輸出端。寫入
44、成功后,將2816由寫模式轉換成讀模式。結果,輸出信號燈的顏色變得很詭異,馬上可以判定,這是數(shù)據(jù)沖突了。檢查電路后,發(fā)現(xiàn)這是因為沒有使用244的原因。因為沒有244的高阻功能,使得輸入信號和2816的輸出信號同時存在了。將輸入信號去掉后,信號燈變得正常。但是,奇怪的事情發(fā)生了,當寫入其中一片2816時,另一片2816的數(shù)據(jù)也被改變了,但是,我們對另一片2816什么也沒做。這樣直接輸入嘗試了幾次之后,發(fā)現(xiàn)這樣的問題一直是存在的。檢查電路發(fā)現(xiàn),兩片2816的控制信號是接在一起,也就是說,當一片2816處于寫模式時,另一片2816也處于寫模式(這是由于控制信號相同造成了)。由于另一片2816的輸入沒
45、有給,所以,寫入的數(shù)據(jù)肯定是有問題的。于是,我們將兩片2816同時寫入,這樣,就不會出現(xiàn)一片2816寫入,另一片輸入懸空的情況了。在寫入2816的過程中,還遇到了一個問題。因為之前2816的控制開關沒有放在一起,在寫模式與讀模式之間轉換時,有些麻煩,所以,想改變開關的位置,把它們放在一起,方便操作。但是,當把ce控制開關撥出來后,就出大問題了。2816所有單元的數(shù)據(jù)全部被改變。原來,ce這個控制信號只能在斷電的情況下才能改變,這是另一組的同學告訴我的,他們也遇到過這樣的問題。沒辦法,2816中的控制信號只能再次寫入。5.1.4 193計數(shù)器跳轉出問題在時序執(zhí)行時,遇到最嚴重的問題要算這個了。當
46、把所有的機器指令寫入6116后,開始自動執(zhí)行,順序執(zhí)行語句執(zhí)行得很好,一點問題都沒有,而且很穩(wěn)定。但是,遇到跳轉指令時,問題就來了。如果需要跳轉的地址的最低位為0,則不會有任何的問題;但是,如果最低位為1,則跳轉的地址會自動加1。這個問題真的解決不了,跟老師討論過這個問題,也安裝排錯的步驟把193的輸入輸出都接了出來,發(fā)現(xiàn)載入時,輸入和預期的一樣,但是輸出就會加1。為了嘗試解決這個問題,我們將pc自加的節(jié)拍由執(zhí)行周期換到了取址周期,但是,對這個問題沒有什么實質性的作用。換過193,但這個問題依然存在。大約花了2天的時間,改過很多的控制節(jié)拍,除了拿掉很多冗余的導線外,基本沒有什么大的幫助。最后沒
47、有辦法,在檢查的時候,需要實現(xiàn)跳轉的功能時,我們只能講跳轉的地址設定到最低位為0。這樣人為的去編寫機器代碼,避開了這個無法消除的問題。5.1.5 193自加時的毛刺這個問題是大家在做實驗時普遍遇到過的問題。因為193芯片本身的問題,通過一個負脈沖,實現(xiàn)數(shù)據(jù)的加1功能。但是,芯片對負脈沖實在太過于敏感,如果用手指握住導線的一端,另一端接到193的up,可以看到,193的數(shù)據(jù)就會不停的跳動。當有人從旁邊走過的時候,193也會自加。進行時序控制時,有些與193加1毫不相干的節(jié)拍出現(xiàn)時,也會使193的值發(fā)生改變。跟同學討論后,知道了大家基本上都有遇到這樣的問題,至于解決方案,有些同學是在脈沖信號給到1
48、93的up前,接2個d觸發(fā)器,這樣,就可以達到整形的目的。但是我們沒這么做。我們是盡可能的減少直接接到時序的導線數(shù)量,最后做到接到t0,t1,t2,t3都只有一根導線,這樣就減少了信號之間的干擾,193的跳動也開始受控制了。5.2 功能測試檢查時,我們有兩組測試程序,一組是我們自測時用到的程序,將所以的指令全部執(zhí)行了一遍。另外一組是老師布置給我們的任務,讓我們實現(xiàn)一個比較大小的功能,并顯示較大的那個數(shù)據(jù)。需要先寫出匯編語句,再將匯編改寫成機器指令。自測程序如表5.1所示。表5.1 自測程序主存地址指令/數(shù)據(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按照上述內容寫好主存后,手動將pc清零,將395清零,
50、按下start鍵使程序自動運行,觀察各指示燈顯示,運行結果正確。老師要求實現(xiàn)功能程序如表5.2所示。表5.2 要求功能程序主存地址指令/數(shù)據(jù)二進制機器碼ac值0000load1011 11116c0001sub0011 1110020010jno1010 0101020011load1011 11100100jmp0101 01110101load1011 11116c0110jmp0101 01116c0111stop1001 00006c11100110 10100110 101011110110 11000110 1100該段機器指令的功能是比較1110單元與1111單元數(shù)據(jù)的大小,并將
51、較大的數(shù)據(jù)載入到ac中。由于此時1110單元的值為6a,1111單元的值為6c,所以,ac的預期值為6c。執(zhí)行該代碼后,觀察指示燈顯示,顯示結果正確。交換6116中1110單元與1111單元的數(shù)據(jù),其他的機器指令不發(fā)生任何改變,再次執(zhí)行該指令。此時6116中各單元的數(shù)據(jù)和ac的預期值如表5.3所示。表5.2 要求功能程序主存地址指令/數(shù)據(jù)二進制機器碼ac值0000load1011 11116a0001sub0011 1110fe0010jno1010 0101fe0011load1011 11106c0100jmp0101 01116c0101load1011 11110110jmp0101
52、01110111stop1001 00006c11100110 11000110 110011110110 10100110 1010此時,1110單元的數(shù)據(jù)為6c,1111單元的數(shù)據(jù)為6a。執(zhí)行同樣的指令后,觀察指示燈,ac顯示的結果仍然為6c。說明該機器代碼可以實現(xiàn)比較大小的功能。5.3 實驗流程第一天:在實驗室聽老師布置任務和集中講解。熟悉實驗要求,查閱資料。第二天:領取芯片和導線。第三天:測試導線和芯片,熟悉芯片的功能。設計實驗方案。第四天:初步完成總體實驗圖的設計。第五天:設計微指令。第六天:設計微指令,測試微指令。第七天:測試電路,測試各種硬布線信號。第八天:測試硬布線信號,修改硬布線信號。第九天:測試微指令,修改微指令。第十天:修改微指令。第十一天:處理74ls193的自加問題以及跳轉問題。第十二天:處理74ls
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 土建瓦工勞務分包合同
- 常年法律顧問合同
- 詳細操作流程說明書
- 2025年撫州貨運資格證模擬考試題庫下載
- 2025年徐州市汽車租賃合同5篇
- 農莊農場合作經(jīng)營合同協(xié)議書范本6篇
- 公司副食品購銷合同7篇
- 房地產(chǎn)開發(fā)聯(lián)營合同
- 專利技術的授權與使用條款協(xié)議
- 無償保管合同范本-倉儲保管合同8篇
- 讀后續(xù)寫(2022新高考I卷)講解課件 高三英語寫作專項
- 三角形的內角和-課件
- 國企工程施工分包管理2019(67P+PPT)
- 成人大專畢業(yè)論文怎么寫(通用6篇)
- 醫(yī)院高壓氧艙室施工方案
- 質量問題檢出獎勵申請表模板
- 中職學生日常行為規(guī)范主題班會講稿
- 《大數(shù)據(jù)分析與應用》教學大綱
- 2022年中國遠洋海運集團有限公司招聘考試題庫及答案解析
- 供應鏈管理課件第5章供應鏈合作伙伴選擇與評價
- 4D現(xiàn)場管理培訓ppt課件(PPT 45頁)
評論
0/150
提交評論