freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vhdl語(yǔ)言的8位risc-cpu的設(shè)計(jì)答辯-wenkub

2022-11-28 21:37:37 本頁(yè)面
 

【正文】 系統(tǒng)設(shè)計(jì) 技術(shù)層面看,集成電路發(fā)展已進(jìn)入 IP core 復(fù) 用的 SoC時(shí)代, 8 位嵌入式微處理器發(fā)展的一個(gè)重要特點(diǎn)是片上系統(tǒng) SoC 化。如果對(duì)指令系統(tǒng)作相應(yīng)的優(yōu)化,就可以從根本上快速提高處理器的執(zhí)行效率。很快,許多廠商都開(kāi)發(fā)出了自己的 RISC指令系統(tǒng),除了 IBM的 Power 和 PowerPC外 , 還有 DEC 的 Alpha、 SUN的 SPARC、HP 的 PARISC、 MIPS 技術(shù)公司的 MIPS、 ARM 公司的 ARM 等。從實(shí)現(xiàn)的途徑看, RISCCPU 與一般的 CPU 的不同處在于:它的時(shí)序控制信號(hào)形成部件是用硬布線邏輯實(shí)現(xiàn)的而不是采用微程序控制的方式。 CPU 由運(yùn)算器和控制器組成,其內(nèi)部結(jié)構(gòu)歸納起來(lái)可以分為控制單元、邏輯單元和存儲(chǔ)單元三大部分,這三個(gè)部分相互協(xié)調(diào),便可以進(jìn)行 分析,判斷、運(yùn)算并控制計(jì)算機(jī)各部分協(xié)調(diào)工作。 RISCCPU 由八大基本模塊構(gòu)成: 時(shí)鐘發(fā)生器、指令寄存器、累加器、算術(shù)邏輯單元、數(shù)據(jù)輸出控制器、地址多路器、程序計(jì)數(shù)器、狀態(tài)控制器 。 畢業(yè)設(shè)計(jì)說(shuō)明書 基于 VHDL語(yǔ)言的 8位 RISCCPU的設(shè)計(jì) 學(xué) 院: 專 業(yè): 學(xué)生姓名: 學(xué) 號(hào): 指導(dǎo)教師 : 201 年 月 中 文 摘 要 I 摘 要 RISC 即精簡(jiǎn)指令集計(jì)算機(jī)( Reduced Instruction Set Computer)的縮寫。本 設(shè)計(jì)中借助 MAX+PLUSⅡ 軟件平臺(tái)對(duì)各模塊進(jìn)行時(shí)序仿真,并最終給出了指令執(zhí)行的仿真波形,驗(yàn)證了 CPU 的功能。 CPU 從最初發(fā)展至今已經(jīng)有幾十年的歷史了,這期間,按照其處理信息的字長(zhǎng), CPU 可以分為:四位微處理器、八位微處理器、十六位微處理器、三十二位微處理器以及六十四位微處理器。 所謂硬布線邏輯也就是用觸發(fā)器和邏輯門直接連線所構(gòu)成的狀態(tài)機(jī)和組合邏輯,故產(chǎn)生控制序列的速度比用微程序控制方式快得多,因?yàn)檫@樣做省去了讀取微指令的時(shí)間。它的應(yīng)用范圍也遠(yuǎn)比 X86 來(lái)得廣泛,大到各種超級(jí)計(jì)算機(jī)、工作站、高階服務(wù)器,小到各類嵌入式設(shè)備、家用游戲機(jī)、消費(fèi)電子產(chǎn)品、工業(yè)控制計(jì)算機(jī),都可以看到 RISC的身影。 第 一 章 引 言 2 RISC 與 CISC(一般指普通的 X86CPU)比較,有以下優(yōu)勢(shì): 指令簡(jiǎn)單而且少;指令系統(tǒng)選用那些使用頻度高的簡(jiǎn)單指令和一些實(shí)用的但不十分復(fù)雜的指令,一般指令不超過(guò) 100 條;指令字長(zhǎng)固定,尋址方式一般不超過(guò)四種,指令格式也不超過(guò)四種;所有指令 (幾乎所有指令 )均在單指令周期完成;指令系統(tǒng)中只允許存 (STORE)和取 (LOAD)指令訪問(wèn)主存,其它指令均在寄存器之間進(jìn)行; CPU 中設(shè)置大量的寄存器,稱作寄存器堆;指令的運(yùn)行采用高效的流水 線方式;以硬布線控制邏輯為主,不用或少用微碼;優(yōu)化的編譯程序,簡(jiǎn)單有效地支持高級(jí)語(yǔ)言;超低功耗。本課題也為基于 IP 核的嵌入式系統(tǒng)設(shè)計(jì)積累了寶貴經(jīng)驗(yàn)。第 二 章 RISCCPU的架構(gòu)設(shè)計(jì) 3 第二章 RISCCPU的架構(gòu)設(shè)計(jì) RISCCPU 基本架構(gòu) 一個(gè)基本的 CPU 要包括三部分功能:數(shù)據(jù)的存儲(chǔ)、數(shù)據(jù)的 運(yùn)算和控制部分。存儲(chǔ)器的讀寫信號(hào)由控制器給出。 累加器用于保存參加運(yùn)算的數(shù)據(jù)以及運(yùn)算的中間結(jié)果。 程序計(jì)數(shù)器指向下一條要執(zhí)行的指令。這些信號(hào)送往其他部件,以控制這些部件協(xié)調(diào)工作。 二、從第一條指令的地址起開(kāi)始執(zhí)行該程序,得到所需結(jié)果,結(jié)束運(yùn)行。是對(duì)當(dāng)前取得的指令進(jìn)行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作控制命令。 ? FETCH 是外來(lái)時(shí)鐘 CKL 的 8 分頻信號(hào),其 上升沿觸發(fā) CPU 控制器開(kāi)始執(zhí)行一條指令,該 信號(hào) 同時(shí) 還控制地 址多路器輸出指令地址和數(shù)據(jù)地址。 entity clkgen is port(clk: in std_logic。 alu_clk: out std_logic)。 signal clk4: std_logic:=39。 圖 31 時(shí)鐘發(fā)生器 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 7 if clk139。 end if。039。 process(clk4) begin if clk439。 end if。 仿真波形如下: 指令寄存器 指令寄存器 Instruction Register 用于寄存指令。 IR_ENA 信號(hào) 通過(guò) ENA 口輸入到指令寄存器。本設(shè)計(jì)的數(shù)據(jù)總線為 8 位,所以每條指令需取兩次。再 次 寄存時(shí), 因 STATE 為 1, 取低 8 位 并 存入低 8 位寄存器中,同時(shí)將 STATE 置為 0,如此往復(fù)。 use 。 ir_addr: out std_logic_vector(12 downto 0))。039。)then if rst=39。)。039。 when 39。039。039。 opcode=opc_iraddrs(15 downto 13)。其中 第 15 至 第 13 位存入 opcode 中 并替換舊數(shù)據(jù) ,第 12 至 第 0 位存入 str_addr 中 并替換舊數(shù)據(jù) 。 累加器源程序如下: library ieee。 accum:out std_logic_vector(7 downto 0))。139。 elsif ena=39。 end if。 算術(shù) 邏輯單 元 算術(shù) 邏輯單元 ALU 的全稱是 Arithmetic Logic Unit, 該模塊 用來(lái)執(zhí)行諸如加減乘除以及寄存器中的值之間的邏輯運(yùn)算,通常在一般的處理器上被設(shè)成一個(gè)周期 上升沿 運(yùn)行一次,這主要是由附屬于 ALU 的輸入輸出寄存器以及在 ALU 輸入處插入旁路乘法器來(lái)決定的。 use 。 data,accum: in std_logic_vector(7 downto 0)。 architecture behave of alu is signal alu_out_latch: std_logic_vector(7 downto 0)。 constant AN_D: std_logic_vector(2 downto 0):=011。 constant JMP: std_logic_vector(2 downto 0):=111。039。event and alu_clk=39。 when ADD=alu_out_latch=data+accum。 when STO=alu_out_latch=accum。 end if。 在仿真過(guò)程中,假設(shè)操作碼依次為上述 8 種操作碼。 opcode 不同的值代表不同的操作 。累加器的數(shù)據(jù)只有在需要往RAM 區(qū)或端口寫時(shí)才允許輸出,否則應(yīng)呈現(xiàn)高阻態(tài),以允許其它部件使用數(shù)據(jù)總線。 數(shù)據(jù)控制電路源程序如下: library ieee。 data: out std_logic_vector(7 downto 0))。 else ZZZZZZZZ。每個(gè)指令周期的前 4 個(gè)時(shí)鐘周期用于從 ROM 中讀取指令,輸出 PC 地址。 use 。 end addr_mux。 end behave。 圖 311 地址多路器 圖 312 地址多路 器 仿真波形 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 16 復(fù)位后,指令指針為零,即每次 CPU 重新啟動(dòng)將從 ROM 的零地址開(kāi)始讀取指令并執(zhí)行。 程序計(jì)數(shù)器源程序如下: library ieee。 ir_addr: in std_logic_vector(12 downto 0)。 begin process(clk) begin if clk39。139。 elsif ena=39。039。 圖 313 程序計(jì)數(shù)器 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 17 end process。 rst 為高電平時(shí)輸出 清 0。 指令周期是由 8 個(gè)時(shí)鐘周期組成,每個(gè)時(shí)鐘周期都要完成固定的操作。 (3) 第 3 個(gè)時(shí)鐘 S2,空操作。 圖 316 狀態(tài)控制器狀態(tài)轉(zhuǎn)換圖 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 19 (5)第 5 個(gè)時(shí)鐘 S4,若操作符為 AND、 ADD、 XOR 或 LDA,讀相應(yīng)地址的數(shù)據(jù);若為 JMP,將目的地址送給程序 計(jì)數(shù)器;若為 STO,輸出累加器數(shù)據(jù)。 在實(shí)體編寫過(guò)程中,首先定義 8 個(gè)狀態(tài)為 S0~S7,然后定義 8 個(gè)指令代碼 為常量。 use 。 architecture behave of mach_ctr is begin process(fetch) begin if fetch39。139。139。 end behave。 opcode: in std_logic_vector(2 downto 0)。 signal state: state_type。 constant AN_D: std_logic_vector(2 downto 0):=011。 constant JMP: std_logic_vector(2 downto 0):=111。then if ena=39。039。039。039。039。139。039。139。139。039。 acc_ena=39。 rd=39。 ir_ena=39。 halt=39。039。039。039。039。 when s3=if (opcode=HLT) then pc_clk=39。 pc_ena=39。 wr=39。 datactl_ena=39。 else pc_clk=39。 pc_ena=39。 wr=39。 datactl_ena=39。 end if。 acc_ena=39。 rd=39。 ir_ena=39。 halt=39。 acc_ena=39。 rd=39。 ir_ena=39。 halt=39。 acc_ena=39。 rd=39。 ir_ena=39。halt=39。 acc_ena=39。 rd=39。 ir_ena=39。 halt=39。 when s5 =if (opcode=ADD or opcode=AN_D or opcode=XO_R or opcode=LDA) then 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 22 pc_clk=39。pc_ena=39。 wr=39。 datactl_ena=39。 elsif(opcode=SKZ and zero=39。 acc_ena=39。 rd=39。 ir_ena=39。 halt=39。 acc_ena=39。rd=39。 ir_ena=39。 halt=39。 acc_ena=39。 rd=39。ir_ena=39。 halt=39。 acc_ena=39。 rd=39。ir_ena=39。 halt=39。 when s6=pc_clk=39。 pc_ena=39。 wr=39。 datactl_ena=39。 state=s7。139。039。039。039。039。039。039。039。 state=s0。 end process。 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 23 package mypack is ponent mach_ctr port(fetch,rst: in std_logic。 opcode: in std_logic_vector(2 downto 0)。 library ieee。 opcode: in std_logic_vector(2 downto 0)。 begin Ul:mach_ctr port map(fetch,rst,ena_b)。rst 回到低電平后,接著到來(lái)的 fetch的上升沿啟動(dòng)狀態(tài)控制器工作。第三個(gè)時(shí)鐘時(shí),操作符不為 HLT 所以程序計(jì)數(shù)器計(jì)數(shù),指向下一個(gè)指令。第七個(gè)時(shí)鐘,判斷累加器值不為 0,程序計(jì)數(shù)器保持不變。 定義數(shù)據(jù)包 源 程序如下 : library ieee。 clk1, fetch: buffer std_logic。 data: in std_logic_vector(7 downto 0)。 ponent acc port(clk1, rst, ena: in std_logic。 ponent alu port(alu_clk: in std_logic。 alu_out: out std_logic_vector(7 downto 0))。 pc_addr: out std_logic_vector(12 d
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1