北郵計(jì)算機(jī)組成原理課程設(shè)計(jì)_第1頁(yè)
北郵計(jì)算機(jī)組成原理課程設(shè)計(jì)_第2頁(yè)
北郵計(jì)算機(jī)組成原理課程設(shè)計(jì)_第3頁(yè)
北郵計(jì)算機(jī)組成原理課程設(shè)計(jì)_第4頁(yè)
北郵計(jì)算機(jī)組成原理課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

北京郵電大學(xué)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱采用硬布線控制器的順序模型處理器設(shè)計(jì)與調(diào)試學(xué)院計(jì)算機(jī)學(xué)院指導(dǎo)教師戴志濤…班級(jí)班內(nèi)序號(hào)學(xué)號(hào)學(xué)生姓名成績(jī)顏力琦課程設(shè)計(jì)內(nèi)容教學(xué)目的:融會(huì)貫通計(jì)算機(jī)組成原理各章節(jié)內(nèi)容,加深對(duì)CPU各模塊工作原理及相互聯(lián)系的認(rèn)識(shí),掌握硬布線控制器的設(shè)計(jì)方法,學(xué)習(xí)運(yùn)用可編程邏輯技術(shù)進(jìn)行邏輯設(shè)計(jì)和調(diào)試的基本步驟和方法基本內(nèi)容:設(shè)計(jì)一個(gè)硬布線控制器,和TEC-8模型的數(shù)據(jù)通路結(jié)合在一起,構(gòu)成一個(gè)完整的CPU實(shí)驗(yàn)方法:使用VHDL語(yǔ)言編寫(xiě)程序,使用TEC-8實(shí)驗(yàn)臺(tái)調(diào)試程序團(tuán)隊(duì)分工:顏力琦:組長(zhǎng),負(fù)責(zé)程序流程圖、算法設(shè)計(jì)、控制臺(tái)部分代碼的編寫(xiě)、拓展指令編寫(xiě)程序調(diào)試、實(shí)驗(yàn)報(bào)告編寫(xiě)潘自成:負(fù)責(zé)微程序部分代碼的編寫(xiě)、程序調(diào)試、資料收集周卓彬:負(fù)責(zé)控制臺(tái)部分代碼的編寫(xiě)、時(shí)序信號(hào)的控制代碼編寫(xiě)、PC指針代碼編寫(xiě)、程序調(diào)試,實(shí)驗(yàn)報(bào)告編寫(xiě)學(xué)生—課程設(shè)計(jì)報(bào)告(附頁(yè))課程設(shè)計(jì)”成績(jī)?cè)u(píng)定遵照實(shí)踐教學(xué)大綱并根據(jù)以下四方面綜合評(píng)定成績(jī):1、課程設(shè)計(jì)目的任務(wù)明確,選題符合教學(xué)要求,份量及難易程度2、團(tuán)隊(duì)分工是否恰當(dāng)與合理3、綜合運(yùn)用所學(xué)知識(shí),提高分析問(wèn)題、解決問(wèn)題及實(shí)踐動(dòng)手能力的效果4、是否認(rèn)真、獨(dú)立完成屬于自己的課程設(shè)計(jì)內(nèi)容,課程設(shè)計(jì)報(bào)告是否思路清晰、文字通順、書(shū)寫(xiě)規(guī)范評(píng)語(yǔ):成績(jī):指導(dǎo)教師簽名:年月日注:評(píng)語(yǔ)要體現(xiàn)每個(gè)學(xué)生的工作情況,可以加頁(yè)。計(jì)算機(jī)組成原理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告采用硬布線控制器的順序模型處理器設(shè)計(jì)與調(diào)試一、實(shí)驗(yàn)?zāi)康膡(1)融會(huì)貫通計(jì)算機(jī)組成原理各章節(jié)教學(xué)內(nèi)容,通過(guò)知識(shí)的綜合應(yīng)用,加深對(duì)CPU各模塊工作原理及相互聯(lián)系的認(rèn)識(shí),建立清晰的整機(jī)概念。(2)掌握硬布線控制器的設(shè)計(jì)方法。(3)學(xué)習(xí)運(yùn)用可編程邏輯技術(shù)進(jìn)行邏輯設(shè)計(jì)和調(diào)試的基本步驟和方法(4)學(xué)習(xí)運(yùn)用VHDL語(yǔ)言,用編寫(xiě)編譯下載程序到altera芯片運(yùn)行。(5)培養(yǎng)科學(xué)研究的獨(dú)立工作能力,獲得工程設(shè)計(jì)與組裝調(diào)試的實(shí)踐經(jīng)驗(yàn)二、實(shí)驗(yàn)設(shè)備TEC-8實(shí)驗(yàn)系統(tǒng)一臺(tái)|PC計(jì)算機(jī)一臺(tái)邏輯筆一只USB下載器一根三、設(shè)計(jì)與調(diào)試任務(wù)(1)設(shè)計(jì)一個(gè)硬連線控制器,和TEC-8模型計(jì)算機(jī)的數(shù)據(jù)通路結(jié)合在一起,構(gòu)成一個(gè)完整的CPU,該CPU要求:能夠完成控制臺(tái)操作:?jiǎn)?dòng)程序運(yùn)行、讀存儲(chǔ)器、寫(xiě)存儲(chǔ)器、讀寄存器、寫(xiě)寄存器;能夠執(zhí)行表中的指令,完成規(guī)定的操作。(2)在Quarts下對(duì)硬布線控制器設(shè)計(jì)方案進(jìn)行編輯和編譯。(3)將編譯后的硬布線控制器下載到TEC-8實(shí)驗(yàn)臺(tái)上的EPM7128中,使其成為一個(gè)硬布線控制器。《(4)根據(jù)指令系統(tǒng),編寫(xiě)檢測(cè)硬布線控制器正確性的測(cè)試程序,并用測(cè)試程序?qū)τ膊季€控制器在單拍方式下進(jìn)行調(diào)試,直到成功。四、實(shí)驗(yàn)原理(1)硬布線控制器基本原理硬布線控制器是一種把控制部件看作產(chǎn)生專門(mén)固定時(shí)序控制信號(hào)的邏輯電路,這種邏輯電路是一種由門(mén)電路和觸發(fā)器構(gòu)成的復(fù)雜樹(shù)形邏輯網(wǎng)絡(luò)。當(dāng)執(zhí)行不同機(jī)器指令時(shí),通過(guò)激活一系列彼此很不相同的控制信號(hào)來(lái)實(shí)現(xiàn)對(duì)指令的解釋。每個(gè)微操作控制信號(hào)C是一系列輸入量的邏輯函數(shù),即用組合邏輯來(lái)實(shí)現(xiàn)C=f(Im,Mi,Tk,Bj)Im是機(jī)器指令操作碼譯碼器的輸出信號(hào),Mi是節(jié)拍電位信號(hào),Tk是節(jié)拍脈沖信號(hào),Bj表示來(lái)自執(zhí)行部件的反饋信息,是狀態(tài)條件信號(hào)。在TEC-8實(shí)驗(yàn)系統(tǒng)中,節(jié)拍脈沖信號(hào)Tk,(T1~T3)已經(jīng)直接輸送給數(shù)據(jù)通路。4位指令操作碼IR4~IR7直接成為Im的一部分;SWC、SWB、SWA可以看做是Im的另一部分。Mi是時(shí)序發(fā)生器產(chǎn)生的節(jié)拍信號(hào)W1~W3;Bi包括ALU產(chǎn)生的進(jìn)位信號(hào)C、結(jié)果為0信號(hào)Z等。硬布線控制器邏輯模塊圖微操作控制關(guān)微操作控制關(guān)硬布線控制器的某一操作控制信號(hào)C在某條特定指令和狀態(tài)條件下,在某一序號(hào)的特定節(jié)拍電位和節(jié)拍脈沖時(shí)間間隔中起作用,從而激活這條控制信號(hào)線,對(duì)執(zhí)行部件實(shí)施控制。圖中芯片的輸出信號(hào)就是微操作控制信號(hào),它用來(lái)對(duì)執(zhí)行部件進(jìn)行控制。另有一些信號(hào)則根據(jù)條件變量來(lái)改變時(shí)序發(fā)生器的計(jì)數(shù)順序,以便跳過(guò)某些狀態(tài),從而可以縮短指令周期。其中IR7~IR4,SWA,SWB,SWC是機(jī)器指令操作碼譯碼器的輸出信號(hào),W1,W2,W3是節(jié)拍電位信號(hào),T1,T2,T3是節(jié)拍脈沖信號(hào),C,Z是結(jié)果反饋信息,圖中樹(shù)形邏輯網(wǎng)絡(luò)N在接收三個(gè)輸入信號(hào)來(lái)源的信號(hào)后輸出LDZ,LDC,CIN,LIR,SELCTL,STOP等微操作控制信號(hào),用來(lái)對(duì)執(zhí)行部件進(jìn)行控制。TEC-8數(shù)據(jù)通路圖D1BL與SsWD7^5WC—5WA山R坤號(hào)AR—AtoIClti皿-HM.DTR—DOR戍端I」RAMATL-HLAGRJ聘祺葉K-控制位號(hào)切企削l?SEL3—SELQJR—時(shí)叩HI■盜|[心一D1BL與SsWD7^5WC—5WA山R坤號(hào)AR—AtoIClti皿-HM.DTR—DOR戍端I」RAMATL-HLAGRJ聘祺葉K-控制位號(hào)切企削l?SEL3—SELQJR—時(shí)叩HI■盜|[心一心ARABET53堆」槌ILDROLDBi若T節(jié)囑CJ1fa1上,日否尾土JR卜成?一點(diǎn)4CLR:INSTD_LOGIC;--清零信號(hào)T3,W1,W2,W3:INSTD_LOGIC;—時(shí)序信號(hào)C,Z:INSTD_LOGIC;--標(biāo)志信號(hào)LDZ:OUTSTD_LOGIC;—當(dāng)它為1時(shí),如果運(yùn)算結(jié)果為0,在T3的上升沿,將1寫(xiě)入到Zbiaozhi寄存器;如果運(yùn)算結(jié)果不為0,將0保存到Z標(biāo)志寄存器。LDC:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿將運(yùn)算得到的進(jìn)位保存到C標(biāo)志寄存器。CIN:OUTSTD_LOGIC;—進(jìn)位輸出。M:OUTSTD_LOGIC;—控制算術(shù)邏輯運(yùn)算類型~ABUS:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將開(kāi)關(guān)數(shù)據(jù)送到數(shù)據(jù)總線DBUS;當(dāng)它為0時(shí),禁止開(kāi)關(guān)數(shù)據(jù)送數(shù)據(jù)總線DBUS。DRW:OUTSTD_LOGIC;—為1時(shí),在T3上升沿對(duì)RD1、RD0選中的寄存器進(jìn)行寫(xiě)操作,將數(shù)據(jù)總線DBUS上的數(shù)D7~D0寫(xiě)入選定的寄存器。PCINC:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿PC加1。LPC:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿,將數(shù)據(jù)總線DBUS上的D7~D0寫(xiě)入程序計(jì)數(shù)器PC。LAR:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿,將數(shù)據(jù)總線DBUS上的D7~D0寫(xiě)入地址寄存器AR。PCADD:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將當(dāng)前的PC值加上相對(duì)轉(zhuǎn)移量,生成新的PC。ARINC:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿AR加1。SELCTL:OUTSTD_LOGIC;—當(dāng)它為1時(shí),TEC-8實(shí)驗(yàn)系統(tǒng)處于實(shí)驗(yàn)臺(tái)狀態(tài),當(dāng)它為0時(shí),TEC-8實(shí)驗(yàn)系統(tǒng)處于運(yùn)行程序狀態(tài)?!縈EMW:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T2為1期間將數(shù)據(jù)總線DBUS上的D7~D0寫(xiě)入雙端口RAM。寫(xiě)入的存儲(chǔ)器單元由AR7~AR0指定。STOP:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3結(jié)束后時(shí)序發(fā)生器停止輸出節(jié)拍脈沖T1、T2、T3。LIR:OUTSTD_LOGIC;—當(dāng)它為1時(shí),在T3的上升沿將從雙端口RAM的右端口讀出的指令I(lǐng)NS7~INS0寫(xiě)入指令寄存器IR。讀出的存儲(chǔ)器單元由PC7~PC0指定。SBUS:OUTSTD_LOGIC;—當(dāng)它為1時(shí),數(shù)據(jù)開(kāi)關(guān)SD7~SD0的數(shù)送數(shù)據(jù)總線DBUS。MBUS:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將雙端口RAM的左端口數(shù)據(jù)送到數(shù)據(jù)總線DBUSSHORT:OUTSTD_LOGIC;—只產(chǎn)生節(jié)拍W1。LONG:OUTSTD_LOGIC;—產(chǎn)生節(jié)拍W1、W2、W3。SW:INSTD_LOGIC_VECTOR(2DOWNTO0);—即SWCSWBSWA,控制臺(tái)方式控制信號(hào)IR:INSTD_LOGIC_VECTOR(3DOWNTO0);—即IR7-IR4,指令的操作碼S:OUTSTD_LOGIC_VECTOR(3DOWNTO0);—ALU的方式控制,與M配合以選擇邏輯或算數(shù)運(yùn)算SEL:OUTSTD_LOGIC_VECTOR(3DOWNTO0);—寄存器選擇向量機(jī)器指令流程圖設(shè)計(jì)ii-Kii-K五、設(shè)計(jì)步驟與實(shí)驗(yàn)過(guò)程(1)設(shè)計(jì)步驟@1、學(xué)習(xí)硬布線控制器基本原理2、設(shè)計(jì)機(jī)器指令周期流程圖3、設(shè)計(jì)組合邏輯譯碼表4、根據(jù)組合邏輯譯碼表和控制器流程圖寫(xiě)出VHDL代碼5、分配各輸入輸出信號(hào)管腳6、下載程序到芯片7、反復(fù)調(diào)試((2)實(shí)驗(yàn)日志、故障及排除方案日志:熟悉實(shí)驗(yàn)臺(tái)遇到問(wèn)題及解決方案:由于學(xué)習(xí)tec8實(shí)驗(yàn)臺(tái)已有一段時(shí)間,操作不熟練,按照以前的實(shí)驗(yàn)步驟,寫(xiě)存儲(chǔ)器,讀存儲(chǔ)器,寫(xiě)寄存器,讀寄存器。日志:復(fù)習(xí)用VHDL語(yǔ)言編寫(xiě)程序遇到問(wèn)題及解決方案:1、語(yǔ)法記不清,重新理解了ENTITY、PROCESS,ARCHITECTURE等意義和使用方法。2、Quartus操作方法也已忘記,重新找到以前的課件,按照課件一步一步練習(xí)操作,日志:嘗試建立一個(gè)可以編譯下載到EMP7128SLC84-15芯片的工程,并將示例程序編譯后分配管腳,下載到芯片。遇到問(wèn)題及解決方案:1、因?yàn)橐婚_(kāi)始使用的是64位的quartus,分配管腳報(bào)錯(cuò):license文件不支持該芯片,用32位的重新建工程就編譯通過(guò)。2、因?yàn)橛玫氖亲约旱膚in10的電腦,無(wú)法識(shí)別USB下載器,又將工程拷貝到實(shí)驗(yàn)室電腦上成功下載到芯片。3、一開(kāi)始不清楚從哪輸入IR7~IR4、C、Z,和同學(xué)討論后,理解了將程序先存入存儲(chǔ)器,連線后可執(zhí)行微程序。日志:1、研究輸入輸出信號(hào)的具體作用。2、根據(jù)硬布線控制器參考流程圖寫(xiě)組合邏輯譯碼表。3、按要求編寫(xiě)程序VHDL代碼。遇到問(wèn)題及解決方案:1、循環(huán)操作中讀寄存器的ST0判斷與取值難以直接改變,ST0作為一個(gè)signal,不可以在兩個(gè)process中同時(shí)有賦值語(yǔ)句,所以設(shè)置了SST0控制,SST0為1時(shí)ST0置1。、2、不知道如何利用T3控制,后經(jīng)和組員討論利用T3下降沿來(lái)完成時(shí)序同步。日志:1、繼續(xù)編寫(xiě)程序。2、初步在實(shí)驗(yàn)臺(tái)調(diào)試編寫(xiě)的程序遇到問(wèn)題及解決方案:1、初次調(diào)試運(yùn)行程序時(shí)指令輸出不正確,檢查程序后發(fā)現(xiàn)需要每次進(jìn)入進(jìn)程時(shí)初始化。2、前幾次調(diào)試時(shí)寫(xiě)寄存器操作跳轉(zhuǎn)出錯(cuò),檢查代碼發(fā)現(xiàn)未給SST0置0。3、SST0對(duì)ST0的控制需要同步處理,即在一個(gè)拍結(jié)束后再對(duì)ST0控制。日志:1、逐條驗(yàn)證編寫(xiě)的指令。2、運(yùn)行老師給的檢驗(yàn)程序'遇到問(wèn)題及解決方案:1、老師的檢驗(yàn)程序運(yùn)行至JMP時(shí)IR顯示出錯(cuò),查找原因,發(fā)現(xiàn)LD命令未能正確運(yùn)行,排除法找出是代碼錯(cuò)誤引起。一共找出兩個(gè)錯(cuò)誤。(1)課本程序框圖中LD語(yǔ)句W3的節(jié)拍里未注明S的取值,寫(xiě)程序時(shí)理解為初始化為0,請(qǐng)教同學(xué)后,理解了、應(yīng)保持W2時(shí)的值不變;(2)修改代碼后仍運(yùn)行不正確,檢查管腳配置發(fā)現(xiàn)漏掉7M,加上后編譯運(yùn)行,結(jié)果正確2、欲添加自己的指令,不能確定指令相應(yīng)的輸出信號(hào)與代碼,經(jīng)查書(shū)和上網(wǎng)查找后解決問(wèn)題。六、算法設(shè)計(jì)(偽代碼)1、首先是時(shí)序PROCESS,偽代碼描述如下:PROCESS(RST0,SST0,T3,SW,CLR)BEGINIFCLR='0'THENST0清零;ELSIFSW有意義THEN—SW四種情況均要用到ST0控制if同步信號(hào)到來(lái)then--通過(guò)T3實(shí)現(xiàn)標(biāo)記置位/復(fù)位同步完成對(duì)ST0的復(fù)位和置位;ENDIF;elseNULL;endif;|ENDIF;ENDPROCESS;2、其次是指令控制PROCESS,設(shè)計(jì)思想涉及到兩級(jí)的譯碼結(jié)構(gòu)(兩重SWITCH-CASE)結(jié)構(gòu),由于要實(shí)線“可以在任何地方開(kāi)始程序”,在取值時(shí)需要做一些調(diào)整。用偽代碼描述如下:PROCESS(SW,W3,W2,W1,IR,CLR)BEGIN初始化;CASESWIS-WHEN"100"=>IFST0='0'THEN寫(xiě)R0和R1;SST0有效;ELSIFST0='1'THEN寫(xiě)R2和R3;RST0有效;ENDIF;|WHEN"011"=>每拍讀兩個(gè);WHEN"010"=>IFST0='0'THEN給首地址;SST0有效;ELSIFST0='1'THEN自增;…ENDIF;WHEN"001"=>IFST0='0'THEN給首地址;SST0有效;ELSIFST0='1'THEN自增;

ENDIF;WHEN"000"=>IFST0='0'THEN給首地址;SST0有效;ELSIFST0='1'THEN取指,并保證ST0永遠(yuǎn)為1;CASEIRIS0001-1111操作碼譯碼;ENDCASE;ENDIF;ENDCASE;ENDPROCESS;七、實(shí)驗(yàn)VHDL代碼LIBRARYIEEE;USECPUISPORT(CLR:INSTD_LOGIC;—清零信號(hào)T3,W1,W2,W3:INSTD_LOGIC;--時(shí)序信號(hào)C,Z:INSTD_LOGIC;—標(biāo)志信號(hào)LDZ:OUTSTD_LOGIC;—當(dāng)它為1時(shí),如果運(yùn)算結(jié)果為0,在T3的上升沿,將1寫(xiě)入到Zbiaozhi寄存器;如果運(yùn)算結(jié)果不為0,港0保存到Z標(biāo)志寄存器。]LDC:OUTSTD_LOGIC;CIN:OUTSTD_LOGIC;M:OUTSTD_LOGIC;ABUS:OUT]LDC:OUTSTD_LOGIC;CIN:OUTSTD_LOGIC;M:OUTSTD_LOGIC;ABUS:OUTSTD_LOGIC;總線DBUS。DRW:OUTSTD_LOGIC;DBUS上的數(shù)D7~D0寫(xiě)入選定的寄存器。PCINC:OUTSTD_LOGIC;LPC:OUTSTD_LOGIC;器PC。LAR:OUTSTD_LOGIC;器AR。—進(jìn)位輸出。--控制算術(shù)邏輯運(yùn)算類型—當(dāng)它為1時(shí),將開(kāi)關(guān)數(shù)據(jù)送到數(shù)據(jù)總線DBUS;當(dāng)它為0時(shí),禁止開(kāi)關(guān)數(shù)據(jù)送數(shù)據(jù)—為1時(shí),在T3上升沿對(duì)RD1、RD0選中的寄存器進(jìn)行寫(xiě)操作,將數(shù)據(jù)總線—當(dāng)它為1時(shí),在T3的上升沿PC加1。—當(dāng)它為1時(shí),在T3的上升沿,將數(shù)據(jù)總線DBUS上的D7~D0寫(xiě)入程序計(jì)數(shù)PCADD:OUTSTD_LOGIC;ARINC:OUTSTD_LOGIC;SELCTL:OUTSTD_LOGIC;于運(yùn)行程序狀態(tài)。MEMW:OUTSTD_LOGIC;的存儲(chǔ)器單元由AR7~AR0指定。STOP:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將當(dāng)前的PC值加上相對(duì)轉(zhuǎn)移量,生成新的PCADD:OUTSTD_LOGIC;ARINC:OUTSTD_LOGIC;SELCTL:OUTSTD_LOGIC;于運(yùn)行程序狀態(tài)。MEMW:OUTSTD_LOGIC;的存儲(chǔ)器單元由AR7~AR0指定。STOP:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將當(dāng)前的PC值加上相對(duì)轉(zhuǎn)移量,生成新的PC。—當(dāng)它為1時(shí),在T3的上升沿AR加1。—當(dāng)它為1時(shí),TEC-8實(shí)驗(yàn)系統(tǒng)處于實(shí)驗(yàn)臺(tái)狀態(tài),當(dāng)它為0時(shí),TEC-8實(shí)驗(yàn)系統(tǒng)處—當(dāng)它為1時(shí),在T2為1期間將數(shù)據(jù)總線DBUS上的D7~D0寫(xiě)入雙端口RAM。寫(xiě)入—當(dāng)它為1時(shí),在T3結(jié)束后時(shí)序發(fā)生器停止輸出節(jié)拍脈沖T1、T2、T3。一一_—當(dāng)它為1時(shí),在T3的上升沿將從雙端口RAM的右端口讀出的指令I(lǐng)NS7~INS0寫(xiě)入指令寄存器IR。讀出的存儲(chǔ)器單元由PC7~PC0指定。LIR:OUTSTD_LOGIC;SBUS:OUTSTD_LOGIC;—當(dāng)它為1時(shí),數(shù)據(jù)開(kāi)關(guān)SD7~SD0的數(shù)送數(shù)據(jù)總線DBUS。MBUS:OUTSTD_LOGIC;—當(dāng)它為1時(shí),將雙端口RAM的左端口數(shù)據(jù)送到數(shù)據(jù)總線DBUSLONG:OUTSTD_LOGIC;—產(chǎn)生節(jié)拍W1、W2、W3。SW:INSTD_LOGIC_VECTOR(2DOWNTO0);—即SWCSWBSWA,控制臺(tái)方式控制信號(hào)IR:INSTD_LOGIC_VECTOR(3DOWNTO0);—即IR7-IR4,指令的操作碼S:OUTSTD_LOGIC_VECTOR(3DOWNTO0);—ALU的方式控制,與M配合以選擇邏輯或算數(shù)運(yùn)算SEL:OUTSTD_LOGIC_VECTOR(3DOWNTO0);—寄存器選擇向量COMB:OUTSTD_LOGIC_VECTOR(2DOWNTO0)—錯(cuò)誤信號(hào)。);ENDCPU;ARCHITECTURElogicofCPUisSIGNALST0:STD_LOGIC:='0';一循環(huán)開(kāi)關(guān),用來(lái)實(shí)現(xiàn)首地址輸入SIGNALSST0:STD_LOGIC:='0';—ST0的置位信號(hào),將ST0置邏輯1,通過(guò)T3實(shí)現(xiàn)時(shí)序同步BEGINPROCESS(SST0,T3,SW,CLR)—ST0和CLR控制過(guò)程BEGINIFCLR='0'THENST0<='0';ELSIFSW="010"ORSW="001"ORSW="100"ORSW="000"THEN—SW四種情況均要用到ST0控制ifT3'EVENTANDT3='0'then—通過(guò)T3實(shí)現(xiàn)標(biāo)記置位/復(fù)位同步IFSST0='1'THEN--ST0置位。ST0<='1';ELSIFSST0='0'THEN--ST0復(fù)位。ST0<='0';ENDIF;elseNULL;endif;ENDIF;ENDPROCESS;PROCESS(SW,W3,W2,W1,IR,CLR)—譯碼BEGIN--初始化過(guò)程LDZ<='0';LDC<='0';CIN<='0';S<="0000";M<='0';<ABUS<='0';DRW<='0';PCINC<='0';LPC<='0';LAR<='0';PCADD<='0';ARINC<='0';SELCTL<='0';(MEMW<='0';STOP<='0';LIR<='0';SBUS<='0';MBUS<='0';SHORT<='0';LONG<='0';SEL<="0000";--SW譯碼CASESWISWHEN"100"=>--寫(xiě)寄存器IFST0='0'THENSBUS<=W1ORW2;SEL(2)<=W2;SEL(1)<=W1;SEL(0)<=W1;SELCTL<=W1ORW2;DRW<=W1ORW2;STOP<=W1ORW2;SST0<=W2;ELSIFST0='1'THENSBUS<=W1ORW2;SEL(3)<=W1ORW2;SEL(2)<=W2;SEL(1)<=W2;SEL(0)<=W1;SELCTL<=W1ORW2;DRW<=W1ORW2;STOP<=W1ORW2;SST0<=NOTW2;ENDIF;WHEN"011"=>--讀寄存器SEL(3)<=W2;SEL(1)<=W2;SEL(0)<=W1ORW2;

