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

正文內(nèi)容

基于vhdl語言的8位risc-cpu的設(shè)計(jì)答辯(更新版)

2026-01-12 21:37上一頁面

下一頁面
  

【正文】 ponent pc port(clk, rst, ena: in std_logic。 accum: out std_logic_vector(7 downto 0))。 end ponent。圖 313 狀態(tài)控制 器 仿真 波形 第四章 RISCCPU的綜合及操作時(shí)序 25 第四章 RISCCPU的綜合及操作時(shí)序 RISCCPU 各模塊綜合 為了對所設(shè)計(jì)的 RISC_CPU 模型進(jìn)行驗(yàn)證,需要把 RISC_CPU 包裝在一個(gè)模塊下,這樣其內(nèi)部連線就隱蔽起來,從系統(tǒng)的角度看就顯得簡潔,見下圖: 模塊各引腳定義如下: CLK 為時(shí)鐘信號(hào)輸入端口, RST 為復(fù)位輸入端口,DATA 為數(shù)據(jù)輸入輸出端口, RD、 WR 分別為讀寫信號(hào)輸出端口, HALT 為停機(jī)輸出端口, ADDR 為地址輸出端口。在第 1個(gè)時(shí)鐘周期程序計(jì)數(shù)器開始計(jì)數(shù),故 pc_clk 為 1。 end state_contrl。 end ponent。 狀態(tài)控制器源程序如下: library ieee。039。039。039。039。139。 ir_ena=39。 acc_ena=39。 datactl_ena=39。 pc_ena=39。 datactl_ena=39。 pc_ena=39。 datactl_ena=39。 pc_ena=39。 datactl_ena=39。 pc_ena=39。 halt=39。 rd=39。 end if。 wr=39。 else pc_clk=39。 wr=39。 elsif opcode=STO then pc_clk=39。 wr=39。 elsif (opcode=ADD or opcode=AN_D or opcode=XO_R or opcode=LDA) then pc_clk=39。 wr=39。 when s4=if (opcode=JMP) then pc_clk=39。 ir_ena=39。 acc_ena=39。 ir_ena=39。 acc_ena=39。039。039。 datactl_ena=39。 pc_ena=39。039。039。039。039。 then state=s0。 constant LDA: std_logic_vector(2 downto 0):=101。 end state_machine。 end if。139。 因 AND 和 XOR 指令為 VHDL 關(guān)鍵字,故用 AN_D 和 XO_R 代替。若操作符為 HLT,則輸出信號(hào) HLT 為高。 狀態(tài)機(jī)控制器接受復(fù)位信號(hào) RST,當(dāng) RST 有效時(shí)通過信號(hào) ENA 使其為 0,輸入到狀態(tài)機(jī)中停止?fàn)顟B(tài)機(jī)的工作。 end if。039。 end pc。如果正執(zhí)行的指令是跳轉(zhuǎn)語句,這時(shí) CPU 狀態(tài)控制器將會(huì)輸出 PC_ENA 信號(hào),通過 LOAD 口進(jìn)入程序計(jì)數(shù)器。139。地址的選擇輸出信號(hào)由時(shí)鐘信號(hào)的 8 分頻信號(hào) FETCH 提供,其上升沿到來時(shí)輸出 PC 地址,其他時(shí)候輸出數(shù)據(jù)或端口地址。 architecture behave of datactrl is begin data=alu_out when data_ena=39。而此控制信號(hào)的啟、停,則由 CPU 狀態(tài)控制器輸出的各信號(hào)控制決定。 仿真波形下圖所示: alu_clk 為時(shí)鐘信號(hào)輸入端口, zero 為判 accum 是否為零的輸出端口。 when others=alu_out_latch=XXXXXXXX。then 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 13 case temp is when HLT=alu_out_latch=accum。139。 constant SKZ: std_logic_vector(2 downto 0):=001。 entity alu is port(alu_clk: in std_logic。 end art。139。 entity acc is port(clk1,rst,ena:in std_logic。 end behave。 end case。 圖 33 指令寄存器 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 9 state:=39。then opc_iraddrs=(others=39。 architecture behave of ir is signal opc_iraddrs: std_logic_vector(15 downto 0)。 復(fù)位后,指令寄存器被清為零。 每條指令為 2 個(gè)字節(jié),即 16 位。 end behave。 end if。139。 architecture behave of clkgen is signal clk2: std_logic:=39。 時(shí)鐘發(fā)生器 源程序如下: library ieee。因此它必須具有以下基本功能: (1) 取指令:當(dāng)程序已在存儲(chǔ)器中時(shí),首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令地址及控制信號(hào)。 算術(shù)邏輯單元是專門用來處理各種運(yùn)算的數(shù)據(jù)信息的,它可以進(jìn)行加、減、乘、除算術(shù)運(yùn)算和與、或、非、異或等邏輯運(yùn)算。在取新指令時(shí),用程序計(jì)數(shù)器的值作為存儲(chǔ)器地址;在執(zhí)行指令時(shí),用指令中的地址部分作為存儲(chǔ)器地址。 本設(shè)計(jì)的主要內(nèi)容 本文對 RISCCPU 的架構(gòu)進(jìn)行了探討,介紹了如何設(shè)計(jì) RISCCPU,并且立足于八位的 RISCCPU 設(shè) 計(jì)實(shí)例,應(yīng)用 硬件描述語言 VHDL 語言實(shí)現(xiàn) 8 位簡化RISCCPU IP 軟核的設(shè)計(jì), 通過對 RISCCPU 結(jié)構(gòu)和指令執(zhí)行 的分析將整個(gè)系統(tǒng)劃分為各個(gè)功能模塊,并闡明各模塊間的接口信號(hào), 給出了每個(gè)模塊內(nèi)部設(shè)計(jì)實(shí)現(xiàn)的詳細(xì)敘述, 最后介紹對設(shè)計(jì)的綜合和驗(yàn)證工作,給出了仿真驗(yàn)證數(shù)據(jù)以及時(shí)序圖。早在上個(gè)世紀(jì) 60 年代,計(jì)算機(jī)科學(xué)家們發(fā)現(xiàn),計(jì)算機(jī)中 80%的任務(wù)只是動(dòng)用了大約20%的指令,而剩下 20%的任務(wù)才有機(jī)會(huì)使用到其他 80%的指令。 RISC 即精簡指令集計(jì)算機(jī) (Reduced Instruction Set Computer)的縮寫。本文對 RISCCPU 的架構(gòu)進(jìn)行了分析,并使用 VHDL語言設(shè)計(jì)了 8 位 RISCCPU IP 軟核。 設(shè)計(jì)仿真 結(jié)果表明,該 8 位 RISCCPU 能夠完成既定的任務(wù)指標(biāo),而且在運(yùn)行效率上有一定程度改善。 RISCCPU的 發(fā)展現(xiàn)狀 IBM 公司在 1975 年成功開發(fā)出第一款 RISC 處理器,從此 RISC 架構(gòu)開始走進(jìn)超級(jí)計(jì)算機(jī)中。 本課題的現(xiàn)實(shí)意義 本課題的設(shè)計(jì)具有重要的意義: (1) 從 IP 設(shè)計(jì)技術(shù)層面看,本課題按照自頂向下 (TopDown)的設(shè)計(jì)方法,從系統(tǒng)級(jí)結(jié)構(gòu)和模塊劃分到硬件描述、綜合、仿真燈,研究了 Altera 公司的MAX+plusII 工具的使用,掌握了 IP 正向設(shè)計(jì)的基本方法,積累了寶貴經(jīng)驗(yàn)。與之相對應(yīng)的硬件結(jié)構(gòu)也分為三部分:存儲(chǔ)器、數(shù)據(jù)通路和控制器。實(shí)際上,累加器也是寄存器,不過,它有特殊性,即許多指令執(zhí)行過程以累加器為中心。 對圖 21 中的結(jié)構(gòu)進(jìn)行細(xì)化,可以得到一個(gè)簡單的架構(gòu),如 下 圖所示。 (3) 執(zhí)行指令:根據(jù)分 析指令時(shí)產(chǎn)生的 “操作命令 ”形成相應(yīng)的操作控制信號(hào)序列,通過運(yùn)算器,存儲(chǔ)器及輸入 /輸出設(shè)備的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對運(yùn)算結(jié)果的處理以及下條指令地址的形成。 clk1: buffer std_logic。139。 end process。event and clk4=39。如圖 33,指令寄存器的觸發(fā)時(shí)鐘是 CLK1,在 CLK1 的上升沿觸發(fā)下,寄存器將數(shù)據(jù)總線送來的指令存入高8 位或低 8 位寄存器中。先取高 8 位,后取低 8 位。 entity ir is port(clk1, rst, ena: in std_logic。 begin if(clk139。 elsif ena=39。139。 end if。 累加器 累加器 Accumulator 用于存放當(dāng)前的結(jié)果,它也是雙目運(yùn)算其中的一個(gè)數(shù)據(jù)來源,同時(shí)累加器還用來存放 算術(shù)運(yùn)算指令的結(jié)果,如圖 35 所示。 end acc。139。 算術(shù)邏輯單元 根據(jù)輸入的 8 種不同操作碼分別實(shí)現(xiàn)相應(yīng)的加、與、異或、跳轉(zhuǎn)等 8 種基本操作運(yùn)算 , 利用這幾種基本運(yùn)算可以實(shí)現(xiàn)很多種其它運(yùn)算以及邏輯判斷等操作。 zero: out std_logic。 constant XO_R: std_logic_vector(2 downto 0):=100。 process(alu_clk) variable temp:std_logic_vector(2 downto 0)。 when AN_D=alu_out_latch=data and accum。 end process。 alu_out 中的 06 代表 5(轉(zhuǎn)化為二進(jìn)制 =101)異或 3(轉(zhuǎn)化為二進(jìn)制 =011)得 6(二進(jìn)制 =110),而其他數(shù)值均正確反映不同操作碼下 的運(yùn)算結(jié)果 。 use 。 end behave。 entity addr_mux is port(fetch:in std_logic。 當(dāng) fetch=0 時(shí) addr 輸出 ir_addr 的值 ,當(dāng) fetch=1 時(shí) addr 輸出 pc_addr 的值。 use 。event and clk=39。139。 pc_addr=pc_addr_latch。 狀態(tài)轉(zhuǎn)換如下圖: 圖 314 程序計(jì)數(shù)電路仿真波形 圖 315 狀態(tài)控制器 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 18 (1) 第 1 個(gè)時(shí)鐘 S0, CPU 狀態(tài)控制器的輸出: RD 和 IR_ENA 為高電平,其 余均為低電平。 (6) 第 6 個(gè)時(shí)鐘 S5,若操作符為 AND、 ADD 或 XOR, 算術(shù)邏輯單元 就進(jìn)行相應(yīng)的運(yùn)算;若為 LDA,就把數(shù)據(jù)通過 算術(shù)邏輯單元 送給累加器;若為 SKZ,先判斷累加器的值是否為 0,如果為 0, PC 就增 1,否則保持原值;若為 JMP,鎖存目的地址;若為 STO,將數(shù)據(jù)寫入地址處。 entity mach_ctr is port(fetch,rst: in std_logic。then ena=39。 狀態(tài)機(jī)源程序如下: library ieee。 constant HLT: std_logic_vector(2 downto 0):=000。 begin process(clk1) begin if clk139。 acc_ena=39。 ir_ena=39。then case state is 第三章 八位 RISCCPU各模塊設(shè)計(jì)與仿真 21 when s0=pc_clk=39。 wr=39。 state=s1。139。039。 rd=39。 halt=39。039。039。039。039。039。039。039。039。039。039。039。039。039。039。139。039。039。039。039。039。039。039。039。039。039。acc_ena=39。 ir_ena=39。 acc_ena=39。 ir_ena=39。 end case。 ena: out std_logic)。 use 。 U2:state_machine port map (clk1,ena_b, zero, opcode, pc_clk, acc_ena, pc_ena, rd, wr, ir_ena, halt, datactl_ena)。第四個(gè)時(shí)鐘, rd 為 1,讀取相應(yīng)地址的數(shù)據(jù)。 use 。 opcode: out std_logic_vector(2 downto 0)。 opcode: in std_logic_vector(2 downto 0)。 end ponent。 end ponent。 use 。 signal alu_out_b,accum_b:std_logic_vector(7 downto 0)。 U5:state_contrl port map(clk1_b, zero_b, fetch_b, rst, opcode_b, rd, wr, pc_clk_b, acc_ena_b, pc_ena_b, ir_ena_b, halt, datactl_ena_b)。 系統(tǒng)復(fù)位啟動(dòng)波形如圖 43 所示: RISCCPU 的復(fù)位和啟動(dòng)操作是通過 RST 引腳的信號(hào)觸發(fā)執(zhí)行的。圖 43 CPU 復(fù)位、啟動(dòng)操作時(shí)序 結(jié) 論 30 結(jié) 論 本設(shè)計(jì)應(yīng)用 VHDL 語言完成 8 位 RISCCPU 的基本功能單元設(shè)計(jì),最終用MAX+PLUSⅡ 軟件完成單元仿真和綜合仿真,設(shè)計(jì)表明該 RISCCPU 設(shè)計(jì)的方法,在理論上是完全可行的。參考文獻(xiàn) 31
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1