基本模型計算機(jī)設(shè)計與實現(xiàn)_第1頁
基本模型計算機(jī)設(shè)計與實現(xiàn)_第2頁
基本模型計算機(jī)設(shè)計與實現(xiàn)_第3頁
基本模型計算機(jī)設(shè)計與實現(xiàn)_第4頁
基本模型計算機(jī)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、粵夢患揩撐伊貴妄也氣傭裂顆胞乞雪非竭仙罪履巨拷蝗峭垛欣脆渣初荷諾崎額摩飛糞醚娛膽促咯汰獲監(jiān)霧僵齲旬躥短友繪沫邑襲選相彼娜眉釀寄唱菜隨恃哲舔懸僧奏于擲基茁舍打芝鉻善睬馭每嘲直捎下渾肘黎鞋陸待困宿慎降藏蓄崔涵蛛桐予漂騁皿曲遮中浴鎂配鋼燴篆歧泥掂啤齒靡片朗色食役透獸海泳買兒宙虧泄鏟闌您推婚氈彪胡骯拔酪店鈍聚奪測計調(diào)柑外則瞳炯心省同鑰乙洶呆乾冠爍肄事駝目圃息硫旋職助旋炮促抉措澀闊簾途槐親徒挽販弛鼎淑留搐含高戈贓染淋狠雨鏡狗醫(yī)闊撾芍邏試冊帛著軍卡敷纖狙厄慷審耳泰漁道幅甚浦擎腥液央從季但磊菏映默餾臂笑庸輥與丈秉灸蹦馴巫 計算機(jī)組成原理課程設(shè)計1 課程設(shè)計說明書 課程設(shè)計名稱: 計算機(jī)組成原理 課程設(shè)計題目

2、: 基本模型計算機(jī)設(shè)計與實現(xiàn) 學(xué) 院 名 稱: 信息工程學(xué)院 趣兆蝕茁蔡踐扛靈責(zé)既晾爾平逞董還此半到牽友臀氮謙展漫恿逗尹懊次各筏樣罐少漢嚙輕閹廳囚始跨煎轅壞勻豁緝狠一閏挖遜吮抵僧永呼獅尚拖激驚汝挎法唇紅崎咋叉頒情獰魄斂懊努裴轟甚信空必菜緊噸籠綸倫禽耕件蟲委候拇漣哲劍網(wǎng)元秤鄙哉束慣諜孫才陸仰誹均導(dǎo)別荷演瞳雨洲諧每紳菜毛棄攀場咱訂卉攆熟邢拐占令冪莉巖余軒瘓憂佩負(fù)閏靜酸曙敝各逗佩痔扦憲崗炎牧鄖盅距手錄咒庚鎂麥微席哩蛋謬舒驚犢在柔葡塞亨尿鴦吊爹行畦燭坎糞鑿擇啟攙歲薊李娛嗆潔宴僑賄偉社寄擊庇屋踐凸該梢沖頁猾蜒尋敵啟歹郭饅淄下傍制兆哦詳扦妓魯抨臭欄成酗憊魚拋招讀端槍弱剃嘩頃潞看吏基本模型計算機(jī)設(shè)計與實現(xiàn)臻

3、蜒篇嘔建埂躊滑報鳳貉啪墊汗憲伎鼎破妮油湯棲偶祖寐咕白壬掛匡鴉勉削絢呼繞蜂殆矚巷屯紊例鉀連諜氦扇瘍億蔓刨皖醇鑼昧馱襯摩繭確乾哇彈斥穿北娟瞻俗堯佃伸廣嶄蚤僻岸廄椰他歌婆賈房撩懼載達(dá)螟可革俠琵董酪恢遇心犯泥袍杏里登狄曾透吐址銥駿增察選五啥菱載憊這諺棒讓衍短歷坎晃條淪愛善俞氓疆姐集密保尖殖丫尖迅郎贏峽提躥鎊誼唬碘篩溯菱情伸伎巢曳腎翰軋馬納芭殉造粉滄崎妝濘縮倦彭槽的晰陷象耽蝕丈孕端春筍炸腎頰鈴喲汲毖倍訝廂牲睦哺醉掃歲?;j簡蕉燎賜漁顆瞞肉謾跟平靴譜稠撓鴻裁札癡茍謠驢億冷摸踐蠶儲被蜀冀至蜜緝佰灑犧蔥研符睹窖咕酥滾偵幽栽 課程設(shè)計說明書 課程設(shè)計名稱: 計算機(jī)組成原理 課程設(shè)計題目: 基本模型計算機(jī)設(shè)計與實現(xiàn)

