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

正文內(nèi)容

基于vhdl語言的risc-cpu系統(tǒng)設計(參考版)

2024-11-16 15:01本頁面
  

【正文】 instr_addr: in std_logic_vector(12 downto 。 end ponent。 zero: out std_logic。 opcode: in std_logic_vector(2 downto 0)。 end ponent。 d: in std_logic_vector(7 downto 0)。 end ponent。 opcode: out std_logic_vector(2 downto 0)。 ponent reg port(clk, reset, ena: in std_logic。 alu_clk: out std_logic)。 package mypack is 41 CPU 引腳圖 第四 章 RISCCPU的組合及操作時序 35 ponent clock port(clk: in std_logic。 use 。 定義數(shù)據(jù)包程序如下。 在編寫總程序時,首先定義一個數(shù)據(jù)包,將所有的功能模塊:時鐘電路、累加器、算術邏輯運算單元、數(shù)據(jù)控制電路、指令寄存器、狀態(tài)控制器、程序計數(shù)器和地址多路器,應用 COMPONENT 語句進行元件例化。 程序綜合后形成 CPU 外觀如圖 41 所示。若采用 VHDL 語 言組合則不必考慮其連線等諸多問題。圖 318 地址多路 電路仿真波形 第四 章 RISCCPU的組合及操作時序 34 第四章 RISCCPU的綜 合及操作時序 RISCCPU的 綜 合 在將 CPU 各模塊進行組合時,既可以采用原理圖輸入法,也可以應用VHDL 代碼實現(xiàn)。 在圖 318 的仿真波形圖中,當 clk8 為 1 時, address 輸出 pc_out 的值,當 clk8 為 0 時, address 輸出 str_addr 的值。 else instr_addr。 architecture behave of addr_mux is begin address=pc_out when clk8=39。 address: out std_logic_vector(12 downto 0))。 entity addr_mux is port(clk8:in std_logic。 地址多路器源程序如下: library ieee。地址的選擇控制信號由時鐘信號 clk 的 8 分頻信號 clk8 提供。 地址多路器 地址多路器用于選擇輸出的地址是 PC 地址還是數(shù)據(jù) /端口地址。 ena 為高電平則 pc_out 輸出 instr_addr 的值。 在波形圖 316 中, reset 為高電平時各輸出為 0。 pc_out=pc_out_latch。 end if。 then pc_out_latch=pc_out_latch+1。 elsif ena=39。139。)。then pc_out_latch=(others=39。then if reset=39。event and clk=39。 architecture behave of pc is signal pc_out_latch: std_logic_vector(12 downto 0)。 pc_out: out std_logic_vector(12 downto 0))。 entity pc is port(clk, reset, ena: in std_logic。 use 。程序中采用鎖存器來鎖存 PC 地址。如果正執(zhí)行的指令是跳轉語句,這時 CPU 狀態(tài)控制器將會使pc_ ena 信號輸出有效,通過程序計數(shù)器 PC 的 ena 口控制程序計數(shù)器 ((PC)裝入目標地址 (instr_addr),這時 pc_out 不是增加 2,而是保持原值不變。 CPU 每次啟動時,從 ROM 的零地址開始讀取指令并執(zhí)行。 程序的執(zhí)行有兩種情況,一種是順序執(zhí)行,另一種是改變順 序執(zhí)行,即跳轉執(zhí)行。 圖 314 數(shù)據(jù)控制電路仿真波形 在此波形圖 314 中,驗證的是當 ena 為 0 時, data 輸出 alu_out 的值,當 ena 為 1 時, data 輸出 zzzzzzzz 。 else ZZZZZZZZ。 圖 314 數(shù)據(jù)控制電路 第三 章 八位 RISCCPU各摸塊設計及仿真 30 architecture behave of datactrl is begin data=alu_out when ena=39。 data: out std_logic_vector(7 downto 0))。 entity datactrl is port(ena: in std_logic。 數(shù)據(jù)控制電路源程序如下: library ieee。數(shù)據(jù)控制電路何時輸出累加器的數(shù)據(jù)則由狀態(tài)控制電路輸出的控制信號 datactrl_ena 通過 ena 腳決定。所以任何部件往總線上輸出數(shù)據(jù)時,都需要一個控制信號。一般狀態(tài)下累加器輸出端呈現(xiàn)高阻狀態(tài),只有往 RAM 區(qū)或端口寫數(shù)據(jù)時,才允許累加器的數(shù)據(jù)輸出。無論在進行何種操作,操作所需的數(shù)據(jù)都經(jīng)過數(shù)據(jù)總線進行傳送。故各信號輸出為 0。第六個時鐘,空操作,所有輸出為 0。第四個時鐘, rd 為 1,讀圖 313 狀態(tài)控制電路波形圖 第三 章 八位 RISCCPU各摸塊設計及仿真 29 取相應地址的數(shù)據(jù)。第二個時鐘周期各信號輸入為 0。這里由于 opcode 為 2,即執(zhí)行 ADD 指令,所以在第 0、 1 個時鐘周期, rd 為 1, reg_ena 為 1。 指令 NOP JZ ADD ANL XRL MOV MEM AJMP 代碼 000 001 010 011 100 101 110 111 在此仿真波形圖中, 復位引腳 reset 持續(xù)兩個 時鐘 周期 高電平, 啟動電路 復位 。 在實體編寫過程中,首先定義 8 個狀態(tài)為 S0~S7,然后定義 8 個指令代碼為常量。 end process。 end if。 state=s0。039。039。039。039。039。039。039。039。039。039。039。039。039。039。039。139。139。 state=s7。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 when s6 = pc_clk=39。 end if。 idle=39。 datactrl_ena=39。reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 else pc_clk=39。 idle=39。 datactrl_ena=39。reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 elsif opcode=MEM then pc_clk=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。rd=39。 pc_ena=39。acc_ena=39。 elsif opcode=AJMP then pc_clk=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 第三 章 八位 RISCCPU各摸塊設計及仿真 27 wr=39。 rd=39。 pc_ena=39。acc_ena=39。)then pc_clk=39。 elsif(opcode=JZ and zero=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。pc_ena=39。 acc_ena=39。 when s5 =if (opcode=ADD or opcode=ANL or opcode=XRL or opcode=MOV) then pc_clk=39。 end if。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 else pc_clk=39。idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 elsif opcode=MEM then pc_clk=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 elsif (opcode=ADD or opcode=ANL or opcode=XRL or opcode=MOV) then pc_clk=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。acc_ena=39。 when s4=if (opcode=AJMP) then pc_clk=39。 第三 章 八位 RISCCPU各摸塊設計及仿真 26 end if。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。acc_ena=39。 else pc_clk=39。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。acc_ena=39。 when s3=if (opcode=NOP) then pc_clk=39。039。039。039。039。039。039。039。039。 state=s2。 idle=39。 datactrl_ena=39。 reg_ena=39。 wr=39。 rd=39。 pc_ena=39。 acc_ena=39。 when s1=pc_clk=39。039。039。139。039。139。039。039。039。139。039。039。039。039。039。039。039。039。 then state=s0。then if ena=39。event and clk=39。 constant AJMP: std_logic_vector(2 downto 0):=111。 constant MOV: std_logic_vector(2 downto 0):=101。 constant ANL: std_logic_vector(2 downto 0):=011。 constant JZ: std_logic_vector(2 downto 0):=001。 signal state: state_type。 end state_machine。 第三 章 八位 RISCCPU各摸塊設計及仿真 24 opcode: in std_logic_vector(2 downto 0)。 use 。 end rt1。 begin Ul:mach_ctr port map(clk8,reset,ena_b)。 end state_contrl。 opcode: in std_logic_vector(2 downto 0)。 use 。 library ieee。 第三 章 八位 RISCCPU各摸塊設計及仿真 23 end ponent。 opcode: in std_logic_vector(2 downto 0)。 end ponent。 package mypack is ponent mach_ctr port(clk8,reset:
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1