數(shù)字系統(tǒng)設計 - 微處理器設計提高與進階_第1頁
數(shù)字系統(tǒng)設計 - 微處理器設計提高與進階_第2頁
數(shù)字系統(tǒng)設計 - 微處理器設計提高與進階_第3頁
數(shù)字系統(tǒng)設計 - 微處理器設計提高與進階_第4頁
數(shù)字系統(tǒng)設計 - 微處理器設計提高與進階_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)字系統(tǒng)設計

DigitalSystemDesign-----微處理器設計22講義第十章微處理器設計2微處理器內(nèi)部結(jié)構(gòu)微處理器的兩個主要部分:控制單元用于控制數(shù)據(jù)通路的所有操作,實現(xiàn)微處理器運算的正確性數(shù)據(jù)通路主要包括運算單元ALU、存儲單元(寄存器)及其相互連接3微處理器內(nèi)部結(jié)構(gòu)微處理器的三個執(zhí)行步驟指令周期(1)取指即從程序存儲器中把PC所指向的指令取出,拷貝到IR;PC+1指向下一條指令的地址;(2)譯指從IR中提取出操作碼,對指令所要做的操作進行翻譯;決定當前執(zhí)行那一條指令,跳轉(zhuǎn)到那一個對應的狀態(tài)去;(3)執(zhí)行指令每一步將在有限狀態(tài)機的一個狀態(tài)被執(zhí)行。每個指令通常在一個時鐘周期內(nèi)執(zhí)行有些情況下一些存儲器操作的指令可能需要兩個甚至更長的時鐘周期,這種情況下就需要更多的狀態(tài)來實現(xiàn)正確的時序。一般而言,程序的指令都是存儲在外部寄存器中的,所以除了CPU外,微處理器一般還需要外部存儲器以及連接外部存儲器與CPU的地址以及數(shù)據(jù)總線。4mips指令格式1)R型------三個寄存器操作數(shù)格式用于如add和sub指令,有三個寄存器操作數(shù)。2)I型--------兩個寄存器操作數(shù)格式用于如lw和sw指令,具有兩個寄存器操作數(shù)和一個16位立即數(shù)。3)J型-------無寄存器格式有一個26位的立即數(shù),無寄存器。

MIPS采用32位指令5微處理器實例1分析

--------simple4-bitCPUhttp://jaromir.xf.cz/fourbit/fourbit.html6Another4-bitTTLCPU7TheReducedInstructionSet-APOLLO181

only2^4=16operationcodes(orop-codes)Eachinstructionthentakesanargumentof4-bitdataasimmediateoperandNotesforthe4-bitimmediateoperands:§"n"isa4-bitbinarydata§"r"pointsoneofthe16registers§"p"isabinaryoperandwhichreferstothefourfunction–selectlines(S0,S1,S2,S3)oftheALUitincludesAddition,Subtraction,Shiftoperand,MagnitudeComparisonplustwelveotherArithmeticoperations.Thenitincludes

Exclusive-OR,Comparator,AND,NAND,OR,NORplustenotherLogicOperations§"s"canonlytakethebinaryvaluesof“0000”(0Hex)or“1111”(FHex)8NewInstructionset9InstructionOpCodeSummaryDescriptionLOAD(Mem)0000Accum=mem[Operand];LoaddatatotheaccumulatorfromavalueheldinRAMwiththeaddresssetbytheoperand.

LOAD(Value)0001Accum=Operand;Loadtheoperanddatatotheaccumulaor.ADD(Mem)0010Accum+=mem[Operand];AddvalueheldinmemorytotheaccumuatorADD(Value)0011Accum+=Operand;Addoperandtotheaccumuator

SUB(Mem)0100Accum-=mem[Operand];Subtractvalueheldinmemoryfromtheaccumuator

SUB(Value)0101Accum-=Operand;Subtractoperandfromtheaccumuator

STO(Mem)0110mem[mem[Operand]]=Accum;

Storeaccumulator'svaluetomemory,addressheldinmemory.

STO(Value)0111mem[Operand]=Accum;Storeaccumulator'svaluetomemory,operandequalsaddress.