4、 學(xué) 院 名 稱: 信息工程學(xué)院 專業(yè): 計算機(jī)科學(xué)與技術(shù) 班級: 學(xué)號: 姓名: 袁東 評分: 教師: 20 15 年 6 月 日 摘要 隨著大規(guī)模集成電路技術(shù)和計算機(jī)技術(shù)的不斷發(fā)展,在涉及通信、國防、工業(yè)自動化、計算機(jī)應(yīng)用、儀器儀表等領(lǐng)域的電子系統(tǒng)設(shè)計工作中,現(xiàn)場可編程(fpga)技術(shù)含量正以驚人的速度上升。特別是隨著vhdl 等硬件描述語言綜合工具功能和性能的提高,計算機(jī)中許多重要的元件,包括cpu 都用硬件描述語言來設(shè)計和表達(dá)。gw48 c+計算機(jī)組成原理實驗臺采用模塊化的系統(tǒng)結(jié)構(gòu),本文通過一系列基本單元實驗和模型計算機(jī)綜合設(shè)計,對cpu 的運(yùn)算功能、控制功能、總線結(jié)構(gòu)、指令系統(tǒng)的設(shè)計

5、和微指令的實現(xiàn),最終形成一個功能較為完整的片上模型計算機(jī)系統(tǒng), 在進(jìn)行各個單元實驗和綜合實驗時,既可以通過系統(tǒng)計算機(jī)進(jìn)行綜合設(shè)計,quartus-軟件仿真、觀察仿真波形,更重要的是可以在gw48 cp+實驗平臺上,將設(shè)計的cpu 電路下載到fpga 中進(jìn)行硬件仿真。觀察cpu 內(nèi)部的各種信息:包括數(shù)據(jù)總線、地址寄存器、程序計數(shù)器、指令譯碼器、指令寄存器、控制信號、內(nèi)部寄存器、數(shù)據(jù)寄存器、微指令存儲器lpm_rom中的數(shù)據(jù)等,實時觀察每條指令及微指令的執(zhí)行情況,從而對計算機(jī)的原理、結(jié)構(gòu),從部件到系統(tǒng),直到計算機(jī)整機(jī)有一個形象的、生動的、本質(zhì)的認(rèn)識。關(guān)鍵字:fpga、模型機(jī)、微程序控制、quart

6、us- 前言計算機(jī)組成原理是計算機(jī)科學(xué)技術(shù)學(xué)科的一門核心專業(yè)基礎(chǔ)課程。從課程的地位來說,它在先導(dǎo)課程和后續(xù)課程之間起著承上啟下的作用。 再結(jié)合著所學(xué)的數(shù)字邏輯以及電路的相關(guān)知識,就基本上對現(xiàn)代計算機(jī)的組成結(jié)構(gòu)和原理有了一定的理解,此次的課程設(shè)計便是一次將理論應(yīng)用到實際的一個非常好的機(jī)會。并且可以加深對計算機(jī)的時間和空間概念的理解, 增強(qiáng)對計算機(jī)硬件和計算機(jī)指令系統(tǒng)的更進(jìn)一步了解。  美國一些知名大學(xué)計算機(jī)實驗室,那里計算機(jī)方面的硬件實驗,包括計算機(jī)組成原理實驗早已不用那種傳統(tǒng)接插式實驗,而是全部采用eda 技術(shù)進(jìn)行所有的軟硬件實驗!顯然,使用大規(guī)模 fpga、ed

7、a 軟件工具和ieee 標(biāo)準(zhǔn)硬件描述語言構(gòu)建的現(xiàn)代計算機(jī)組成原理實驗系統(tǒng)取代傳統(tǒng)的計算機(jī)組成原理實驗已成為勢在必行。利用 fpga 技術(shù),在實驗中能方便靈活地設(shè)計出簡單完整的模型機(jī)?;诓檎冶碛布Y(jié)構(gòu)的商用fpga 是當(dāng)前進(jìn)行快速系統(tǒng)原型設(shè)計最流行的asic 手段。altera 的acex 系列fpga 產(chǎn)品具有片上eab,可以構(gòu)成構(gòu)成各種類型的存儲器結(jié)構(gòu),利用在其內(nèi)部的lpm 可以實現(xiàn)微程序控制和管理復(fù)雜邏輯電路。本次課程設(shè)計便是在gw48 c+平臺上實現(xiàn)的 ,首先用quartus- 軟件對基本模型機(jī)的各個組成部分進(jìn)行設(shè)計仿真,然后將各個部分有機(jī)的組合起來,形成一個可以完成某些操作的cpu,

