硬連線控制器設計.doc_第1頁
硬連線控制器設計.doc_第2頁
硬連線控制器設計.doc_第3頁
硬連線控制器設計.doc_第4頁
硬連線控制器設計.doc_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

模型機硬連線控制器設計一、 實驗目的(1) 融會貫通計算機組成原理與體系結構課程各章教學內容,通過知識的綜合運用,加深對CPU個模塊工作原理及相互聯系的認識;(2) 掌握硬連線控制器的設計方法;(3) 培養科學研究能力,取得設計和調試的實踐經驗。二、 實驗設備(1) TEC-8實驗系統 1臺(2) Pentium 3 以上的PC 1臺(3) 雙蹤示波器 1臺(4) 直流萬用表 1塊(5) 邏輯測試筆(在TEC-8實驗臺上) 1支三、 設計與調試任務(1)設計一個硬連線控制器,和TEC-8模型計算機的數據通路結合在一起,構成一個完整的CPU,對該CPU要求:l 能顧完成控制臺操作,包括啟動程序運行、讀存儲器、寫存儲器、讀寄存器、寫寄存器。l 能夠執行表3.1中的指令,完成規定的指令功能。表3.1中,XX代表任意值,Rs代表源寄存器號,Rs代表目的寄存器號。在條件轉移指令中,代表當前PC的值,offset是一個四位的有符號數,第三位是符號位,0代表正數,1代表負數。注意:不是當前指令的PC值,而是當前指令的PC值加1。表Error! No text of specified style in document.1新設計CPU的指令系統名 稱助 記 符功 能指 令 格 式IR7 IR6 IR5 IR4IR3 IR2IR1 IR0加法ADD Rd, RsRd Rd + Rs0001RdRs減法SUB Rd, RsRd Rd - Rs0010RdRs邏輯與AND Rd, RsRd Rd and Rs0011RdRs加1INC Rd Rd Rd + 10100RdXX取數LD Rd, RsRd Rs0101RdRs存數ST Rs, RdRs Rd0110RdRsC條件轉移JC offset若C=1,則PC + offset0111offsetZ條件轉移JZ offset若Z=1,則PC + offset1000offset無條件轉移JMP RdPC Rd1001RdXX輸出OUT RsDBUS Rs1010XXRs停機STP暫停運行1110XXXXl 在Quartus|下對硬連線控制器進行編程的編譯。l 將編譯后的硬連線控制器下載到TEC-8實驗臺的可編程器件EPM7128S中去,使得EPM7128S成為一個硬連線控制器。l 根據指令系統,編寫檢測硬連線控制器正確性的測試程序,并用測試程序對硬連線控制器在單微指令方式下進行調試,直到成功。(2)在調試成功的基礎上,整理出設計文件。1.硬連線控制器邏輯模塊圖;2.硬連線控制器指令周期流程圖;3.硬連線控制器的硬件描述語言源程序;4.測試程序;5.設計說明書;6.調試總結。四、硬連線控制器邏輯模塊圖 本實驗要求設計硬連線控制器,而仍然利用實驗臺的數據通路和其他模塊。因此我們只需對硬連線控制器部分進行編程就行了。TEC-8模型計算機電路框圖如下圖1。圖1 TEC-8模型計算機電路框圖從電路框圖中可知,硬連線控制器與微程序控制器不同,其產生的控制信號除了受譯碼器輸出信號SWCSWA、IR7IR4,節拍電位信號T1T3,狀態條件信號Z、C,以及CLR#的控制外,還受時序發生器產生的節拍脈沖信號W3W1的控制。硬連線控制器的邏輯模塊圖為:圖2 硬連線控制器的邏輯模塊圖五、硬連線控制器指令周期流程圖與微程序控制器不同,硬連線控制器以節拍電位W3W1為時間單位。其指令周期流程圖為:圖3硬連線控制器參考流程圖一個執行框代表一個節拍電位時間,TEC-8實驗系統中采用了可變節拍數來執行一條機器指令。從上圖中可知,大部分指令只需要兩個節拍電位W1和W2,少數指令還需要W3。因此當需要W3時在W2時產生一個信號LONG。時序信號發生器收到信號LONG后產生W3。有的操作如寫寄存器需要四個節拍電位,將該操作化成兩條機器指令的節拍,通過信號ST0聯系在一起。還可以只產生W1,通過SHORT信號實現。根據硬連線流程圖還可以得到組合邏輯譯碼表,如下表2:表2 組合邏輯譯碼表IRADDSUBANDINCLDSTJMPOUTSTPJCJZLIRW1W1W1W1W1W1W1W1W1W1W1MW2W2W2/W3W2W2S3W2W2W2W2/W3W2W2S2W2W2W2S1W2W2W2/W3W2W2S0W2W2W2W2CINW2LDCW2W2W2LDZW2W2W2W2DRWW2W2W2W2W3ABUSW2W2W2W2W2W2/W3W2W2LARW2W2PCADDC,W2Z,W2LPCMBUSW3MEMWW3LONGW2W2STOPW2PCINCW1W1W1W1W1W1W1W1W1W1W1根據譯碼表,對以后的編程和錯誤查找有很大的幫助。六、程序編寫過程 利用Verilog語言,在Modelsim環境下進行編程和仿真。剛開始做實驗時心里是茫然的,不知道從哪里開始,無從下手,不知道采用什么方法,加上對Verilog語言的掌握還不夠熟練,因此第一次實驗課幾乎沒有什么進展。后來通過王教員和唐教員的耐心講解和指導,明白了可以用兩種不同的實現方法進行編程,但因為個人覺得利用狀態機的方法進行編程理解起來思路較為簡單,而且邏輯較為清楚,于是決定利用狀態機的方法進行編程。本程序是在唐教員的程序基礎上進行修改的(唐教員的還沒有完成),但在編程過程中還是遇到了很多的問題,比如時序問題等。在同學和教員的幫助下,完成了一部分工作,但程序依然存在著一些問題,結果實驗還是沒有完全做完。把整個控制器分為四個狀態:state0表示初始狀態,對所有的信號進行初始化,表示clear以后的狀態,只有STOP有效;state1表示W1有效時的狀態,具體又可以按照SWCSWA的不同進行不同的賦值與操作;state2表示W2有效時的狀態,再根據SW的不同進行賦值;state3表示W3有效時的狀態。正常情況下一個狀態完成以后進入下一狀態,但有很多情況下是不行的,比如寫存儲器、讀存儲器、寫寄存器等操作。于是需要根據對ST0信號、SHORT信號、LONG信號等進行判別來進行不同狀態之間的轉化。具體為:從state0開始,若sw符合要求(5),進入state1,否則回到state0;state1:若執行程序且ST0=0或讀存儲器或寫存儲器,則下一狀態仍為state1,否則下一狀態為state2;state2:若為執行指令的LD或ST,則下一狀態為state3,若為寫寄存器操作且ST0=0或執行指令但不為LD或ST,則下一狀態為W1,若都不符合,下一狀態為初始狀態state0;state3:直接回到state1;源程序壓縮包:CPU為源程序,其余程序為測試程序,程序名字表示所測試的指令或工作臺模式。七、Modelsim仿真過程程序編譯成功后,開始編寫仿真程序,進行仿真。因為對仿真程序的掌握不是很完善,剛開始我們組就出了很多問題,不是時序的問題就是賦值的問題。感謝同學和教員的耐心指導和幫助。因為篇幅問題,在此僅貼出操作臺操作和部分有代表性的指令的仿真過程,(ADD,AND,LD,JC,JMP,STP)其余仿真代碼在程序包里,因為并沒有燒到芯片里,也沒有真正的實現,所以實際源程序可能還存在著一些問題。(一) 操作臺模式仿真過程1.寫存儲器過程仿真(SW為001)寫存儲器只需要W1,仿真圖如圖4所示:圖4 寫存儲器過程仿真圖2.讀存儲器過程仿真(SW為010)讀存儲器的過程在時序上與寫存儲器類似,都只需W1。仿真圖如圖5所示:圖5讀存儲器過程仿真圖3.讀寄存器過程仿真(SW為011)讀寄存器過程需要W1和W2。圖6 讀寄存器過程仿真圖4.寫寄存器過程仿真(SW為100)寫寄存器過程各需要兩個W1,W2。并用ST0作為時序判定條件圖7 寫寄存器過程仿真圖(二) 指令執行過程仿真1. ADD指令執行過程仿真(SW為000,IR74為0001)SUB與ADD類似。圖8 ADD指令執行仿真圖2. AND指令仿真過程(SW為000,IR74為0011)INC與AND類似。圖9 AND指令執行仿真圖3. LD指令仿真過程(SW為000,IR74為0101)ST與LD類似。圖10 LD指令執行仿真圖4. JC指令仿真過程(SW為000,IR74為1000,此時C=1)JZ與JC類似。圖11 JC指令執行仿真圖5.JMP指令仿真過程(SW為000,IR74為1001)圖12 JMP指令執行仿真圖6.STP指令仿真過程(SW為000,IR74為1110)圖13 STP指令執行仿真圖八、測試程序 測試程序是在源程序編寫完成并仿真成功并燒到芯片里以后用于在模型計算機上完整的測試源程序的。測試程序的編寫過程中,我們組盡可能的利用上所有的指令,使得每條指令都能測試一遍,以便更好的測試性能和正確性,但因為并沒有燒到芯片里,所以測試程序并沒有起到作用。地址指令十六進制機器代碼二進制機器代碼00HLD 53H0101001101HINC 4CH0100110002HSUB 21H0010000103HJZ 0CH8CH1000110004HST 68H0110100005HLD 53H0101001106HINC 4CH0100110007HADD 11H0001000108HJC 0CH7CH0111110009HJMP 9CH100111000AHINC 48H010010000BHSTP0E0H111000000CH08H08H000010000DH15H15H000101010EHFFH0FFH111111110FH01H01H0000000110HAND 31H0011000111HOUT 0A2H1010001012HSTP0E0H11100000九、設計說明書1.源程序的設計利用狀態機的思想,把整個控制器分為四個狀態:state0、state1、state2、state3。不同state表示的狀態為:state0表示初始狀態,對所有的信號進行初始化,表示clear以后的狀態,只有STOP有效;state1表示W1有效時的狀態,具體又可以按照SWCSWA的不同進行不同模式下的賦值與操作;state2表示W2有效時的狀態,再根據SW的不同進行賦值;state3表示W3有效時的狀態,主要是指執行指令LD和ST時才有可能會進入的狀態(其他情況下不需要W3)。定義兩個變量,state和next_state。state表示當前狀態,next_state表示下一狀態。state完成本狀態內的所有操作以后進入next_state,正常情況下next_state就是state加1,但有很多情況下是不行的,比如寫存儲器、讀存儲器、寫寄存器等操作不能直接的加一。于是需要根據對ST0信號、SHORT信號、LONG信號等進行判別來確定下一狀態。具體為:從state0開始,判斷SW,若SW符合要求(值5),進入state1(next_state=state1),否則回到state0(next_state=state0);state1:判斷SW、ST0,若執行程序(SW=000)且ST0=0或讀存儲器(SW=010)或寫存儲器(SW=001),則next_state=state1,否則next_state=state2;state2:判斷SW、IR、ST0,若為執行指令(SW=000)的LD(IR74=0101)或ST(IR74=0110),則next_state=state3,若為寫寄存器操作(SW=100)且ST0=0或執行指令但不為LD或ST,則next_state=W1,若都不符合,next_state=state0;state3:next_state=state1;因此,參考流程圖可知,對于不同的操作模式和指令的狀態轉換為:寫存儲器:state0state1state1讀存儲器:state0state1state1讀寄存器:state0state1state2寫寄存器:state0state1state2state1state2指令:LD/ST:state0state1state1state2state3其他:state0state1state1state22.測試程序的設計源程序完成以后,要進行仿真,因此需要設計測試程序。設計測試程序是為了給出各輸入信號的值,并產生與工作臺模式或指令要求相符的機器周期(如執行LD指令時,依據指令產生的機器周期為W1,W1,W2,W3,W1),觀察仿真波形是否會產生有效的輸出信號。因此,在設計測試程序時,重點和難點便是產生符合源程序執行情況的機器周期。因為測試的目的主要是看源程序在正確的機器周期下,對于不同的模式和指令是否會產生正確的信號, 因此可以把每個工作臺模式和各個指令都寫一個仿真程序進行單獨仿真。十、實驗總結 表面上看,本次實驗僅僅是要我們設計一個CPU的硬連線控制器部分,而實際上卻需要我們綜合運用以往所學的很多關于計算機組成結構方面的知識。這次的實驗讓我真正明白了什么叫大實驗,相比前幾次的實驗。因為實驗的前期準備不充分,使得進展較為緩慢,不知道從何下手,浪費了很多時間。通過教員的講解和指導,并經過組內的討論決定運用狀態機的方法進行編程。因為對Verilog語言的掌握還不夠熟練,所以編程過程中也出現了很多或大或小的問題,比如說賦值的時候是用=還是=(=和=表達的意義是不同的,只有在assign語句中用=,而在其他的賦值語句中一般用=),狀態之間的轉化條件的確定,判斷轉移條件時是用信號判斷(LONG、SHORT等)還是利用操作模式和IR值判斷(我們后來利用SW、IR和ST0判斷)等等。遇到問題,積極的向同學和教員請教,在大家的幫助下,我們也確實解決了很多問題。很感謝教員和其他同學的幫助和耐心講解,幫助我們找到了一些程序上的錯誤,讓我們少走了一些彎路。但在編寫仿真程序時,又遇到了很多障礙,很多概念有點搞不清,比如說剛開始對于知道了T3和W13的關系,卻不明白怎么實現QD和T3,W13之間的協同配合,多虧了教員的仿真程序,看了很多遍以后才慢慢理解了如何實現它。總的來說,沒有在規定的實驗課程安排里完成本次實驗,還是覺得很遺憾,也有一點失落感。因為沒有燒到芯片里,程序中存在的一些問題也沒法找出來,可能依然存在著很多的漏洞和不足。通過這次實驗也讓我對CPU各模塊的工作原理和相互聯系有

溫馨提示

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

評論

0/150

提交評論