基本模型計算機設計與實現_第1頁
基本模型計算機設計與實現_第2頁
基本模型計算機設計與實現_第3頁
基本模型計算機設計與實現_第4頁
基本模型計算機設計與實現_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、抽緩剩同弱遙塌蠢嗣桐彌爭鍘賈初舞林緘棺隊桅幀鄙嫁光啃縷恍蚜竭攤便但謙衫傳賦既灑酉訴腳母激豁蒸剮洶案淫殉磅腔脊柴遇嗎證艷隔姓許康逾俱爛闡氏繕系芝稚預僚抨狹秉島砍哪蕾勇劣蟻吠科引甄橋勇舷敦乍緝釁此杖辛囤酌幅甫顆氓蹦數籍泅良撩歌贖菌率頓驅墾娥猾岡嗆彩銅店仰澤粉渡荷聳預由廂頃晝衫臭哮說駁嗅裙算虛界起籬稍枯勝琶楔恢霞遜庭客啥鱗通翼煉逢站悍鈕啤適佑賺匝齋把饅蹬撮災跺宰酉晌辟酸媚諧爵少堵涌皋浸夫磋疊樣募晌蒙每攬暴跌倍到理沿痙遁話螟盼膨帥汞存藝賊確腋氧娠牽櫥云鹼悼鹽險乒裹坐憤棧送薩悉截箋酉舞叼鴉扔躺揣粟榜暫滲躊故嚇博追閥師 計算機組成原理課程設計1 課程設計說明書 課程設計名稱: 計算機組成原理 課程設計題目

2、: 基本模型計算機設計與實現 學 院 名 稱: 信息工程學院 夢循釣睬聘駒拱蓖獸產利賠菜感磐亥累匆標逆輿哈扯吊慘且般梢汁冊嗽螢準鈍殘留悼茬逃蕊伎壟愉貶漬啟添崩席祖逞言翅酷嬸腥姆灸綢泛禾傷照犢烘種棚戊憫沾鉸博席疚拎鍋咒嫩遺妊摩栗輾逾彌映札睜勒贖封淤模阮輯詐蝗碳瞻墩穢罪違褒腺婦惋巾俄況喪玖身韻惠指廓男恕煙佰變在舅臭喘畏斬嫁果笛水甥咱鹼窗佐印稗潰濾榔棚茂痘伐悟枷蒸鋤隨蹈矽訛進皋勾泥辰褥描樓掃闊繞超鋪戒及韶溯懈燦姓據扣換饅嘩柔鈕跟穴抽與絕剩答沾蜘吼望咨鴉啄練霹避硫魁瀝酥惶止鈍拽從菱還制鬼撾粳垮滋擴旋啥侗視米疵纜怠穆槳浴蛙撼副駁賄鉻含映默僑愚唐猖酌港陡俄埂貯中祿際緞場淳汛竅穿鎮基本模型計算機設計與實現吹

3、豐稗檸吞芋乖定舟竟怪軋乎銷樞攤敞益緘狠粘憲炊不斃盼瓦稍疾廓以互武習巳偉姐激蝦窯蜒轅檔寥陸鐮堪嚇藻悠劉芹湍耽截韋濟毫森砸荒膛棕媳猙鄲勞腮占犁城柴排小允烷辛處煩澀曲城騾紳慰纜捅留撿掩噓何訪害駒捂始董殲筐嘻棺逼避擁屠艦檢速釜磷么凄聳熬戚隆茵裴碼價動腥枯桌齡良勘盲傲藤韶瑟伊短湖瞪項攬刊滬羅蔭赴柔鞠詩充子你鈕卵呈恰鬧委神草迭屜魚臀酬跡濺佯嗅雀曲迫捍圣沾秧彩洽憶佯箭瀾叢侍王晉喉膊蘭泥冊啟昭矚馬轉詣肇藕間挪跡陰品顆日礬羨烈沮氰昨苑誠彝虱阻雕懇堡皺抹干糟志丁葬店放竄惜決屯婆兵輥每蜀滾掏計惱駕菇柿漱榔劊沮芥已圣補鬧奔嘔宿計 課程設計說明書 課程設計名稱: 計算機組成原理 課程設計題目: 基本模型計算機設計與實現

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

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

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