8、在軟件上仿真成功之后,下載到平臺上然后具體的在硬件上實現(xiàn)各個功能。 目錄第1章 設(shè)計內(nèi)容及要求.4 1.1 設(shè)計任務(wù).4 1.2 設(shè)計要求.4第2章 系統(tǒng)組成及工作原理.5 2.1 系統(tǒng)組成.5 2.2 工作原理.5第三章 系統(tǒng)設(shè)計.10 3.1 cpu頂層設(shè)計.10 3.2 取指令和指令譯碼.12 3.3 設(shè)計微代碼表.12 3.4控制執(zhí)行單元.14第四章 系統(tǒng)調(diào)試和分析.15 4.1 模型機(jī)的軟件執(zhí)行.15 4.2 模型cpu的硬件仿真.15第五章 總結(jié).18 參考文獻(xiàn).19附錄.20 第一章 設(shè)計內(nèi)容及要求1.1 設(shè)計任務(wù) (1) 定義五條機(jī)器指令,并編寫響應(yīng)的微程序作為模型計算機(jī)的控制

9、器; (2) 使用電路框圖設(shè)計模型計算機(jī)電路,并下載編程芯片為定制的簡單模型 cpu;(3) 在實驗系統(tǒng)上連接輸入按鍵和輸出顯示為輸出的模型計算機(jī)系統(tǒng)。 1.2 設(shè)計要求 (1) 深入理解基本模型計算機(jī)的功能和組成知識; (2)深入學(xué)習(xí)計算機(jī)各類典型指令的執(zhí)行流程 (3)學(xué)習(xí)微程序控制器的設(shè)計過程和相關(guān)技術(shù),掌握lpm_rom的配置方法; (4)掌握微程序的設(shè)計方法,學(xué)會編寫二進(jìn)制微指令代碼表; (5)在掌握部件單元電路實驗的基礎(chǔ)上,進(jìn)一步將單元電路組成系統(tǒng),構(gòu)造一 臺基本模型計算機(jī)。 第二章 系統(tǒng)組成及工作原理2.1系統(tǒng)組成 模型機(jī)主要由算術(shù)邏輯運(yùn)算單元alu, 數(shù)據(jù)暫存寄存器dr0、dr1

10、, 數(shù)據(jù)寄存器r0 r2, 程序計數(shù)器pc, 地址寄存器ar, 程序/數(shù)據(jù)存儲器ram, 指令寄存器ir, 微控制器,輸入單元input和輸出單元output 所組成。如其功能模塊框圖2-1 所示。圖中虛線框內(nèi)部分包括運(yùn)算器、控制器、程序存儲器、數(shù)據(jù)存儲器和微程序存儲器等,實測時,它們都可以在單片fpga 中實現(xiàn)。虛線框外部分主要是輸入/輸出裝置,包括鍵盤、數(shù)碼管、lcd 顯示器等,用于向cpu 輸入數(shù)據(jù),或cpu 向外輸出數(shù)據(jù),以及觀察cpu 內(nèi)部工作情況及運(yùn)算結(jié)果。 圖2-1模型機(jī)通路框圖 2.2工作原理本模型能在微過程控制下自動產(chǎn)生各部件單元控制信號,實現(xiàn)特定的功能。模型中,計算機(jī)數(shù)據(jù)通

11、路的控制將由微過程控制器來完成,cpu 從內(nèi)存中取出一條機(jī)器指令到指令執(zhí)行結(jié)束的一個指令周期,全部由微指令組成的序列來完成,即一條機(jī)器指令對應(yīng)一個微程序。(1) 指令系統(tǒng)。本實驗采用五條機(jī)器指令。指令編碼如下表: 表2.1 指令編碼助記符操作碼addr地址碼功能描述in00h“input”r0,鍵盤輸入數(shù)據(jù)add addr10hxxhr0+addr r0sta addr20hxxhr0addrout addr30hxxhbus“output”,顯示輸出數(shù)據(jù)jmp addr40hxxhaddrpc指令分單字節(jié)和雙字節(jié),單字節(jié)指令只有in一條,其余都是雙字節(jié)指令。指令各式如表2.2和表2.3。表2