READ(Mem)1000Addr=mem[Operand];Readfromaddress,addressheldinmemory.READ(Value)1001Addr=Operand;

Readfromaddress,operandequalsaddress.JMPLOW(Mem)1010PCLowAddr=mem[Operand]Jumpthelower4-bitsoftheProgramCountertoanaddressheldinmemory.JMPLOW(Value)1011PCLowAddr=OperandJumpthelower4-bitsoftheProgramCountertoanaddressheldbytheoperand.JMPHIGH(Mem)1100PCHighAddr=mem[Operand]

Jumptheupper4-bitsoftheProgramCountertoanaddressheldinmemory.

JMPHIGH(Value)1101PCHighAddr=Operand

Jumptheupper4-bitsoftheProgramCountertoanaddressheldbytheoperand.JMPZERO(Mem)1110if(Accum==0){

PC=mem[Operand];

}Ifaccumulatorequalszero,programcounteraddressequalsavalueinprogrammemory.JMPZERO(Value)1111if(Accum==0){

PC=Operand;

}Ifaccumulatorequalszero,programcounteraddressequalstheoperand.

NewInstructionsetTheMath(Command#4,#5,#6,#7,#8,#9)Movedatainsideandoutside(Command#1,#2,#3,#E,#F)ComparisonandJump(Command#0,#A,#B,#C,#D)10MicrocodeTheop-codeoftheinstructionisdecodedimmediatelybytheROM(74188)becausethemostsignificantdata-outputsoftheRAMarehard-wiredtotheROMaddresses.Foreach

op-codetheROMprovidesamicroprogrammed

sequenceoffourstates.Sixteendifferentop-codeswithfourstateseachmakesixty-fourpossiblecombinations.Thus

four

ROM74188are

tiedtogethertoformalargerarrayofmemorythatconsistsof

64words.11Schematicformicrocode124bitCPU-Micro-instructionmicrocodedetailStartingataddresszeroandincrementingbyoneforeachline,fourforeachinstruction13ADDRESSROM0ROM10FFFF17FFF2BFFF3FFFF4FFFD5DFFF6FFFF7FFFD8FFFB9DFFF10FFFF11FFFB12FFFF13FDFF14FFFF15FFFF16FFFF17EFFF18FFFF19FFFF20FFFF21F7FF22FFFF23FFFF24FFFF25FBFF26FFFF27FFFF28FFFD29FEFF30FFFF31FFFD32FFFB33FEFF34FFFF35FFFB36FFFF37FFEF38FFFF39FFFF40FFFF41FF7F42FFEF43FFFF44FFFF45FFBF46FFEF47FFFF48FFFF49FFDF50FFEF51FFFF52FFFE53DFFF54FFFF55FFFE56FFFB57FFF758FFFF59FFFB60FFFF61FFFF62FFFF63FFFFLTCHINC/LD/INC/DECLTCH/WRLTCH/RSTLTCH/RDINS/EROMINSPCACCACCACCREGREGFLAGJMPLJMPEJMPGPCOUTREGDATAIN01FETCH1111111111111111FFFF01111111111111117FFF1011111111111111BFFF1111111111111111FFFFLIT1111111111111101FFFD1101111111111111DFFF1111111111111111FFFF1111111111111101FFFDLOAD1111111111111011FFFB1101111111111111DFFF1111111111111111FFFF1111111111111011FFFBSTORE1111111111111111FFFF1111110111111111FDFF1111111111111111FFFF1111111111111111FFFFINC1111111111111111FFFF1110111111111111EFFF1111111111111111FFFF1111111111111111FFFFInterruptInterruptsignalsserveinAPOLLO181thesamepurposesasinterruptsinothersmicroprocessorswhenanexternalasynchronouseventhasoccurred,theCPUjumptoanotherportionoftheprogram.Asimplenon-maskableinterrupttechniquehasbeenimplementedviahardware.Whenadeviceassertstheinterruptsignal(inoursimplecaseabuttonkey)theCPUwaitstofinishthecurrentinstructionexecutionandthendefinitelyjumpsatthememorylocationpointedbyasetof8-bitswitchesplacedontheboard.Inthiswayitistheoreticallypossibletoimplement2^8=256differentinterruptswhichcouldpointall256RAMlocationsoftheprogramspace.Herewecanputaconditionaljumptabletoenhanceinterruptcapability.Unfortunatelythelackofamemorystackandthelimitednumberofavailableinstructionshaspreventedtheimplementationofa“returnfrominterrupt”whichwouldhaveallowedtheprogramtoflowbacktothemainprogramwhereitwasinterrupted.14ComputerOrganizationComputerdesignasanapplicationofdigitallogicdesignproceduresComputer=processingunit+memorysystemProcessingunit=control+datapathControl=finitestatemachineInputs=machineinstruction,datapathconditionsOutputs=registertransfercontrolsignals,ALUoperationcodesInstructioninterpretation=instructionfetch,decode,executeDatapath=functionalunits+registersFunctionalunits=ALU,multipliers,dividers,etc.Registers=programcounter,shifters,storageregisters總結(jié)16ALU時鐘PC計數(shù)器寄存器程序存儲器寄存器組總線LDassertedduringalo-to-hiclock

transitionloadsnewdataintoFFsOEassertedcausesFFstatetobe

connectedtooutputpins;otherwisethey

areleftunconnected(highimpedance)OEQ7Q6Q5Q4Q3Q2Q1Q0LDD7D6D5D4D3D2D1D0CLKRegistersSelectivelyloaded–ENorLDinputOutputenable–OEinputMultipleregisters–

group4or8inparallelRDWRA9A8A7A6A5A4A3A2A2A1A0IO3IO2IO1IO0MemoriesLargerCollectionsofStorageElementsImplementednotasFFsbutasmuchmoreefficientlatchesHigh-densitymemoriesuse1-5switches(transitors)perbitStaticRAM–1024wordseach4bitswideOncewritten,memoryholdsforever(nottruefordenserdynamicRAM)Addresslinestoselectword(10linesfor1024words)ReadenableSameasoutputenableOftencalledchipselectPermitsconnectionofmany

chipsintolargerarrayWriteenable(sameasloadenable)Bi-directionaldatalinesoutputwhenreading,inputwhenwriting1616ABSZNOperation16DataPath(ALU)ALUBlockDiagramInput:dataandoperationtoperformOutput:resultofoperationandstatusinformation16ZNOP8ACREG1616loadpathstore

pathDataMemory(16-bitwords)16OP16PCIR1616dataaddrrdwrMARControl

FSMBlockDiagramofProcessorRegisterTransferViewofPrincetonArchitectureWhichregisteroutputsareconnectedtowhichregisterinputsArrowsrepresentdata-flow,otherarecontrolsignalsfromcontrolFSMMARmaybeasimplemultiplexer

ratherthanseparateregisterMBRissplitintwo

(REGandIR)Loadcontrol

foreachregisterControl

FSM1616ZNOP16ACREG16loadpathstore

pathDataMemory(16-bitwords)1616OP16PCIR16dataaddrrdwrInstMemory(8-bitwords)dataaddrBlockDiagramofProcessorRegistertransferviewofHarvardarchitectureWhichregisteroutputsareconnectedtowhichregisterinputsArrowsrepresentdata-flow,otherarecontrolsignalsfromcontrolFSMTwoMARs(PCandIR)TwoMBRs(REGandIR)LoadcontrolforeachregisterASimplifiedProcessorData-pathandMemoryPrincetonarchitectureRegisterfileInstructionregisterPCincremented

throughALUModeledafter

MIPSrt000

(usedin61C

textbookby

Patterson&

Hennessy)Reallya32bit

machineWe’lldoa16bit

versionmemoryhasonly255words

withadisplayonthelastoneReviewofFSMTimingstep1step2step3fetchdecodeexecuteIR

mem[PC];PC

PC+1;rd

A+B

A

rsB

rttoconfigurethedata-pathtodothishere,whendowesetthecontrolsignals?FSMControllerforCPUNowweneedtorepeatthisforalltheinstructionsofourprocessorFetchanddecodestatesstaythesameDifferentexecutionstatesforeachinstructionSomemayrequiremultiplestatesifavailableregistertransferpathsrequiresequencingofstepsAlternativeWaystoImplementProcessorFSMs"RandomLogic"basedonMooreandMealyDesignClassicalFiniteStateMachineDesignDivideandConquerApproach:Time-StateMethodPartitionFSMintomultiplecommunicatingFSMsExploitLogicBlockFunctionality:JumpCountersCounters,Multiplexers,DecodersMicroprogramming:ROM-basedmethodsDirectencodingofnextstatesandoutputs74LS181Computers2610.3微處理器設計示例EC-1指令集-1五個8bits指令Opcode=3bits,000,001和010三個編碼沒有定義,nop271)指令INA輸入一個8比特的數(shù)值,并存儲到累加器A中;2)指令OUTA將累加器A中的數(shù)值拷貝到輸出端口;3)指令DECA把累加器A中的數(shù)值減1后再存入到累加器A中;4)指令JNZ(JumpNotZero)測試A中的數(shù)值是否為0,假如為0,這個指令什么也不做,假如不為0,則將指令中的后四位,即aaaa(表示跳轉(zhuǎn)地址)加載到寄存器PC中;5)指令HALT通過使CPU停止在halt狀態(tài)從而停止微處理器的運行,直到系統(tǒng)復位跳出halt狀態(tài)。數(shù)據(jù)通路-1指令集中操作的數(shù)據(jù)通路(1)執(zhí)行指令周期中的取指操作,并遞增PC值或者加載新的PC值;(2)存儲器;(3)實現(xiàn)指令集中所有指令的操作。28數(shù)據(jù)通路-1一個PC寄存器,4比特,+遞增單元一個IR寄存器,8比特一個具有16個存儲單元的8位程序存儲器一個8比特的累加器A,+遞減單元指令INA,累加器A的輸入來自于數(shù)據(jù)輸入端口;指令DECA,累加器A的輸入來自于遞減單元的輸出;指令OUTA,無需特別的數(shù)據(jù)通路的操作,累加器的輸出直接連接到數(shù)據(jù)輸出端口;指令JNZA,需要一個8比特的OR門連接到累加器的所有輸出上,來測試條件A是否不等于0。IR寄存器的低4位數(shù)據(jù)加載到PC寄存器中;指令HALT,不需要任何額外的操作。29控制信號數(shù)據(jù)通路中的控制字主要有5個即IRload,PCload,INmux,Aload和JNZmux。給控制單元提供一個狀態(tài)反饋信號Aneq030我們的設計中,為了保持設計的簡潔,我們把程序存儲器跟CPU一起設計在數(shù)據(jù)通路中了控制單元-1控制單元的狀態(tài)圖狀態(tài)START(000)作為初始復位狀態(tài)指令JNZA需要額外的時鐘周期完成PC加載新地址在下一個時鐘沿發(fā)生在FETCH狀態(tài)控制IRload信號有效,將PC寄存器指向的程序加載到IR寄存器,然后PC寄存器中的內(nèi)容遞增1后,信號PCload將新PC加載到PC寄存器中。在DECODE狀態(tài)測試IR寄存器的高三位,即IR_7-5解碼,跳轉(zhuǎn)到對應的狀態(tài)。31五個指令的執(zhí)行狀態(tài)指令INA操作設置INmux信號為1來選擇輸入信號為外部端口,設置Aload信號為1來加載輸入信號到累加器A。注意,為了輸入指令能夠讀取到正確的輸入值,輸入數(shù)據(jù)需要在微處理器復位之前就設置好。而且,由于INPUT狀態(tài)不需要等待一個類似于回車鍵的信號,因此,即使有多個數(shù)據(jù)輸入,也只能有一個數(shù)據(jù)會被讀入進來。指令DECA需要設置INmux信號為0、Aload信號為1,以使遞減單元的輸出被連接到累加器并加載進來。指令JNZ使JNZmux信號有效以將IR寄存器中的低4位地址信號加載到PC寄存器。狀態(tài)反饋信號Aneq0=1時,控制信號PCload信號被設置為有效。到HALT狀態(tài)將會無條件的停留在HALT狀態(tài)微處理器看上去像停止操作一樣。32狀態(tài)圖次態(tài)表、實現(xiàn)表,激勵方程33狀態(tài)控制輸出表、輸出方程34控制單元完整控制電路35完整電路-1數(shù)據(jù)通路電路與控制單元電路信號連接36示例匯編程序-1測試程序輸入一個數(shù)據(jù),將此數(shù)據(jù)進行遞減直至0。手工編譯37指令JNZ,最右邊4位表示當檢測條件為真時程序跳轉(zhuǎn)的地址。假設第一個指令INA存儲在程序存儲器的地址為0000,指令JNZ將跳轉(zhuǎn)到第二個指令OUTA(在程序存儲器中的地址是0001)JNZ指令的最后四位操作數(shù)被設置為0001。由于指令JNZ的操作碼為110,所以綜合起來指令JNZ完整的編碼是11000001。程序必須在數(shù)據(jù)通路和微處理器實現(xiàn)之前,加載到存儲器中去硬件電路實現(xiàn)-1完整的計算機微處理器,存儲器、輸入和輸出設備。八個撥碼開關作為輸入設備,2個七段數(shù)碼管作為輸出設備。一個LED來顯示是否已經(jīng)結(jié)束工作,一個按鈕作為復位按鈕。較高頻率(如25MHz)的時鐘分頻后變成4Hz,作為微處理器的時鐘。38指令集擴展---EC-2微處理器指令集-28個指令,仍是8位39指令LOAD指令把存儲器特定地址中的內(nèi)容賦給累加器A,地址是由指令的低5位表示。STORE指令把A中存儲的內(nèi)容賦給存儲器特定地址單元。ADD和SUB指令分別表示把A的內(nèi)容和存儲器特定地址的內(nèi)容相加、相減,并把其結(jié)果再賦給A。IN指令輸入一個值并存入A。JZ指令如果A=0則把特定地址賦給PC。把新地址賦給PC會導致微處理器跳轉(zhuǎn)到存儲器這個新地址繼續(xù)執(zhí)行程序。JPOS表示如果A是正數(shù)則把A中的內(nèi)容作為特定地址賦給PC。因為A是用補碼表示,所以如果A的最高位為0時,則A是正數(shù)。HALT指令使得微處理器停止運行。40數(shù)據(jù)通路-2執(zhí)行指令周期操作和實現(xiàn)所有指令操作41PC和遞增單元的位寬:需要有32個位置的存儲器,因此地址、PC和遞增單元的位寬均為為5比特。在PC的輸出和存儲器地址的輸入之間的加入了一個2選1多路選擇器。多路選擇器的一個輸入來自于PC,另一個輸入則來自IR的低四位,IR4-0。操作數(shù)指令:LOAD、STORE、ADD、SUB多路選擇器的一個輸入來自于PC,另一個輸入則來自IR的低5位,IR4-0。