SELCTL<=W1ORW2;STOP<=W1ORW2;WHEN"010"=>--讀存儲(chǔ)器IFST0='0'THENSBUS<=W1;LAR<=W1;STOP<=W1;|%%SST0<=W1;SHORT<=W1;SELCTL<=W1;ELSIFST0='1'THENMBUS<=W1;ARINC<=W1;STOP<=W1;SHORT<=W1;SELCTL<=W1;ENDIF;WHEN"001"=>--寫(xiě)存儲(chǔ)器IFST0='0'THENSBUS<=W1;LAR<=W1;STOP<=W1;SST0<=W1;SHORT<=W1;SELCTL<=W1;ELSIFST0='1'THENSBUS<=W1;MEMW<=W1;*ARINC<=W1;STOP<=W1;SHORT<=W1;SELCTL<=W1;ENDIF;WHEN"000"=>LIR<=W1;PCINC<=W1;S<="0000";CASEIRISWHEN"0001"=>--ADDS(3)<=W2;S(0)<=W2;CIN<=W2;}ABUS<=W2;DRW<=W2;LDZ<=W2;LDC<=W2;(WHEN"0010"=>--SUBS(2)<=W2;S(1)<=W2;ABUS<=W2;DRW<=W2;LDZ<=W2;LDC<=W2;WHEN"0011"=>--ANDS(3)<=W2;S(1)<=W2;?S(0)<=W2;M<=W2;ABUS<=W2;DRW<=W2;LDZ<=W2;]WHEN"0100"=>--INCABUS<=W2;DRW<=W2;LDZ<=W2;LDC<=W2;WHEN"0101"=>--LDM<=W2;