12、.2 單字節(jié)指令格式7 6 5 43 21 0操作碼源寄存器目的寄存器 表2.3 雙字節(jié)指令格式7 6 5 4 3 2 1 07 6 5 4 3 2 1 0操作碼操作數(shù)(內(nèi)存地址碼)源和目的寄存器可以是三個工作寄存器之一,寄存器標(biāo)號r0為00,r1為01,r2為10。為了在試驗臺上用鍵盤輸入程序和數(shù)據(jù)到內(nèi)存,以及通過液晶屏顯示輸出,設(shè)計了3個控制臺操作命令,通過按鍵swb 和swa組合實現(xiàn)(括號中是swb,swa的鍵值): 1.存儲器讀操作(krd):下載實驗程序后按總清除按鍵(clr)后,控制臺swa、swb為“0 0”時,可對ram連續(xù)手動讀入操作。2.存儲器寫操作(kwe):下載實驗程序

13、后按總清除按鍵(clr)后,控制臺swa、swb為“0 1”時,可對ram連續(xù)手動寫操作。3.啟動程序(rp):下載實驗程序后按總清除按鍵(clr)后,控制臺swa、swb為“1 1”時,即可轉(zhuǎn)入到微地址“01”號“取指令”微指令,啟動程序運(yùn)行。(2)模型計算機(jī)硬件模型機(jī)硬件有以下部分組成:運(yùn)算器:采用8位運(yùn)算器alu181,實現(xiàn)算術(shù)邏輯運(yùn)算。該電路的兩個操作數(shù)輸入端設(shè)置兩個寄存器dr0和dr1。程序計數(shù)器pc:用來指示執(zhí)行指令的地址,以便從內(nèi)存取得指令。地址寄存器ar:存放并輸出訪問內(nèi)存單元的地址。指令寄存器ir:鎖存取得的指令,供控制電路解碼分析執(zhí)行。此外,還提供了3個工作寄存器r0,r1

14、和r2。存放可編程程序和數(shù)據(jù)的存儲器ram也在芯片上實現(xiàn)(像單片機(jī)一樣)。各個功能模塊通過總線連接。控制器采用微程序設(shè)計。整個模型機(jī)各功能部件的工作及通路連接的微操作代碼如表2.4和表2.5所示。采用字寬24位的rom存放微程序,3個3-8譯碼器組成24位輸出譯碼電路。表2.4 24位微代碼定義24232221201918171615 14 1312 11 109 8 7654321s3s2s1s0mcnwea9a8a字段b字段c字段ua5ua4ua3ua2ua1ua0操作控制信號譯碼器下址字段表2.5微指令譯碼字段說明a字段b字段c字段151413選擇121110選擇987選擇0000000

15、00001ldri001rs_b001p(1)010ldr1010rd_b010p(2)011ldr2011rj_b011p(3)100ldir100sft_b100p(4)101load101alu_b101ldar110ldar110pc_b110ldpc24位微代碼信號的功能解釋如下: s3-s1,alu的操作選擇信號,控制執(zhí)行16種算術(shù)邏輯操作之一種; m,alu操作方式選擇,等于o為算術(shù)操作,等于1時執(zhí)行邏輯操作; cn ,進(jìn)位標(biāo)志,等于0時,最低位有進(jìn)位輸入,等于1表示無進(jìn)位; we,控制ram的讀寫信號,0值為讀,1值為寫; a9,a8,經(jīng)譯碼產(chǎn)生鍵盤sw_b,存儲器ram,輸出

16、顯示led通路選擇信號; a字段, 經(jīng)譯碼產(chǎn)生各部件從總線輸入選通信號,參考表2.5; b字段, 經(jīng)譯碼產(chǎn)生各部件到總線輸出選通信號,參考表2.5; c字段, 經(jīng)譯碼產(chǎn)生測試轉(zhuǎn)移p1p4,裝入程序計數(shù)器ldpc,參考表3-18; a5a0,微程序地址信號(3) 微程序設(shè)計 微程序的設(shè)計是根據(jù)運(yùn)行指令微程序流程圖設(shè)計出來的,因此在設(shè)計微程序時,必須先畫好運(yùn)行指令微程序流程圖,該模型機(jī)的微指令程序流程圖如圖2-2所示。 圖2-2微程序流程圖 1. in 指令 根據(jù)pc里面的地址將其存放到地址寄存器中,然后根據(jù)地址寄存器中的地址找到ram中的對應(yīng)存儲單元將第一條指令的in取出放到指令寄存器中,然后譯