用地址作為操作數(shù)。它們的存儲器地址是由IR的低五位給定的。2選1多路選擇器的選通信號是Meminst。存儲器大小增加到32個位置,因此需要5比特位寬LOAD&STORE指令:為了把數(shù)據(jù)從存儲器中讀出,也能把A的值賦給特定地址存儲器,需要用一個RAM來代替之前的ROM。為了實現(xiàn)STORE操作,把A的輸出與存儲器的數(shù)據(jù)輸入D7-0相連。當信號MemWr有效時,則把A的值寫入內(nèi)存的指令地址。存儲器的輸出Q7-0與累加器A的相連是為了執(zhí)行LOAD的指令,通過4選1多路選擇器加-減單元為了執(zhí)行ADD和SUB指令多路選擇器的選通信號為Asel1-0,第四個多路選擇端沒有使用42反饋信號兩個條件跳轉(zhuǎn)指令JZ和JPOS數(shù)據(jù)通路提供給狀態(tài)機兩個反饋信號,Aeq0和Apos。如果A的值是0,則Aeq信號輸出為1,故只需一個8輸入NOR門。如果A的值是正數(shù),則Apos為1,因為A是補碼表示,首位為0表示正數(shù),首位為1表示負數(shù),所以Apos只須等于A7的取反信號。數(shù)據(jù)通路有八個控制信號

溫馨提示

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

評論

0/150

提交評論