版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
SAP-1Cpu電路設(shè)計一.SAP-1CPU及計算機(jī)的組成架構(gòu)簡介二.SAP-1CPU指令.尋址法.程序設(shè)計三.16*8的ROM設(shè)計與仿真四.SAP-1CPU設(shè)計與仿真實驗?zāi)康模簩嶒炘硇〗M成員薛寶(20054440118)汪威(20054440119)高亮(20054440120)吳安樂(2005444021)陸仁聰(20054440122)謝素斌(20054440123)吳運興(20054440124)江憲清(20054440126)一.SAP-1CPU及計算機(jī)的組成架構(gòu)簡介
所有寄存器是以三態(tài)(threestate)輸出方式,連接至webus上。雖然現(xiàn)在不是使用傳統(tǒng)TTL電路組成,而是使用CPLD&FPGA類型組件來實現(xiàn)它,這也就意味著圖1的一些功能方塊或一些控制線需要作部分調(diào)整或修改,但無論如何對于每個方塊所扮演的角色,是絕對有必要了解的!Programcounter48InputandMAR4416*8RAMInstructiontegisterController/sequencer41248888AccumulatorA8Adder/subtractorBregisterOutputregisterBinarydisplay88888WbusLACLKEASUEULBCLKLOCLKCLRCLKL1E1CECLKLMEPCLRCPCLKCLKCLKCLRCLRCPEPLMCELIEILAEASUEULBLO圖1:SAP-1結(jié)構(gòu)
說明:1.程序計數(shù)器它是一個4Bits的計數(shù)器,計數(shù)范圍由0~15。主要功用是記錄下每個執(zhí)行的指令地址,并把這個地址傳送至MAR寄存器存放。2.輸入與MAR(MemoryAccessRegister)
這個方塊應(yīng)分成兩個部分,一個是接受由“輸入”部分輸入到RAM內(nèi)存的外部程序和數(shù)據(jù),另一部分“MAR”是用來在CPU執(zhí)行上述所加載的程序時,暫存下一個要執(zhí)行的指令地址。3.16×8RA
這個RAM和其它的部分構(gòu)成圖10-1的SAP-1計算機(jī),而且它的內(nèi)存大小共有16地址×8位。所以這個RAM的地址總線是4bit,地址編碼是由0000,0001,0010…1111,這個地址內(nèi)容是由上述MAR傳送過來,然后通過譯碼將地址存放的8位數(shù)據(jù)或指令輸出至Wbus。4.指令寄存器
屬于CPU內(nèi)的控制單元,主要是將在RAM的8位數(shù)據(jù),通過Wbus后讀入指令寄存器,然后再把數(shù)據(jù)一分為二,較高的4位屬于指令部分,送至下一級的“控制器”,而較低的4位屬于數(shù)據(jù)部分,將會被送至Wbus。5.控制器/序列發(fā)生器這個項目也是屬于CPU內(nèi)控制單元的一部分,這個控制器在程序執(zhí)行時,負(fù)責(zé)送出整個計算機(jī)的時序信號CLK,而且會把指令寄存器送來的4位指令,解譯成12位的控制信號,由這組控制信號指揮其它的功能方塊,完成該指令的運作。由于使用VHDL語言設(shè)計整個SAR-1,依照語法的使用,這部分會被省略,而且不會影響整個CPU運作。6.累加器
累加器是個8位的緩沖寄存器,它是存放目前計算機(jī)執(zhí)行的實時數(shù)據(jù)地方。不同的指令也將使它產(chǎn)生不同的工作方式。7.加減法器
這個加減法器負(fù)責(zé)執(zhí)行數(shù)學(xué)的加法和減法運算,而且運算的結(jié)果會放回“累加器”暫存。8.B寄存器
這個寄存器用來配合“累加器”、“加減法器”,執(zhí)行“加法”或“減法”的工作。9.輸出寄存器這個輸出寄存器的用途是,SAP-1CPU執(zhí)行到“輸出結(jié)果”的指令時,便將“累加器”的結(jié)果傳至“輸出寄存器”,所以它是負(fù)責(zé)存放輸出結(jié)果,當(dāng)然這個存放的結(jié)果是二進(jìn)制形式的。10.二進(jìn)進(jìn)制制顯顯示示在圖圖1的SAP-1計算算機(jī)機(jī)里里,,以以88個個LED作程程序序執(zhí)執(zhí)行行結(jié)結(jié)果果的的顯顯示示,,這這個個算算是是這這臺臺計計算算機(jī)機(jī)的的輸輸出出部部分分,,而而不不是是SAP-1CPU的功功能能方方塊塊。。最后后就就VHDL語言言設(shè)設(shè)計計的的觀觀點點來來對對圖圖1作設(shè)設(shè)計計分分類類::SAP-1CPU部分分::程序序計計數(shù)數(shù)器器、、MAR、指指令令寄寄存存器器、、控控制制器器//序序列列發(fā)發(fā)生生器器、、累累加加器器、、加加減減法法器器、、B寄存存器器、、輸輸出出寄寄存存器器。。16××8MAR部分分::考慮慮直直接接改改成成ROM的形形式式,,這這是是因因為為程程序序執(zhí)執(zhí)行行時時,,它它不不接接受受外外界界輸輸入入。。二.SAP-1CPU指令令.尋址址法法.程序序設(shè)設(shè)計計SAP-1的CPU指令令,,共共有有5個且且可可分分成成兩兩種種類類型型,,如如表表指令運算碼范例說明LDA0000LDA9H將9H內(nèi)存的內(nèi)容值加載累加器ADD0001ADDBH將BH的內(nèi)存內(nèi)容值和累加器內(nèi)容值相加,再存放運算結(jié)果回累加器SUB0010SUBEH將EH的內(nèi)存內(nèi)容值和累加器內(nèi)容值相減,再存放運算結(jié)果回累加器直接接尋尋址址法法(DirectAddressing)指令運算碼范例說明OUT1110OUT將累加器內(nèi)容輸出至“輸出寄存器”HLT1111HLT結(jié)果CPU執(zhí)行零位位尋尋址址法法(ZeroAddressing)范例例::試使使用用SAP-1指令令,,執(zhí)執(zhí)行行下下列列運運算算結(jié)結(jié)果果。。10+20+30-15=4B(十十六六進(jìn)進(jìn)制制))解答答:首先先將將運運算算數(shù)數(shù)據(jù)據(jù)10,20,30,15依序序放放在在9H-CH地址址里里第一一個個指指令令寫寫在在0H地址址,,功功能能是是先先將將10加載載累累加加器器,,所所以以指指令令寫寫成成::LDA0H這是是因因為為9H存放放著著數(shù)數(shù)值值10的內(nèi)內(nèi)容容第二二個個指指令令寫寫在在1H地址址,,功功能能是是將將20加載載B寄存存器器,,然然后后與與累累加加器器里里的的10作相加后后,再將將結(jié)果30存回累加加器,所所以指令令寫成((地址AH內(nèi)存數(shù)值值20):ADDAH第三個指指令寫成成在2H地址,功功能是將將30加載B寄存器,,然后與與累加器器里的30作相加后后,再將將結(jié)果60存回累加加器,所所以指令令寫成((地址BH內(nèi)存放數(shù)數(shù)值30數(shù)據(jù))::ADDBH第四個指指令寫在在3H地址,功功能是將將15加載B寄存器,,然后與與累加器器里的60作相減后后,再將將結(jié)果4B存回累加加器,所所以指令令寫成((地址CH內(nèi)存放數(shù)數(shù)值15數(shù)據(jù))::SUBCN第五個指指令寫在在4H地址,是是將累加加器數(shù)值值結(jié)果4B作輸出顯顯示,所所以指令令寫成::OUT第六個指指令寫在在5H地址,功功能在停停止CPU運算,所所以指令令寫成::HLT最后,整個程序序和數(shù)據(jù)據(jù)寫在RAM里,機(jī)械械碼表示示如下::地址匯編語言機(jī)械碼0HLDA9H000010011HADDAH000110102HADDBH000110113HSUBCH001011004HOUT1110xxxx5HHLT1111xxxx6HXXXxxxxxxxx地址匯編語言機(jī)械碼7HXXXxxxxxxxx8HXXXxxxxxxxx9H10H00010000AH20H00100000BH30H00110000CH15H00010101三.16*8的ROM設(shè)計與仿仿真范例:配合SAP-1指令,設(shè)計16(Word)x8(Bit)的ROM,使其能夠夠執(zhí)行如如下預(yù)算算:10+14+18-20=1C(Hex)地址匯編語言機(jī)械碼0HLDA9H000010011HADDAH000110102HADDBH000110113HSUBCH001011004HOUT111000005HHLT111100006HXXX000000007HXXX00000000地址匯編語言機(jī)械碼8HXXX000000009H10H00010000AH14H00100100BH18H00011000CH20H00100000對于原本本Don’’tcare部分,直接寫入入0,這是因為為Altera軟件會將將Don’’tcare視為0處理.程序:ROM16_8.VHD
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYROM16_8isPORT(DATAOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--DataOutputADDR:INSTD_LOGIC_VECTOR(3DOWNTO0);--ADDRESSCE:INSTD_LOGIC--ChipEnable);ENDROM16_8;
ARCHITECTUREaOFROM16_8ISBEGINDATA<=“00001001”WHENADDR=“0000”ANDCE=‘0’--LDA9H“00011010”WHENADDR=“0001”ANDCE=‘0’ELSE--ADDAH“00011011”WHENADDR=“0010”ANDCE=‘0’ELSE--ADDBH“00101100”WHENADDR=“0011”ANDCE=‘0’ELSE--SUBCH“11100000”WHENADDR=“0100”ANDCE=‘0’ELSE--OUT“11110000”WHENADDR=“0101”ANDCE=‘0’ELSE--HLT“00010000”WHENADDR=“1001”ANDCE=‘0’ELSE“00010100”WHENADDR=“1010”ANDCE=‘0’ELSE“00011000”WHENADDR=“1011”ANDCE=‘0’ELSE“00100000”WHENADDR=“1100”ANDCE=‘0’ELSE“00000000”;ENDa;
程序說明明:實際上仍仍是使用用when-else方式,以類似查查表方式式作ROM的設(shè)計.這個ROM有個CE使能接腳腳,它必須為為“0”時,才接受讀讀取數(shù)據(jù)據(jù)的命令令.仿真結(jié)果果:略四.SAP-1CPU設(shè)計與仿仿真SAP-CPU在前面所所提的指指令,它們執(zhí)行行的指令令周期總總長度基基本上都都是6個脈沖長長度,這可以用用下圖說說明S0S1S2S3S4S5(Fetch)磅(Execute)MachineCycleInstructionCycle圖2:SAP-1指令周期期(InstructionCycle)時序狀態(tài)態(tài)S0-S2范圍為指指令周期期,而時序狀狀態(tài)S3-S5為指令執(zhí)執(zhí)行周期期.下面是每每個時序序狀態(tài)下下,SAP-1CPU的工作任任務(wù):1.指令捉取取周期(FetchCycle)(1)狀態(tài)S0:(尋址狀態(tài)態(tài),AddressState)這個狀態(tài)態(tài)下,“程序計數(shù)數(shù)器”負(fù)負(fù)責(zé)將所所要執(zhí)行行的指令令地址值值傳遞至至MAR存放.(2)狀態(tài)S2:(增加狀態(tài)態(tài),IncrementState)這個狀態(tài)態(tài)下,“程序計數(shù)數(shù)器”的的值加1,代表計數(shù)數(shù)器將指指針指向向下一個個要執(zhí)行行的指令令地址值值.例如:原先在狀狀態(tài)S0時,“程序計數(shù)數(shù)器”的的值是01H,它會傳遞遞01H給“MAR”,然后在這這個狀態(tài)態(tài)S1時,將內(nèi)容值值加1后變成02H,這樣以便便記錄下下次要執(zhí)執(zhí)行的指指令地址址值.(3)狀態(tài)S2:(記憶狀態(tài)態(tài),MemoryState)這個狀態(tài)態(tài)下,將把記錄錄在“MAR”里的指令令地址值值,送入“RAM”里后,由“RAM”讀出該地地址的指指令碼,再將該指指令放入入“指令寄存存器”.有一點必必須強調(diào)調(diào)的是,不論是執(zhí)執(zhí)行哪個個指令,,它們的的狀態(tài)S0-S2的動作方方式都是是相同的的,不過狀態(tài)態(tài)S3-S5的動作方方式就會會因執(zhí)行行對那個個指令而而有所不不同.2.指令執(zhí)行行周期(1)LDA指令狀態(tài)S3:這個狀態(tài)態(tài)下,上述的09H數(shù)據(jù)傳入入MAR,以便下個個狀態(tài)能能取出該該數(shù)值所所代表的的地址里里的值,比如20H.狀態(tài)S4:這個狀態(tài)態(tài)是將存存放在“MAR”里的09數(shù)據(jù),通過RAM讀出09H地址的數(shù)數(shù)據(jù),比如是數(shù)數(shù)值20H數(shù)值至“累加器””狀態(tài)S5:這個狀態(tài)態(tài)下的LDA指令并沒沒有作用用(2)ADD指令狀態(tài)S3:這個狀態(tài)態(tài)下,上述的AH數(shù)據(jù)將傳傳入MAR,以便下個個狀態(tài)取取出該數(shù)數(shù)值所代代表地址址里的內(nèi)內(nèi)容值,比如是數(shù)數(shù)值14H狀態(tài)S4:這個狀態(tài)態(tài)是將存存放“MAR”里的AH數(shù)據(jù),通過RAM讀出AH地址內(nèi)的的數(shù)據(jù)狀態(tài)S5:這個狀態(tài)態(tài)是將存存在“累加器””和“B寄存器”的數(shù)值內(nèi)內(nèi)容存放放入“加減法器器”相加加后,再將相加加結(jié)果放放回“累加器””(3)SUB指令狀態(tài)S3:這個狀態(tài)態(tài)下,上述的BH數(shù)據(jù)傳入入MAR,以便下個個狀態(tài)能能取出該該數(shù)值所所代表地地址里的的值狀態(tài)S4:這個狀態(tài)態(tài)是將存存放在“MAR”的BH數(shù)據(jù),通過RAM讀出BH地址內(nèi)的的數(shù)據(jù)狀態(tài)S5:這個狀態(tài)態(tài)是將存存放在“累加器””和“B寄存器””的數(shù)值值放入“加減法器器”相減減后,再將相減減后結(jié)果果放回“累加器””O(jiān)UT指令狀態(tài)S3:這個狀態(tài)下,累加器的內(nèi)容容將經(jīng)Wbus傳至“輸出寄存器””,然后顯示在二二進(jìn)制顯示裝裝置.狀態(tài)S4:這個狀態(tài)OUT指令沒有作用用.狀態(tài)S5:這個狀態(tài)OUT指令沒有作用用(5)HLT指令狀態(tài)S3:這個狀態(tài)下“控制器/序列發(fā)生器””將停止送出出脈沖信號CLK,這時SAP-1CPU會停止執(zhí)行工工作.狀態(tài)S4:這個狀態(tài)HLT指令沒有作用用狀態(tài)S5:這個狀態(tài)HLT指令沒有作用用SAP-1CPU設(shè)計1.使用Process與CaseWhen命令架構(gòu)出6個脈沖的指令令周期ARCHITECTUREaOFSAP1IS……TYPESTATEIS(SO,S1,S2,S3,S4,S5);--statetypedeclareSIGNALPState:STATE;--presentstateSIGNALNState:STATE;--nextstate……BEGIN..**********************************************ChangeStateMode:PROCESS(CR,RST)--states0~s5BEGINIFRST=‘1’THEN--resetcpuPC<=““0000””;--pogramcounter=0HACC<=““00000000”;--accumulator=0HRUN<=‘1’;--CPUrunprogramenablePState<=S0;--InitialcpupresentstateELSIFCP’EVENTANDCP=‘0’’THEN--clocknegativeedageIFRUN=‘1’’THEN--runprogrameanble?CASEPStateIS--checkcpupresentstateWHENS0=>--(addressstate&fetchcycle-1)NState<=S1;--cpunextstateWHENS1=>--(incrementstate&fetchcycle-2)NState<=S2;--cpunextstateWHENS2=>--(memorystate&fetchcycle-3)NState<=S3;--cpunextstateWHENS3=>--STATES3(Executioncycle-1)NState<=S4;--cpunextstateWHENS4=>--STATES4(Executioncycle-2)NState<=S5;--cpunextstateWHENS5=>--STATES5(Executioncycle-3)NState<=S0;--cpunextstateENDCASE;PState<=NState;--切換狀態(tài)ENDIF;ENDIF;ENDPROCESSChangeStateMode;ENDa;2.編寫“指令捕捕捉周期(fetchcycle)即狀態(tài)S0~S2的命令Changestatemode:process(cp,rst)--states0~s5variableflag,f1:boolean;beginifrst=‘1’’then…….Pstate<=s0;flag:ture;Enableelsifcp’eventandcp=‘0’thenifrun=‘1’thencasepstateiscasepstateiswhenso=>nstate<=s1;mar<=std_logic_vector(pc);whens1=>nstate<=s2;ifflag=turethenpc<=pc+1;flag:=false;endif;Whens2=>Nastate<=s3;Flag:ture;Ir<=databus;Whens3=>……Endcase;……3.編寫”指令執(zhí)執(zhí)行周期(fetchcycle)”,即狀態(tài)S3~S5的命令首先在CaseWhen語句的狀態(tài)S3處,加入下面面粗體字命令令,將“指令令寄
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 碧桂園成本部主管面試題庫含答案
- 電力系統(tǒng)工程師筆試題及模擬試卷含答案
- 2025年城市災(zāi)害防治體系建設(shè)可行性研究報告
- 2025年數(shù)字廣告投放平臺優(yōu)化項目可行性研究報告
- 2025年空間信息與遙感技術(shù)應(yīng)用可行性研究報告
- 2025年數(shù)字化個人助理開發(fā)可行性研究報告
- 2025年可持續(xù)固廢處理與利用項目可行性研究報告
- 2025年信息安全技術(shù)應(yīng)用項目可行性研究報告
- 2026年鶴崗師范高等??茖W(xué)校單招職業(yè)技能測試題庫及完整答案詳解1套
- 2026年河北能源職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫及答案詳解1套
- 初三勵志、拼搏主題班會課件
- Cuk斬波完整版本
- GB/T 3521-2023石墨化學(xué)分析方法
- 一年級數(shù)學(xué)重疊問題練習(xí)題
- 三維動畫及特效制作智慧樹知到課后章節(jié)答案2023年下吉林電子信息職業(yè)技術(shù)學(xué)院
- 胰腺囊腫的護(hù)理查房
- 臨床醫(yī)學(xué)概論常見癥狀課件
- 物業(yè)管理理論實務(wù)教材
- 仁川國際機(jī)場
- 全檢員考試試題
- 光刻和刻蝕工藝
評論
0/150
提交評論