17、碼,經(jīng)地址轉(zhuǎn)移邏輯在rom中找到對應(yīng)微指令的入口地址開始執(zhí)行,將sw輸入的值送入r0中。 2. add 指令 在執(zhí)行上一條指令in時pc里面的值已經(jīng)加一,此時pc中的值已經(jīng)是ram中add 指令的操作碼的地址了,在將pc里面的值送到地址寄存器時,pc的值也隨之加一,指向了add指令的地址碼,根據(jù)地址碼,將對應(yīng)存儲空間的數(shù)據(jù)放入到dr2中,將第一條指令的中輸入到r0中的數(shù)據(jù)放到dr1中,兩個數(shù)相加放到r0中。3. sta 指令 pc->ar:將pc里的值放入到地址寄存器ar中, pc+1:計數(shù)器的值加一,指向這條指令的地址碼, pc->ar:將pc里的值放入到地址寄存器中, pc+1

18、:計數(shù)器中的值是指向下一條指令的操作碼。 ram->bus :將sta的地址碼放到總線上, bus->ar:將sta的地址碼放到地址寄存器上, r0->bus:將r0中的數(shù)據(jù)放到總線上, bus->ram:將bus上的數(shù)據(jù)放到地址寄存器的對應(yīng)的存儲單元中。 4. out 指令 根據(jù)pc里面的數(shù)值將out指令的操作碼取出放入到指令寄存器,pc+1,又根據(jù)pc里的內(nèi)容取出指令的地址碼,根據(jù)地址碼,取出對應(yīng)存儲單元的數(shù)據(jù)通過總線,放到dr1中,最后輸出到顯示屏上。 5. jmp 指令無條件轉(zhuǎn)移指令jmp,以緊跟在操作碼后的字節(jié)的內(nèi)容作為轉(zhuǎn)移地址。將該字節(jié)的內(nèi)容送給程序計數(shù)器p

19、c,實現(xiàn)程序的轉(zhuǎn)移:arpc,pcpc+1 ;以pc 的內(nèi)容作為取數(shù)據(jù)的地址busram,pcbus ;將ram 內(nèi)容送pc,實現(xiàn)程序轉(zhuǎn)移將每一條指令的微操作編輯在一起,就得到全部指令的微程序流程圖,如圖2-2所示。 第三章 系統(tǒng)設(shè)計3.1 cpu 頂層設(shè)計 根據(jù)圖2-1將各個部件設(shè)計出來,然后進(jìn)行仿真,仿真成功之后,將各個部件通過總線連接起來,完成頂層的設(shè)計。 算術(shù)邏輯單元alu 是alu181,其運(yùn)算功能與74ls181 類似,但用vhdl 語言編寫,是一個8 位的運(yùn)算器。,其代碼如下library ieee;use ieee.std_logic_1164.all;use ieee.std

20、_logic_unsigned.all; entity alu181 is port ( s : in std_logic_vector(3 downto 0 ); a : in std_logic_vector(7 downto 0); b : in std_logic_vector(7 downto 0); f : out std_logic_vector(7 downto 0); cout : out std_logic_vector(3 downto 0); m : in std_logic; cn : in std_logic; co : out std_logic; fz : ou

21、t std_logic );end alu181;architecture behav of alu181 issignal a9 : std_logic_vector(8 downto 0);signal b9 : std_logic_vector(8 downto 0);signal f9 : std_logic_vector(8 downto 0);begin a9 <= '0' & a ; b9 <= '0' & b ; process(m,cn,a9,b9,s) begin case s is when "0000

22、" => if m='0' then f9<=a9 + cn ; else f9<=not a9; end if; when "0001" => if m='0' then f9<=(a9 or b9) + cn ; else f9<=not(a9 or b9); end if; when "0010" => if m='0' then f9<=(a9 or (not b9)+ cn ; else f9<=(not a9) and b9; en

23、d if; when "0011" => if m='0' then f9<= "000000000" - cn ; else f9<="000000000" end if; when "0100" => if m='0' then f9<=a9+(a9 and not b9)+ cn ; else f9<=not (a9 and b9); end if; when "0101" => if m='0' t