S(3)<=W2ORW3;S(1)<=W2ORW3;ABUS<=W2;LAR<=W2;LONG<=W2;DRW<=W3;MBUS<=W3;WHEN"0110"=>M<=W2ORW3;--ST(S(3)<=W2ORW3;S(2)<=W2;S(1)<=W2ORW3;S(0)<=W2;ABUS<=W2ORW3;LAR<=W2;LONG<=W2;MEMW<=W3;¥WHEN"0111”二〉IFC='1'THENPCADD<=W2;ENDIF;--JCWHEN"1000”二〉IFZ='1'THEN--JZ、PCADD<=W2;ENDIF;WHEN"1001”二〉M<=W2;S(3)<=W2;S(2)<=W2;S(1)<=W2;--JMP[\S(0)<=W2;ABUS<=W2;LPC<=W2;WHEN"1010”二〉M<=W2;S(3)<=W2;S(1)<=W2;ABUS<=W2;--OUTWHEN"1110"二>STOP<=W2;--STPWHEN"1100"二>S(3)<=W2;S(2)<=W2;--OR》S(1)<=W2;M<=W2;ABUS<=W2;DRW<=W2;LDZ<=W2;WHENOTHERS=>COMB<="000”;ENDCASE;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTURE;八、驗(yàn)收測(cè)試程序地址指今指令代碼00H》52H0101001001HINCR248H01001000

02H¥56H0101011003HADDR0.R111H0001000104H71H0111000105HANDR1.R034H0011010006H#22H0010001007HINCR144H0100010008H]64H0110010009HINCR34CH010011000AH82H100000100BHLDR2.「R3〕5BH010110110CH98H100110000DHINCR34CH010011000EH4CH010011000FH、SUBR0.R222H0010001010H|58H0101100011HADDR3.R21EH0001111012H|5FH0101111113HOUTR0A0H1010000014H「E0H11100000九、測(cè)試結(jié)果—%--/-|-[】—\#;H*<-i~,、@>r、,,—-(r—$(r-(、,T(!—(""I、>、*-@,?―?,?!*-*?、&T^-、。。-}"^[fA-|-d*#r,-I計(jì)算可得,結(jié)果完全符合十、實(shí)驗(yàn)結(jié)論(1)時(shí)序邏輯的設(shè)計(jì)是一個(gè)難題,因?yàn)樗械目刂菩盘?hào)都需要用來(lái)時(shí)序函數(shù)直接譯碼輸出。這里其實(shí)體現(xiàn)了硬布線和微程序控制器的本質(zhì)區(qū)別:硬布線采用了時(shí)序邏輯,比起微程序控制器的存儲(chǔ)邏輯,它少了一層。不難類比網(wǎng)絡(luò)設(shè)計(jì)中的協(xié)議分層原則:好的分層(微程序控制器)的優(yōu)點(diǎn)是普適性好,結(jié)構(gòu)清晰,易于泛化;也存在缺點(diǎn):效率低下。(2)根據(jù)設(shè)計(jì)的硬布線控制器流程圖設(shè)計(jì)譯碼電路,可先列出譯碼表作為邏輯設(shè)計(jì)的根據(jù),然后用VHDL語(yǔ)言直接寫(xiě)出相應(yīng)的語(yǔ)言描述,由于使用在系統(tǒng)可編程器件,集成度高,靈活性強(qiáng),編程下載方便,用于硬連線控制器使調(diào)試簡(jiǎn)單。(3)硬布線控制器和微程序控制器的不同:1、微程序控制器的控制功能是在存放微程序存儲(chǔ)器和存放當(dāng)前正在執(zhí)行的微指令的寄存器直接控制下實(shí)現(xiàn)的,而硬布線控制的功能則由邏輯門(mén)組合實(shí)現(xiàn)。微程序控制器的電路比較規(guī)整,各條指令信號(hào)的差別集中在控制存儲(chǔ)器內(nèi)容上。2、微程序控制器一個(gè)機(jī)器指令對(duì)應(yīng)一條微程序,一個(gè)微指令周期對(duì)應(yīng)一個(gè)節(jié)拍電位時(shí)間。而硬布線控制器時(shí)序產(chǎn)生器除了產(chǎn)生節(jié)拍脈沖信號(hào)外還應(yīng)產(chǎn)生節(jié)拍電位信號(hào),用于在一個(gè)指令周期中順序執(zhí)行一系列微操作,需要設(shè)置若干節(jié)拍電位來(lái)定時(shí)。3、在微程序控制器中,微操作控制信號(hào)由微指令產(chǎn)生,并且可以重復(fù)使用。而在硬布線控制器中某一微操作控制信號(hào)由布爾代數(shù)表達(dá)式描述的輸出函數(shù)產(chǎn)生。十一、中斷設(shè)計(jì)方案1、中斷原理

中斷方式是在外設(shè)為數(shù)據(jù)傳送做好準(zhǔn)備之后,就向CPU發(fā)出中斷請(qǐng)求信號(hào)(相當(dāng)于通知CPU)。CPU接收到中斷請(qǐng)求信號(hào)之后立即作出響應(yīng),暫停正在執(zhí)行的原程序(主程序),而轉(zhuǎn)去外設(shè)的數(shù)據(jù)輸入輸出服務(wù),待服務(wù)完之后,程序返回。CPU再繼續(xù)執(zhí)行被中斷的原程序。我們?cè)O(shè)計(jì)的是外部中斷。外部中斷以電平觸發(fā),通過(guò)PULSE按鈕輸入請(qǐng)求信號(hào)。2、實(shí)現(xiàn)方案模仿TEC-8中提供的中斷系統(tǒng),我們所設(shè)計(jì)的中斷系統(tǒng)只支持單級(jí)中斷、單個(gè)中斷請(qǐng)求,有中斷屏蔽功能。在VHDL編寫(xiě)的CPU系統(tǒng)中有三條指令,開(kāi)中斷指令EI(1101XXXX)、關(guān)中斷指令DI(1100XXXX)、中斷返回指令I(lǐng)RET(1011XXXX)。在時(shí)序發(fā)生器中,設(shè)置了一個(gè)允許中斷觸發(fā)器EN_INT(DIor!ED,當(dāng)它為1時(shí),允許中斷,當(dāng)它為0時(shí),禁止中斷發(fā)生。復(fù)位脈沖CLR#使EN_INT復(fù)位為0。中斷地址寄存器IAR是74LS374。當(dāng)信號(hào)LIAR為1時(shí),在T3的上升沿,將PC保存在IAR中。當(dāng)信號(hào)IABUS為1時(shí),IABUS中保存的PC送數(shù)據(jù)總線DBUS。由于本實(shí)驗(yàn)系統(tǒng)只有一個(gè)斷點(diǎn)寄存器而無(wú)堆棧,因此僅支持一級(jí)中斷而不支持多級(jí)中斷。中斷向量即中斷服務(wù)程序的入口地址,TEC-8系統(tǒng)中由數(shù)據(jù)開(kāi)關(guān)SD7~SD0提供。除指令EI、DI外,每條指令執(zhí)行過(guò)程的最后一條微指令都包含判斷位P4,用于判斷有無(wú)中斷發(fā)生,根據(jù)中斷信號(hào)INT是否為1決定VHDL程序分支。如果信號(hào)INT為1,則轉(zhuǎn)如由SD7~SD0提供的中斷向量,進(jìn)入中斷處理;如果信號(hào)INT為0,則繼續(xù)取下一條指令然后執(zhí)行。INT為1轉(zhuǎn)到中斷向量,根據(jù)VHDL語(yǔ)言改變INTDI信號(hào),禁止新的中斷發(fā)生,產(chǎn)生LIAR信號(hào)保存當(dāng)前地址(斷點(diǎn)寄存器),產(chǎn)生STOP信號(hào),等待手動(dòng)設(shè)置中斷向量(數(shù)據(jù)開(kāi)關(guān)SD7~SD0設(shè)置中斷地址),機(jī)器將中斷向量讀到PC后,轉(zhuǎn)到中服務(wù)程序繼續(xù)執(zhí)行。執(zhí)行指令【RET,從中斷地址返回,該指令產(chǎn)生IABUS信號(hào),恢復(fù)斷點(diǎn)地址,產(chǎn)生信號(hào)LPC,將斷點(diǎn)從數(shù)據(jù)總線裝入PC,恢復(fù)被中斷的程序。發(fā)生中斷時(shí),關(guān)中斷由硬件負(fù)責(zé)。而中斷現(xiàn)場(chǎng)(包括4個(gè)寄存器、進(jìn)位標(biāo)志C和結(jié)果為0標(biāo)志Z)的保存和恢復(fù)由中斷服務(wù)程序完成。中斷服務(wù)程序的最后兩條指令一般是開(kāi)中斷指令£【和中斷返回指令【RET。為了保證從中斷服務(wù)程序能夠返回到主程序,£【指令執(zhí)行后,不允許立即被中斷。因此,£【指令執(zhí)行過(guò)程中的最后一條微指令中不包含P4判別位。使用VHDL語(yǔ)言描述TEC-8中的中斷控制器INT_EN_P:process(CLR,MF,INTEN,IBNTDI,PULSE,EN_INT)beginifCLR='0'thenEN_INT<='0';thenelsifMF'eventandMF='1EN_INT<=INTENor(EN_INTand(notINTDI));endif;INT<=EN_INTandPULSE;thenendprocess由于EPM7128引腳規(guī)定中沒(méi)有PLUSE輸入引腳,也沒(méi)有IABUS輸出引腳,因此無(wú)法實(shí)際進(jìn)行試驗(yàn)。如果有該引腳的話,測(cè)試程序如下:地址指令代碼20HINTS1M1V21HLDAR0「R2]0101100022HADDP0P00000000023HADDP0P00000000021Jfl-^4HADDR0R0uuuuuuuu0000000025HADDR0R00000000026HADDR0R00000000027HADDR0R00000000028HADDR0R000000000-29HJMP「R1]中斷服務(wù)程序:地址指令機(jī)器代碼-QAQHANDR0R01/Ljj|j|7700110000-041H-4RET1010xxxx寄存器R1的值為21H.當(dāng)有PLUSE輸入引腳時(shí),執(zhí)行上面的程序,則最初一直在20H-29H之間取指,輸入PULSE信號(hào)后,在微指令的最后進(jìn)入中斷,輸入中斷服務(wù)程序地址0A0H,中斷程序執(zhí)行完畢后跳回被中斷程序繼續(xù)執(zhí)行。十二、小組成員實(shí)驗(yàn)心、得與體會(huì)周卓彬:在此次計(jì)算機(jī)組成原理課程設(shè)計(jì)中,經(jīng)過(guò)每位組員的通力合作,我們順利完成了一個(gè)硬布線控制器的CPU設(shè)計(jì),涵蓋了基本的讀寫(xiě)寄存器及存儲(chǔ)器操作,支持執(zhí)行基本的指令集。從流程設(shè)計(jì),代碼編寫(xiě),芯片燒錄到調(diào)試運(yùn)行,整個(gè)過(guò)程使我受益良多。一開(kāi)始的時(shí)候無(wú)從下手,因?yàn)檫@個(gè)設(shè)計(jì)并不像是之前接觸的代碼任務(wù),根據(jù)實(shí)驗(yàn)說(shuō)明就可以

溫馨提示

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