實(shí)驗(yàn)一簡(jiǎn)化的RISCCPU設(shè)計(jì).ppt_第1頁(yè)
實(shí)驗(yàn)一簡(jiǎn)化的RISCCPU設(shè)計(jì).ppt_第2頁(yè)
實(shí)驗(yàn)一簡(jiǎn)化的RISCCPU設(shè)計(jì).ppt_第3頁(yè)
實(shí)驗(yàn)一簡(jiǎn)化的RISCCPU設(shè)計(jì).ppt_第4頁(yè)
實(shí)驗(yàn)一簡(jiǎn)化的RISCCPU設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩42頁(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)介

1,實(shí)踐項(xiàng)目?jī)?nèi)容,數(shù)字電路的數(shù)字鐘; 高級(jí)數(shù)字系統(tǒng)設(shè)計(jì)與驗(yàn)證的數(shù)字鐘; SoC系統(tǒng)開發(fā)的數(shù)字鐘。,2,實(shí)踐項(xiàng)目成果,3,項(xiàng)目第一部分 簡(jiǎn)化的RISC_CPU設(shè)計(jì),4,1、概 述,設(shè)計(jì)所用語(yǔ)言 Verilog HDL 設(shè)計(jì)所用方法 Top-Down設(shè)計(jì)方法 設(shè)計(jì)所用知識(shí) 數(shù)字電路 計(jì)算機(jī)組成原理 高級(jí)數(shù)字系統(tǒng)設(shè)計(jì)與驗(yàn)證 可綜合風(fēng)格的組合邏輯電路設(shè)計(jì) 有限狀態(tài)機(jī)的設(shè)計(jì),5,設(shè)計(jì)所用開發(fā)環(huán)境 ISE8.2 ModelSim6.1 設(shè)計(jì)和實(shí)現(xiàn)的目標(biāo) 完成8條指令的RISC CPU設(shè)計(jì) 完成對(duì)所設(shè)計(jì)RISC CPU的驗(yàn)證 實(shí)現(xiàn)RISC CPU在FPGA開發(fā)板上的正確運(yùn)行,1、概 述,6,2、 什么是RISC CPU,CPU的意思 中央處理單元的縮寫,它是計(jì)算機(jī)的核心部件 RISC的意思 精簡(jiǎn)指令集計(jì)算機(jī)(Reduced Instruction Set Computer)的縮寫,7,2、 什么是RISC CPU,RISC CPU簡(jiǎn)介 是20世紀(jì)80年代才出現(xiàn)的CPU,與一般的CPU相比不僅只是簡(jiǎn)化了指令系統(tǒng),而且還通過(guò)簡(jiǎn)化指令系統(tǒng),使計(jì)算機(jī)的結(jié)構(gòu)更加簡(jiǎn)單合理,從而提高運(yùn)算速度,8,3、 RISC CPU功能分析,計(jì)算機(jī)利用RISC CPU處理信息的步驟 將數(shù)據(jù)和程序(即指令序列)輸入到計(jì)算機(jī)的 存儲(chǔ)器中 從第一條指令的地址起開始執(zhí)行該程序,得到所需結(jié)果,結(jié)束運(yùn)行,9,RISC CPU的作用 協(xié)調(diào)并控制計(jì)算機(jī)的各個(gè)部件 執(zhí)行程序的指令序列 RISC CPU的基本功能 取指令 分析指令 執(zhí)行指令,3、 RISC CPU功能分析,10,取指令 當(dāng)程序已經(jīng)在存儲(chǔ)器中時(shí),首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令地址及控制信號(hào)。 分析指令 即指令譯碼,這是對(duì)當(dāng)前取得的指令進(jìn)行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作控制命令。,3、 RISC CPU功能分析,11,執(zhí)行指令 根據(jù)分析指令時(shí)產(chǎn)生的“操作命令”形成相應(yīng)的操作控制信號(hào)序列,通過(guò)運(yùn)算器、存儲(chǔ)器及輸入/輸出設(shè)備的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對(duì)運(yùn)算結(jié)果的處理以及下條指令地址的形成。,3、 RISC CPU功能分析,12,取指令 當(dāng)程序已經(jīng)在存儲(chǔ)器中時(shí),首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令地址及控制信號(hào)。 指令寄存器 分析指令 即指令譯碼,這是對(duì)當(dāng)前取得的指令進(jìn)行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作控制命令。 譯碼器,3、 RISC CPU功能分析,13,執(zhí)行指令 根據(jù)分析指令時(shí)產(chǎn)生的“操作命令”形成相應(yīng)的操作控制信號(hào)序列,通過(guò)運(yùn)算器、存儲(chǔ)器及輸入/輸出設(shè)備的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對(duì)運(yùn)算結(jié)果的處理以及下條指令地址的形成。 算術(shù)邏輯運(yùn)算單元(ALU) 累加器 程序計(jì)數(shù)器(PC),3、 RISC CPU功能分析,14,RISC CPU整體功能 取指令 分析指令 執(zhí)行指令 狀態(tài)控制器 地址控制器 數(shù)據(jù)控制器 時(shí)鐘控制器,3、 RISC CPU功能分析,15,RISC CPU需要執(zhí)行的操作 系統(tǒng)的復(fù)位和啟動(dòng)操作 總線讀操作 總線寫操作,4、 RISC_CPU操作和時(shí)序,16,系統(tǒng)的復(fù)位和啟動(dòng)操作 RISC_CPU的復(fù)位和啟動(dòng)操作是通過(guò)rst引腳的信號(hào)觸發(fā)執(zhí)行的; 當(dāng)rst信號(hào)一進(jìn)入高電平,RISC_CPU就會(huì)結(jié)束現(xiàn)行操作,并且只要rst停留在高電平狀態(tài),CPU就維持在復(fù)位狀態(tài); 在復(fù)位狀態(tài),CPU各內(nèi)部寄存器都被設(shè)為初值,全部為零。數(shù)據(jù)總線為高阻態(tài),地址總線為0000H,所有控制信號(hào)均為無(wú)效狀態(tài); rst回到低電平后,接著到來(lái)的第一個(gè)時(shí)鐘上升沿將啟動(dòng)RISC_CPU開始工作,從ROM的000處開始讀取指令并執(zhí)行相應(yīng)操作。,4、 RISC_CPU操作和時(shí)序,17,總線讀操作 每個(gè)指令周期的前03個(gè)時(shí)鐘周期用于讀指令; 第3.5個(gè)周期處,存儲(chǔ)器或端口地址就輸出到地址總線上; 第46個(gè)時(shí)鐘周期,讀信號(hào)rd有效,數(shù)據(jù)送到數(shù)據(jù)總線上,以備累加器鎖存,或參與算術(shù)、邏輯運(yùn)算; 第7個(gè)時(shí)鐘周期,讀信號(hào)無(wú)效,第7.5個(gè)時(shí)鐘周期,地址總線輸出PC地址,為下一指令做好準(zhǔn)備。,4、 RISC_CPU操作和時(shí)序,18,總線寫操作: 每個(gè)指令周期的第3.5個(gè)時(shí)鐘周期處,寫的地址就建立了; 第4個(gè)時(shí)鐘周期輸出數(shù)據(jù); 第5個(gè)時(shí)鐘周期輸出寫信號(hào),至第6個(gè)時(shí)鐘結(jié)束,數(shù)據(jù)無(wú)效; 第7.5個(gè)時(shí)鐘周期,地址輸出為PC地址,為下一指令做好準(zhǔn)備。,4、 RISC_CPU操作和時(shí)序,19,指令系統(tǒng)由8條指令組成: HLT:停機(jī)操作。該操作將空一個(gè)指令周期,即8個(gè)時(shí)鐘周期; SKZ:若為零跳過(guò)下一條語(yǔ)句。該操作先判斷當(dāng)前累加器中的結(jié)果是否為零,若為零就跳過(guò)下一條語(yǔ)句,否則繼續(xù)執(zhí)行; ADD:該操作將累加器中的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相加,結(jié)果仍送回累加器中; ANDD:該操作將累加器的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相與,結(jié)果仍送回累加器中;,5、RISC_CPU尋址方式和指令系統(tǒng),20,指令系統(tǒng)由8條指令組成: XORR:該操作將累加器的值與指令中給出地址的數(shù)據(jù)異或,結(jié)果仍送回累加器中; LDA:該操作將指令中給出地址的數(shù)據(jù)放入累加器; STO:該操作將累加器的數(shù)據(jù)放入指令中給出的地址; JMP:該操作將跳轉(zhuǎn)至指令給出的目的地址,繼續(xù)執(zhí)行。,5、RISC_CPU尋址方式和指令系統(tǒng),21,RISC_CPU是8位微處理器,一律采用直接尋址方式,即數(shù)據(jù)總是放在存儲(chǔ)器中,尋址單元的地址由指令直接給出。,5、RISC_CPU尋址方式和指令系統(tǒng),22,頂層模塊,6、RISC_CPU的設(shè)計(jì),23,數(shù)據(jù)通道,6、RISC_CPU的設(shè)計(jì),24,狀態(tài)控制器,6、RISC_CPU的設(shè)計(jì),25,7、RISC_CPU的實(shí)現(xiàn),26,數(shù)據(jù)通道,2,7,3,6,4,1,5,27,模塊1,時(shí)鐘發(fā)生器,28,時(shí)鐘發(fā)生器clkgen利用外來(lái)時(shí)鐘信號(hào)clk生成一系列時(shí)鐘信號(hào)clk1、fetch、alu_clk,并送往CPU的其他部件。 其中,fetch是外來(lái)時(shí)鐘clk的8分頻信號(hào),利用fetch的上升沿來(lái)觸發(fā)CPU控制器開始執(zhí)行一條指令,同時(shí)fetch信號(hào)還將控制地址多路器輸出指令地址和數(shù)據(jù)地址; clk1信號(hào)用作指令寄存器、累加器、狀態(tài)控制器的時(shí)鐘信號(hào); alu_clk則用于觸發(fā)算術(shù)邏輯運(yùn)算單元。,模塊一 時(shí)鐘發(fā)生器,29,模塊2,指令寄存器,30,指令寄存器的觸發(fā)時(shí)鐘是clk1,在clk1的正沿觸發(fā)下,寄存器將數(shù)據(jù)總線送來(lái)的指令存入高8位或低8位寄存器中,但并不是每個(gè)clk1的上升沿都寄存數(shù)據(jù)總線的數(shù)據(jù),因?yàn)閿?shù)據(jù)總線上有時(shí)傳輸指令,有時(shí)傳輸數(shù)據(jù); 是不是指令由CPU狀態(tài)控制器的load_ir信號(hào)控制,該信號(hào)通過(guò)ena口輸入到指令寄存器,高電平表示是指令; 復(fù)位信號(hào)高有效,指令寄存器被清為零; 每條指令為兩個(gè)字節(jié),即16位。高3位是操作碼,低13位是地址(CPU的地址總線為13位,尋址空間為8K字節(jié)) 數(shù)據(jù)總線為8位,所以每條指令需取兩次,先取高8位,后取低8位。,模塊二 指令寄存器,31,模塊3,累加器,32,累加器用于存放當(dāng)前的結(jié)果,它也是雙目運(yùn)算中的一個(gè)數(shù)據(jù)來(lái)源; 復(fù)位后,累加器的值是零; 當(dāng)累加器通過(guò)ena口收到來(lái)自CPU狀態(tài)控制器load_acc信號(hào)時(shí),在clk1時(shí)鐘正跳沿時(shí)就收到來(lái)自于數(shù)據(jù)總線的數(shù)據(jù)。,模塊三 累加器,33,模塊4,算數(shù)運(yùn)算器,34,算術(shù)邏輯運(yùn)算單元根據(jù)輸入的8種不同操作碼分別實(shí)現(xiàn)相應(yīng)的加、與、異或、跳轉(zhuǎn)等基本操作運(yùn)算; 利用這幾種基本運(yùn)算可以實(shí)現(xiàn)很多種其它運(yùn)算以及邏輯判斷等操作。,模塊四 算術(shù)運(yùn)算器,35,HLT=3b000,暫停指令(保持累加器值 ) SKZ=3b001,計(jì)算為零則跳轉(zhuǎn)指令(保持累加器值) ADD=3b010,加法指令(data+累加器值) ANDD=3b011,按位與指令( data &累加器值) XORR=3b100,按位異或指令( data 累加器值) LDA=3b101,載入指令( data ) STO=3b110,數(shù)據(jù)寫入指令(保持累加器值 ) JMP=3b111,跳轉(zhuǎn)指令(保持累加器值 ),模塊四 算術(shù)運(yùn)算器,36,模塊5,數(shù)據(jù)控制器,37,數(shù)據(jù)控制器作用是控制累加器的數(shù)據(jù)輸出,由于數(shù)據(jù)總線是各種操作時(shí)傳送數(shù)據(jù)的公共通道,不同情況下傳送不同的內(nèi)容,有時(shí)要傳輸指令,有時(shí)要傳送RAM區(qū)或接口的數(shù)據(jù); 累加器的數(shù)據(jù)只有在需要往RAM區(qū)或端口寫時(shí)才允許輸出,否則應(yīng)呈現(xiàn)高阻態(tài),以允許其他部件使用數(shù)據(jù)總線; 所以任何部件往總線上輸出數(shù)據(jù)時(shí),都需要一控制信號(hào)。而此控制信號(hào)的啟、停則由CPU狀態(tài)控制器輸出的各信號(hào)控制決定; 數(shù)據(jù)控制器何時(shí)輸出累加器的數(shù)據(jù)則由狀態(tài)控制器輸出的控制信號(hào)datactl_ena決定。,模塊五 數(shù)據(jù)控制器,38,模塊6,地址多路器,39,它用于選擇輸出的地址是PC(程序計(jì)數(shù))地址還是數(shù)據(jù)/端口地址; 每個(gè)指令周期的前4個(gè)時(shí)鐘周期用于從ROM中讀取指令,輸出的應(yīng)是PC地址; 后4個(gè)時(shí)鐘周期用于對(duì)RAM或端口的讀寫,該地址由指令給出; 地址的選擇輸出信號(hào)由時(shí)鐘信號(hào)的8分頻信號(hào)fetch提供。,模塊六 地址多路器,40,程序計(jì)數(shù)器,模塊7,41,它用于提供指令地址,以便讀取指令。指令按地址順序存放在存儲(chǔ)器中; 有兩種途徑可形成指令地址: 順序執(zhí)行的情況; 遇到要改變順序執(zhí)行程序的情況,例如執(zhí)行JMP指令后,需要形成新的指令地址。 復(fù)位后,指令指針為零,即每次CPU重新啟動(dòng)將從ROM的零地址開始讀取指令并執(zhí)行; 每條指令執(zhí)行完需要兩個(gè)時(shí)鐘(兩個(gè)程序計(jì)數(shù)器的時(shí)鐘,即INC_PC信號(hào)的兩個(gè)周期),這時(shí)pc_addr已被增2,指向下一條指令(因?yàn)槊織l指令占兩個(gè)字節(jié)); 如果正在執(zhí)行的指令是跳轉(zhuǎn)語(yǔ)句,這時(shí)CPU狀態(tài)控制器將會(huì)輸出load_pc信號(hào),通過(guò)load口進(jìn)入程序計(jì)數(shù)器,程序計(jì)數(shù)器(pc_addr)將裝入目標(biāo)地址(ir_addr),而不是增2。,模塊七 程序計(jì)數(shù)器,42,狀態(tài)控制器,7、RISC_CPU的實(shí)現(xiàn),43,狀態(tài)控制器有兩部分組成:狀態(tài)機(jī)、狀態(tài)控制器。,7、RISC_CPU的實(shí)現(xiàn),44,狀態(tài)機(jī)控制器接收復(fù)位信號(hào)rst,當(dāng)rst有效時(shí),使能信號(hào)ena為0,輸入到狀態(tài)機(jī)中以停止?fàn)顟B(tài)機(jī)的工作; 狀態(tài)控制器是在fetch上升沿或rst上升沿判斷rst是否有效,如果rst為高電平,ena置0,否則置1; 狀態(tài)機(jī)是CPU的控制核心,用于產(chǎn)生一系列的控制信號(hào),啟動(dòng)或停止某些部件; CPU何時(shí)進(jìn)行讀指令來(lái)讀寫I/O端口及RAM區(qū)等操作,都是由狀態(tài)機(jī)來(lái)控制的; 狀態(tài)機(jī)的當(dāng)前狀態(tài),由變量state記錄,state的值就是當(dāng)前這個(gè)指令周期中已經(jīng)過(guò)的時(shí)鐘數(shù)(從零計(jì)起)。,7、RISC_CPU的實(shí)現(xiàn),45,指令周期是由8個(gè)時(shí)鐘組成,每個(gè)時(shí)鐘都要完成固定的操作: 第0個(gè)時(shí)鐘:CPU狀態(tài)控制器的輸出rd和load_ir為高電平,其余均為低電平。指令寄存器寄存由ROM送來(lái)的高8位指令代碼; 第1個(gè)時(shí)鐘:與上一時(shí)鐘相比只是inc_pc從0變?yōu)?,故PC增1,ROM送來(lái)低8位指令代碼,指令寄存器寄存該8位代碼; 第2個(gè)時(shí)鐘:空操作,即inc_pc從1變?yōu)?,rd和load_ir變?yōu)?。此時(shí)指令讀結(jié)束; 第3個(gè)時(shí)鐘:inc_pc變?yōu)?,即PC增1,指向下一條指令。另外,若操作符為HLT,則輸出信號(hào)halt為高,否則除了inc_pc為1外,其他各控制線均為0;,7、RISC_CPU的實(shí)現(xiàn),46,指令周期是由8個(gè)時(shí)鐘組成,每個(gè)時(shí)鐘都要完成固定的操作: 第4個(gè)時(shí)鐘:若操作符為ANDD,ADD,XORR或LDA,讀相應(yīng)地址的數(shù)據(jù),即rd變?yōu)?;若為JMP,將目的地址送給程序計(jì)數(shù)器,即load_pc變?yōu)?;若為STO,輸出累加器數(shù)據(jù),即datactl_ena變?yōu)?; 第5個(gè)時(shí)鐘:若操作符為ANDD,ADD或XORR,算術(shù)運(yùn)算器就進(jìn)行相應(yīng)的運(yùn)算;若為L(zhǎng)DA,就把數(shù)據(jù)通過(guò)算術(shù)運(yùn)算器送給累加器,即load_acc變?yōu)?,rd變?yōu)? ;若為SKZ,先判斷累加器的值是否為0,如果為0,PC就增1(即inc_pc變?yōu)?),否則保持原值;若

溫馨提示

  • 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)論