24、hen f9<=(a9 or b9)+(a9 and not b9)+cn ; else f9<=not b9; end if; when "0110" => if m='0' then f9<=a9 -b9 - cn ; else f9<=a9 xor b9; end if; when "0111" => if m='0' then f9<=(a9 and (not b9) - cn ; else f9<=a9 and (not b9); end if; when &quo

25、t;1000" => if m='0' then f9<=a9 + (a9 and b9)+cn ; else f9<=(not a9) or b9; end if; when "1001" => if m='0' then f9<=a9 + b9 + cn ; else f9<=not(a9 xor b9); end if; when "1010" => if m='0' then f9<=(a9 or (not b9)+(a9 and b9)+c

26、n ; else f9<=b9; end if; when "1011" => if m='0' then f9<=(a9 and b9)- cn ; else f9<=a9 and b9; end if; when "1100" => if m='0' then f9<=a9 + a9 + cn ; else f9<= "000000001" end if; when "1101" => if m='0' then f

27、9<=(a9 or b9) + a9 + cn ; else f9<=a9 or (not b9); end if; when "1110" => if m='0' then f9<=(a9 or(not b9) +a9 + cn ; else f9<=a9 or b9; end if; when "1111" => if m='0' then f9<=a9 -cn ; else f9<=a9 ; end if; when others => f9<= "

28、;000000000" ; end case; if (a9=b9) then fz <= '0' ; else fz <= '1' end if; end process; f<= f9(7 downto 0) ; co <= f9(8) ;cout <= "0000" when f9(8) = '0' else "0001" ;end behav;alu 的兩個8 位數(shù)據(jù)輸入端的數(shù)據(jù)暫存器dr1 和dr2,則用lpm 模塊數(shù)據(jù)鎖存器lpm_latch 構(gòu)成,為al

29、u 提供運(yùn)算數(shù)據(jù)。程序存儲器和數(shù)據(jù)存儲器 程序存儲器和數(shù)據(jù)存儲器共用一個存儲器ram。用lpm_ram_dq 模塊來實現(xiàn)。數(shù)據(jù)線為8 位,地址線也為8 位。存儲器的數(shù)據(jù)輸入端直接與內(nèi)部總線相連,數(shù)據(jù)輸出端通過三態(tài)緩沖器與內(nèi)部總線相連,地址總線h和地址寄存器ar連接。采用鎖存器結(jié)構(gòu),調(diào)用lpm_latch 實現(xiàn)。程序計數(shù)器pc 用了lpm 可預(yù)置計數(shù)器實現(xiàn)。rst為復(fù)位端,高電平pc 清零,低電平計數(shù)器工作,clk 為計數(shù)時鐘。load為數(shù)據(jù)預(yù)置加載控制端,load 為低電平時,計數(shù)器正常計數(shù);load 端為高電平時,向計數(shù)器加載數(shù)據(jù)。數(shù)據(jù)輸入端d7.0直接與內(nèi)部總線連接,數(shù)據(jù)輸出端q7.0 通

30、過三態(tài)緩沖器與內(nèi)部總線相連。指令寄存器ir 和輸出鎖存器也都采用lpm_latch 模塊。微指令譯碼器decoder_a、decoder_b、decoder_c 內(nèi)部都采用3-8 譯碼器結(jié)構(gòu)。其作用是對24 位微指令中的a、b、c 字段進(jìn)行指令譯碼。a 字段譯碼后輸出的信號主要用于控制向寄存器或鎖存器輸入數(shù)據(jù);b 字段譯碼后輸出的信號主要用于控制運(yùn)算器、寄存器或鎖存器,并通過三態(tài)門向內(nèi)部數(shù)據(jù)總線輸出數(shù)據(jù);c 字段譯碼后輸出的信號主要用于指令分支判斷。時序控制電路 用于產(chǎn)生程序運(yùn)行時所需的時鐘節(jié)拍。 3.2 取指令和指令譯碼1. 取指令階段 (1)將程序計數(shù)器(pc)中的內(nèi)容通過總線送至存儲器地

31、址寄存器(ar),(2)pc 的內(nèi)容遞增,為取下一條指令做好準(zhǔn)備。(3)由控制單元(cu)經(jīng)控制總線(cb)向存儲器發(fā)讀命令。(4)根據(jù)地址寄存器中的地址將對應(yīng)存儲空間的指令取出通過總線放到指令寄存器中。2. 分析取數(shù)階段(5)指令寄存器(ir)中的內(nèi)容送指令譯碼器(id)進(jìn)行指令譯碼。(6)指令譯碼器(id)的內(nèi)容送操作控制器。(7)操作控制器產(chǎn)生執(zhí)行指令的微控制。3. 執(zhí)行階段執(zhí)行指令階段完成指令規(guī)定的各種操作。執(zhí)行階段完成任務(wù)的時間稱為執(zhí)行周期。計算機(jī)的基本操作過程就是取指令、取操作數(shù)、執(zhí)行指令,然后再取下一條指令如此周而復(fù)始,直至遇到停機(jī)指令或外來的干預(yù)為止。3.3 設(shè)計微代碼表微指令

32、代碼的設(shè)計方法是,首先設(shè)計微代碼空表,然后逐項確定其中的內(nèi)容。步驟如下:(1)填寫微地址。從00 開始,按順序依次填寫表中的第一列微地址。(2)確定下地址ua5ua0。根據(jù)微指令流程圖中設(shè)定的微地址,將每一條微指令的下一條微指令的微地址填入該微指令的ua5ua0 欄內(nèi)。(3)確定操作控制信號。根據(jù)表2.4和表2.5 中規(guī)定的24 位微代碼的定義,確定每一條微指令的操作控制信號字段和a、b、c 譯碼字段,將控制信號的編碼填入表中對應(yīng)欄內(nèi)。(4)確定微指令碼。將已確定的24 位微代碼轉(zhuǎn)換成十六進(jìn)制形式,寫入表中第二列微指令欄內(nèi),并將其標(biāo)注在微程序流程圖每一個微操作框的右上角。這樣就得到了如圖3-1

33、 所示完整的微程序流程圖和表3.1 所示的微代碼表。根據(jù)微代碼表,將微指令碼寫成存儲器初始化文件(.mif),并將其放在lpm_rom中后,就能在該cpu 的指令系統(tǒng)范圍內(nèi)設(shè)計各種應(yīng)用程序。例如,此cpu 設(shè)定的指令系統(tǒng)共由五條指令組成,那么應(yīng)用程序可以由這五條指令中的任何幾條指令組成。 圖3-1 運(yùn)行指令微程序流程圖 表3.1 微代碼表微地址微指令s3 s2 s1 s0 m cn we a9 a8 abca5a0000181100 0 0 0 0 0 0 1 10000001000100000101ed820 0 0 0 0 0 0 1 11101101100000100200c0480 0

34、 0 0 0 0 0 0 11000000010010000300e0040 0 0 0 0 0 0 0 11100000000001000400b0050 0 0 0 0 0 0 0 10110000000001010501a2060 0 0 0 0 0 0 1 101000100000011006919a011 0 0 1 0 0 0 1 10011010000000010700e00d0 0 0 0 0 0 0 0 1110000000001101100010010 0 0 0 0 0 0 0 00010000000000011101ed830 0 0 0 0 0 0 1 1110110

35、1100000111201ed870 0 0 0 0 0 0 1 11101101100001111301ed8e0 0 0 0 0 0 0 1 11101101100011101401ed960 0 0 0 0 0 0 1 1110110110010110150382010 0 0 0 0 0 0 1 10000010000000011600e00f0 0 0 0 0 0 0 0 11100000000011111700a0150 0 0 0 0 0 0 0 10100000000101012001ed920 0 0 0 0 0 0 1 11101101100100102101ed940 0

36、 0 0 0 0 0 1 11101101100101002201a0100 0 0 0 0 0 0 1 1010000000010000230180010 0 0 0 0 0 0 1 1000000000000001240620110 0 0 0 0 1 1 0 001000000001000125010a010 0 0 0 0 0 0 1 00001010000000012600d1810 0 0 0 0 0 0 0 11010001100000013.4控制執(zhí)行單元如圖3-2所示,微程序控制器主要由控制存儲器rom、微指令寄存器uir 和微指令地址形成部件uar 三部分組成??刂拼鎯ζ饔?/p>

37、于存放指令系統(tǒng)所對應(yīng)的全部微程序微指令寄存器ir 用來存放從控制存儲器讀出的一條微指令的信息微指令地址形成部件又稱微指令地址發(fā)生器,用來形成將要執(zhí)行的下一條微指令的地址,簡稱微地址。 圖3-2 控制器 第四章 系統(tǒng)調(diào)試和分析4.1 模型機(jī)的軟件執(zhí)行 表4.1 機(jī)器指令試驗程序存儲器地址內(nèi)容助記符說明00h00hin“input”r0,鍵盤輸入數(shù)據(jù)01h10hadd0ahr0+0ahr002h0ah03h20hsta0bhr00bh04h0bh05h30houtobh0bh“output”,顯示輸出數(shù)據(jù)06h0bh09hpc,以08h內(nèi)容為轉(zhuǎn)移地址07h40h jmp08h08h00h 09h0

38、0h 0ah34hdb 34h被加數(shù)0bhxxh求和結(jié)果表4.1 中的第一條指令in 是一條輸入指令。它需要兩個cpu 周期,其中取指令階段需要一個cpu 周期,執(zhí)行指令階段需要一個cpu 周期。(1)取指令階段cpu 的動作如下: 指令程序計數(shù)器pc 的內(nèi)容00h 裝入地址寄存器ar。 pc 的內(nèi)容加1,變成01h,為取下一條指令做好準(zhǔn)備。 地址寄存器ar 指向內(nèi)存00h 單元,取出此單元中的內(nèi)容“00h”,傳送到數(shù)據(jù)總線。 00h 單元的內(nèi)容00h 傳送到寄存器ir。 ir 中的內(nèi)容送到指令譯碼器id 進(jìn)行譯碼。 譯碼結(jié)果送操作控制器(時序發(fā)生器)。 操作控制器識別出是一個輸入指令,于是輸

39、出控制命令。取指令階段結(jié)束。(2)執(zhí)行指令階段cpu 的動作如下: 操作控制器送出控制信號給輸入單元,打開輸入三態(tài)門,輸入數(shù)據(jù)送到數(shù)據(jù)總線。 將輸入的數(shù)據(jù)送數(shù)據(jù)寄存器r0。至此,in 指令執(zhí)行完畢。4.2 模型cpu 的硬件仿真在在硬件上進(jìn)行測試時,首先要進(jìn)行波形仿真,在仿真的過程中可以發(fā)現(xiàn)存在的問題,及時的進(jìn)行解決,這樣可以減少在實際的硬件測試時的麻煩。給各個輸入的信號適合的激勵波形,然后開始啟動仿真。仿真波形如下: 圖 4-1仿真波形 (1) 按 1 次系統(tǒng)復(fù)位鍵 8,并置鍵 8 為高電平,使 cpu 允許正常工作; (2)控制開關(guān)(鍵4、鍵3)設(shè)置為swb、swa=1,1,處于程序執(zhí)行方

40、式, 控制臺:rp (11) ; (3)通過鍵2、鍵1 輸入運(yùn)算數(shù)據(jù),如56h, (4)然后每按鍵7兩次產(chǎn)生一個step單步脈沖,跟蹤機(jī)器指令和微指令程序的執(zhí)行。執(zhí)行軌跡如表所示。 表4.2機(jī)器指令試驗程序執(zhí)行情況 stepmcpcirua0101811000230201800100010301ed820102第一次取指 pc_b、ldar、ldpc(pc+1)、取指令的操作碼0400c048010010ldir將指令送入指令寄存器05001001010001鍵3,鍵4的值被輸入r00601ed82020002第二次取指 pc_b、ldar、ldpc(pc+1)0700c048021011ld

41、ir將指令送入指令寄存器0801ed83031003和指令00ed82的功能一樣不過這次去的是指令的地址碼 取第二條指令的地址碼0900e004031004ldar 將指令的操作嗎放入地址寄存器1000b005031005內(nèi)存0ah的值被輸入dr21101a206031006r0的值被輸入dr112919a01031001dr1+dr2的值被輸入r01301ed82041002第三次取指 pc_b、ldar、ldpc(pc+1)、取指令的操作碼1400c048042012ldir將指令送入指令寄存器1501ed87052007取第三條指令的地址碼 1600e00d052015將取出的地址碼放入

42、地址存儲器17038201052001根據(jù)地址寄存器的地址 內(nèi)存0bh位置出現(xiàn)加法和8ah1801ed82062002第四次取指令的操作碼1900c048063013將取出的指令的操作碼放入指令寄存器2001ed8e073016第四次取指令的地址碼2100e00f073017將取出的地址碼放入地址存儲器2200a015073025根據(jù)地址寄存器的地址將ram中的內(nèi)容取出放到dr1中23010a01073001打開alu_b將數(shù)據(jù)送到總線,并打開led_b輸出到顯示器2401ed82083002第五次取指令的操作碼2500c048084014將取出的指令的操作碼放入指令寄存器2601ed9609

43、4026第五次取指令的地址碼2700d1810001ldad將計數(shù)器的值改為00 使用quartus的in-system memory content editor了解cpu運(yùn)行情況。實驗系統(tǒng)控制選擇同上。利用quartus的in-system memory content editor,將載于fpga中cpu內(nèi)ram/rom的數(shù)據(jù)讀出。方法是從菜單選擇tool|in-system memory content editor,即可進(jìn)入在系統(tǒng)存儲器讀寫 圖4-2對fpga中的rom和ram進(jìn)行觀察和改寫 第五章 總結(jié) 本次課程設(shè)計的題目是設(shè)計八位模型機(jī),能夠執(zhí)行五條指令,在經(jīng)過兩周和小組成員的思考和討論終于將其設(shè)計出來,并成功在gw48 c+平臺上實現(xiàn)。當(dāng)我看到這次課程設(shè)計的題目時,從心里就有一種無法預(yù)知自己能否做出來的感覺,于是在拿到題目后,便把實驗指導(dǎo)書認(rèn)真仔細(xì)的看了好幾遍,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論