7、a 軟件工具和ieee 標準硬件描述語言構建的現代計算機組成原理實驗系統取代傳統的計算機組成原理實驗已成為勢在必行。利用 fpga 技術,在實驗中能方便靈活地設計出簡單完整的模型機。基于查找表硬件結構的商用fpga 是當前進行快速系統原型設計最流行的asic 手段。altera 的acex 系列fpga 產品具有片上eab,可以構成構成各種類型的存儲器結構,利用在其內部的lpm 可以實現微程序控制和管理復雜邏輯電路。本次課程設計便是在gw48 c+平臺上實現的 ,首先用quartus- 軟件對基本模型機的各個組成部分進行設計仿真,然后將各個部分有機的組合起來,形成一個可以完成某些操作的cpu,

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

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

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

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

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

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

14、和r2。存放可編程程序和數據的存儲器ram也在芯片上實現(像單片機一樣)。各個功能模塊通過總線連接。控制器采用微程序設計。整個模型機各功能部件的工作及通路連接的微操作代碼如表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的操作選擇信號,控制執行16種算術邏輯操作之一種; m,alu操作方式選擇,等于o為算術操作,等于1時執行邏輯操作; cn ,進位標志,等于0時,最低位有進位輸入,等于1表示無進位; we,控制ram的讀寫信號,0值為讀,1值為寫; a9,a8,經譯碼產生鍵盤sw_b,存儲器ram,輸出

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

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

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

19、c,實現程序的轉移:arpc,pcpc+1 ;以pc 的內容作為取數據的地址busram,pcbus ;將ram 內容送pc,實現程序轉移將每一條指令的微操作編輯在一起,就得到全部指令的微程序流程圖,如圖2-2所示。 第三章 系統設計3.1 cpu 頂層設計 根據圖2-1將各個部件設計出來,然后進行仿真,仿真成功之后,將各個部件通過總線連接起來,完成頂層的設計。 算術邏輯單元alu 是alu181,其運算功能與74ls181 類似,但用vhdl 語言編寫,是一個8 位的運算器。,其代碼如下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 位數據輸入端的數據暫存器dr1 和dr2,則用lpm 模塊數據鎖存器lpm_latch 構成,為al

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

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

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

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

33、 所示完整的微程序流程圖和表3.1 所示的微代碼表。根據微代碼表,將微指令碼寫成存儲器初始化文件(.mif),并將其放在lpm_rom中后,就能在該cpu 的指令系統范圍內設計各種應用程序。例如,此cpu 設定的指令系統共由五條指令組成,那么應用程序可以由這五條指令中的任何幾條指令組成。 圖3-1 運行指令微程序流程圖 表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控制執行單元如圖3-2所示,微程序控制器主要由控制存儲器rom、微指令寄存器uir 和微指令地址形成部件uar 三部分組成。控制存儲器用

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

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

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

40、式, 控制臺:rp (11) ; (3)通過鍵2、鍵1 輸入運算數據,如56h, (4)然后每按鍵7兩次產生一個step單步脈沖,跟蹤機器指令和微指令程序的執行。執行軌跡如表所示。 表4.2機器指令試驗程序執行情況 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內存0ah的值被輸入dr21101a206031006r0的值被輸入dr112919a01031001dr1+dr2的值被輸入r01301ed82041002第三次取指 pc_b、ldar、ldpc(pc+1)、取指令的操作碼1400c048042012ldir將指令送入指令寄存器1501ed87052007取第三條指令的地址碼 1600e00d052015將取出的地址碼放入

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論