版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 計(jì)算機(jī)學(xué)科實(shí)驗(yàn)基地</b></p><p><b> 實(shí)驗(yàn)報(bào)告</b></p><p> 實(shí)驗(yàn)類(lèi)型:必修 √ 選修 實(shí)驗(yàn)日期:06 年 06 月 28日</p><p> 實(shí)驗(yàn)名稱(chēng):組合邏輯控制器邏輯設(shè)計(jì)</p><p><b> 實(shí)驗(yàn)
2、地點(diǎn):實(shí)驗(yàn)基地</b></p><p> 學(xué)生姓名: 指導(dǎo)教師:</p><p> 班 級(jí): 評(píng)閱教師:</p><p><b> 同組學(xué)生: </b></p><p> 計(jì)算機(jī)科學(xué)與工程學(xué)院制</p>
3、<p><b> 實(shí)驗(yàn)報(bào)告內(nèi)容:</b></p><p><b> 實(shí)驗(yàn)?zāi)康?lt;/b></p><p> 理解組合邏輯控制器的結(jié)構(gòu)及功能,理解微命令信號(hào)和時(shí)序信號(hào)的產(chǎn)生,并學(xué)會(huì)如何采用VHDL語(yǔ)言對(duì)硬件邏輯進(jìn)行描述并下載到FPGA芯片中,從而設(shè)計(jì)完成一個(gè)具有組合邏輯控制器功能的芯片。</p><p>
4、實(shí)驗(yàn)方案與計(jì)劃(對(duì)硬件和項(xiàng)目設(shè)計(jì))</p><p><b> 模塊結(jié)構(gòu)和功能設(shè)計(jì)</b></p><p> 頂層模塊的功能描述:</p><p> 根據(jù)現(xiàn)行指令、控制臺(tái)命令、時(shí)序系統(tǒng)等產(chǎn)生模型機(jī)所需微命令;控制整個(gè)CPU的運(yùn)行。</p><p> 輸入:RST /*復(fù)位信號(hào)</p>&l
5、t;p> CLK /*系統(tǒng)時(shí)鐘;</p><p> IR_CODE /*指令輸入(16 位);</p><p> 輸出:READ_COM /*讀存儲(chǔ)器;</p><p> WRITE_COM /*寫(xiě)存儲(chǔ)器;</p><p> CPR0_P /*寄存器
6、R0的打入脈沖</p><p> CPR1_P /*寄存器R1的打入脈沖</p><p> CPR2_P /*寄存器R2的打入脈沖</p><p> CPR3_P /*寄存器R3的打入脈沖</p><p> CPC_P /*寄存器C的打入脈沖<
7、/p><p> CPD_P /*寄存器D的打入脈沖</p><p> CPPC_P /*寄存器PC的打入脈沖</p><p> CPSP_P /*寄存器SP的打入脈沖</p><p> CPMBR_P /*寄存器MBR的打入脈沖</p><
8、;p> CPMAR_P /*寄存器MAR的打入脈沖</p><p> CPPSW_P /*寄存器PSW的打入脈沖</p><p> SMBR /*寄存器MBR的置入端;</p><p> SIR /*寄存器IR的置入端;</p><p> EMAR /*寄
9、存器MAR的使能端;</p><p> SELA3 /*選擇器A的選擇控制(3位)</p><p> SELB3 /*選擇器B的選擇控制(3位)</p><p> CON_ALU6 /*ALU的功能控制(6位)</p><p> SHIFT_REG2 /*移位器的控制(2位)—左移、右
10、移、直傳(DM);</p><p> 組合邏輯控制器內(nèi)部框圖:</p><p><b> 1、指令譯碼器</b></p><p> 說(shuō)明:由于譯碼后輸出較多,所以按操作類(lèi)型(IR15—IR12),源寄存器號(hào)(IR11—IR9),源尋址方式(IR8--IR6),目的寄存器號(hào)(IR5—IR3),目的尋址方式(IR2—IR0)分為五個(gè)譯碼器。&
11、lt;/p><p> 操作類(lèi)型譯碼 U_OPER_DECOD</p><p> 輸入:IR15,IR14,IR13,IR12</p><p> 輸出:MOV,ADD,SUB,AND,OR,EOR,COM,NEG,INC,DEG,SL,SR,JMP_RST,JSR</p><p><b> 功能描述表:</b><
12、;/p><p> 源寄存器號(hào)譯碼 U_SREG_DECOD</p><p> 輸入:IR11,IR10,IR9</p><p> 輸出:S_R0 , S_R1 , S_R2 , S_R3 , S_SP , S_PSW , S_PC</p><p><b> 功能:</b></p><p>
13、?。?)源寄存器尋址方式譯碼 U_SADDR_DECOD</p><p> 輸入:IR8,IR7,IR6</p><p> 輸出:S_ADDR_REG , S_ADDR_INDI , S_ADDR_DECR , S_ADDR_INCR , S_DOUB_INDI , S_ADDR_VARI , S_ADDR_SKP</p><p><b> 功能:
14、</b></p><p> ?。?)目的寄存器號(hào)譯碼 U_DREG_DECOD</p><p> 輸入:IR5,IR4,IR3</p><p> 輸出:D_R0 , D_R1 , D_R2 , D_R3 , D_SP , D_PSW , D_PC</p><p><b> 功能:</b></p
15、><p> (5)目的寄存器尋址方式譯碼 U_DADDR_DECOD</p><p> 輸入:IR2,IR1,IR0</p><p> 輸出:D_ADDR_REG , D_ADDR_INDI , D_ADDR_DECR , D_ADDR_INCR , D_DOUB_INDI , D_ADDR_VARI , D_ADDR_SKP</p><p&
16、gt;<b> 功能:</b></p><p> 2、時(shí)序發(fā)生器 </p><p> 模塊編號(hào):U_CLOCK_SYSTEM;</p><p> 說(shuō)明:模型機(jī)的時(shí)序系統(tǒng)采取三級(jí)時(shí)序(工作周期,時(shí)鐘周期,工作脈沖)</p><p><b> ?。?)工作周期</b></p>
17、<p> 模型機(jī)設(shè)置六種工作周期狀態(tài),用六個(gè)周期狀態(tài)觸發(fā)器作為它們的標(biāo)志。某一時(shí)期內(nèi)只有其中一個(gè)周期狀態(tài)觸發(fā)器為1,指明CPU現(xiàn)在所處的工作周期狀態(tài),為該階段的工作提供時(shí)間標(biāo)志與依據(jù)。由于暫時(shí)不考慮中斷與DMA,所以只設(shè)置四個(gè)工作周期。</p><p><b> 1)取指周期FT</b></p><p><b> 2)源周期ST</b&
18、gt;</p><p><b> 3)目的周期DT</b></p><p><b> 4)執(zhí)行周期ET</b></p><p> 不同類(lèi)型指令所需的工作周期可能不同。在每一工作周期結(jié)束前,判斷下一個(gè)周期狀態(tài)是什么,并為此準(zhǔn)備好進(jìn)入該周期的條件,如發(fā)出電位信號(hào)1ST等,到本周期結(jié)束的時(shí)刻,實(shí)現(xiàn)周期狀態(tài)的定時(shí)切換。1FT
19、=FT_SET_1</p><p> ?。?)時(shí)鐘周期(節(jié)拍) U_CLOCK_CIRCLE</p><p> 以主存訪(fǎng)問(wèn)周期所需時(shí)間為時(shí)間周期的寬度。一個(gè)工作周期包含若干節(jié)拍,根據(jù)不同指令的需要,節(jié)拍數(shù)可變。設(shè)計(jì)一個(gè)時(shí)鐘周期計(jì)數(shù)器T,從T=0開(kāi)始進(jìn)入一個(gè)計(jì)數(shù)循環(huán),表示進(jìn)入新的工作周期。如果本工作周期還需延長(zhǎng),則發(fā)T+1,計(jì)數(shù)器T將繼續(xù)計(jì)數(shù),開(kāi)始新的節(jié)拍。如果本工作周期應(yīng)當(dāng)結(jié)束,
20、則發(fā)命令T=0。計(jì)數(shù)器T的狀態(tài)經(jīng)譯碼產(chǎn)生節(jié)拍狀態(tài),如:T0,T1,T2…等,作為分步操作的時(shí)間標(biāo)志。</p><p> 工作脈沖 U_CLOCK_PULSE</p><p> 模型機(jī)在每個(gè)時(shí)鐘周期的末尾發(fā)一個(gè)工作脈沖P,作為各種同步脈沖的來(lái)源。工作脈沖P的前沿作為打入寄存器的定時(shí),標(biāo)志一個(gè)數(shù)據(jù)通路操作的完成。P的后沿作為周期切換的定時(shí),在此時(shí)刻對(duì)時(shí)鐘周期計(jì)數(shù)器T計(jì)數(shù)、打入新的工作周期狀
21、態(tài)。</p><p> 分頻系數(shù)的選取F_CLK:P的周期為訪(fǎng)存所需時(shí)間。</p><p><b> 3、編碼器</b></p><p> ?。?)輸入選擇器A的控制信號(hào)的編碼 U_CODE_SELA</p><p> 輸入:R0_TO_A , R1_TO_A , R2_TO_A , R3_TO_A , C_TO
22、_A , D_TO_A , PC_TO_A , SP_TO_A;</p><p><b> 輸出:SEL_A </b></p><p><b> 功能:</b></p><p> ?。?)輸入選擇器B的控制信號(hào)的編碼 U_CODE_SELB</p><p> 輸入:R0_TO_B , R1_
23、TO_B , R2_TO_B , R3_TO_B , C_TO_B , D_TO_B , PSW_TO_B , MBR_TO_B;</p><p><b> 輸出:SEL_B </b></p><p><b> 功能:</b></p><p> ?。?)ALU的控制信號(hào)編碼 U_CODE_ALU_CON6</p
24、><p> 輸入:A,B,A_ADD_B, A_SUB_B, A_COM,</p><p> B_COM, A_ADD_1, A_SUB_1, A_NEG, </p><p> A_AND_B, A_OR_B, A_EOR_B;</p><p> 輸出:ALU_CON6</p><p><b> 功能:
25、</b></p><p> ALU_CON6=S3S2S1S0 & M & C0</p><p> 4、微操作信號(hào)發(fā)生器 </p><p> ?。?)指令流程圖 (見(jiàn)附件1)</p><p> ?。?)指令操作時(shí)間表(見(jiàn)附件2)</p><p> ?。?)微命令信號(hào)的綜合和化簡(jiǎn)(見(jiàn)附件
26、3)</p><p> 三、實(shí)驗(yàn)過(guò)程理解與描述</p><p> ● 經(jīng)過(guò)整理的數(shù)據(jù)及表格</p><p> 1、設(shè)計(jì)輸入(用MODELSIM 5.6仿真軟件)</p><p><b> 原程序(見(jiàn)附件4)</b></p><p> 2、模塊的功能仿真(用MODELSIM 5.6仿真軟件
27、)</p><p><b> ?。?)輸入信號(hào)激勵(lì)</b></p><p> 設(shè)計(jì)仿真測(cè)試程序TESTBENCH(見(jiàn)附件5)</p><p><b> (2)啟動(dòng)仿真程序</b></p><p> ?。?)輸出結(jié)果(波形圖) : 被測(cè)試的指令I(lǐng)R_CODE=0000001001010010
28、 </p><p> 即MOV (R1),-(R2);</p><p> 3、編譯(用MAX+PLUS2 9.5)</p><p> 目標(biāo)器件為EPF10K10LC84-4</p><p> 編譯后產(chǎn)生一個(gè)SRAM目標(biāo)文件(.sof) </p><p> 4、時(shí)序仿真(用MAX+PLUS2 9.
29、5)</p><p><b> (1)傳播延遲分析</b></p><p> ?。?)時(shí)序邏輯電路性能分析</p><p> ?。?)建立和保持時(shí)間分析</p><p> 5、器件編程(用MAX+PLUS2 9.5)</p><p> 編程電纜是ByteBlaster;</p>
30、<p> 編程文件是編譯后產(chǎn)生一個(gè)SRAM目標(biāo)文件</p><p> 編程器件是EPF10K10LC84-4</p><p> 實(shí)驗(yàn)記錄的分析、討論與結(jié)論</p><p> 從被測(cè)試的指令MOV (R1),-(R2)的仿真波形圖可以看出,F(xiàn)T0,ST0,ST1,ST2,ET0,ET2幾個(gè)時(shí)鐘中所發(fā)的微命令都正確。</p><
31、p><b> 實(shí)驗(yàn)小結(jié)</b></p><p> 本次實(shí)驗(yàn)基本能滿(mǎn)足預(yù)定要求,時(shí)序、邏輯功能正確,文檔健全。</p><p><b> 對(duì)指定問(wèn)題的回答</b></p><p> ● 需要學(xué)生回答的問(wèn)題</p><p> 工作脈沖如何產(chǎn)生?簡(jiǎn)述工作脈沖的作用。</p>
32、<p> 答:工作脈沖從系統(tǒng)時(shí)鐘分頻得到,分頻系數(shù)由訪(fǎng)存周期決定;工作脈沖的前沿作為打入寄存器的定時(shí),其后沿作為周期切換的定時(shí),在此刻對(duì)時(shí)鐘周期計(jì)數(shù)器T計(jì)數(shù)、打入新的工作周期狀態(tài)。</p><p> ● 實(shí)驗(yàn)前對(duì)學(xué)生的特殊要求</p><p> 深刻理解組合邏輯控制器結(jié)構(gòu)功能,熟悉VHDL語(yǔ)言,能熟練運(yùn)用相關(guān)開(kāi)發(fā)工具。</p><p><b&g
33、t; 對(duì)實(shí)驗(yàn)的評(píng)價(jià)和建議</b></p><p> 本實(shí)驗(yàn)?zāi)茏寣W(xué)生加深對(duì)組合邏輯控制器組織結(jié)構(gòu)及功能的理解,以及學(xué)會(huì)如何在具體的應(yīng)用環(huán)境中綜合運(yùn)用VHDL語(yǔ)言進(jìn)行硬件描述及功能模擬,但所描述的對(duì)象結(jié)構(gòu)簡(jiǎn)化無(wú)實(shí)際應(yīng)用意義,建議增加實(shí)驗(yàn)的實(shí)際應(yīng)用性。</p><p><b> 實(shí)驗(yàn)附件</b></p><p><b>
34、 有關(guān)程序</b></p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p>
35、<p> entity cpu_control is</p><p><b> Port ( </b></p><p> ir_code : in std_logic_vector(15 downto 0);</p><p> pulse : in std_logic;</p><p&g
36、t; reset : in std_logic; --reset clock pulse </p><p> cppsw_p : out std_logic;</p><p> sela3 : out std_logic_vector(2 downto 0);</p><p> selb3 : ou
37、t std_logic_vector(2 downto 0);</p><p> con_alu6 : out std_logic_vector(5 downto 0);</p><p> shift_reg2 : out std_logic_vector(1 downto 0);</p><p> read_com: out std_logic;&l
38、t;/p><p> write_com: out std_logic;</p><p> smbr : out std_logic;</p><p> sir : out std_logic;</p><p> emar : out std_logic;</p><p> cpmbr_p
39、 : out std_logic;</p><p> cpmar_p : out std_logic; </p><p> cpr0_p: out std_logic;</p><p> cpr1_p: out std_logic;</p><p> cpr2_p: out std_logic;</p>
40、<p> cpr3_p: out std_logic;</p><p> cpc_p : out std_logic;</p><p> cpd_p : out std_logic;</p><p> cppc_p: out std_logic;</p><p> cpsp_p: out std_l
41、ogic;</p><p> int_en : out std_logic;---------------------------------------------------------</p><p> intr : in std_logic; --------------------------------------------------------- &
42、lt;/p><p> inta : out std_logic;---------------------------------------------------------</p><p> psw_flag: in std_logic_vector(5 downto 0);</p><p> inta_it3 : out std_logic
43、 </p><p><b> );</b></p><p> end cpu_control;</p><p> architecture cpu_control_arch of cpu_control is</p><p> component oper_decoder ---------------
44、------------------------------------------------</p><p><b> Port (</b></p><p> ir15_12 : in std_logic_vector(3 downto 0);</p><p> op_mov :out std_logic;</p>&l
45、t;p> op_add :out std_logic;</p><p> op_sub :out std_logic;</p><p> op_and :out std_logic;</p><p> oP_or :out std_logic;</p><p> op_eor :out std_logic;</p>
46、;<p> op_com :out std_logic;</p><p> op_neg :out std_logic;</p><p> op_inc :out std_logic;</p><p> op_dec :out std_logic;</p><p> op_sl :out std_logic;<
47、/p><p> op_sr :out std_logic;</p><p> op_jmp_rst :out std_logic;</p><p> op_jsr :out std_logic;</p><p> op_sti :out std_logic;</p><p> op_cli: out std
48、_logic);</p><p> end component;</p><p> component code_shift </p><p> Port ( dm : in std_logic;</p><p> shift_sl : in std_logic;</p><p> shift_sr : in
49、 std_logic;</p><p> shift_reg2 : out std_logic_vector(1 downto 0));</p><p> end component;</p><p> component d_reg_decod </p><p><b> Port ( </b></p&g
50、t;<p> ir5_3 :in std_logic_vector(2 downto 0);</p><p> d_r0 :out std_logic;</p><p> d_r1 :out std_logic;</p><p> d_r2 :out std_logic;</p><p> d_r3 :
51、out std_logic;</p><p> d_sp :out std_logic;</p><p> d_psw :out std_logic;</p><p> d_pc :out std_logic;</p><p> d_tmp :out std_logic);</p><p> en
52、d component;</p><p> component daddr_decod </p><p><b> Port ( </b></p><p> ir2_0 :in std_logic_vector(2 downto 0);</p><p> d_addr_reg :out std_logic;
53、</p><p> d_addr_indi :out std_logic;</p><p> d_addr_decr :out std_logic;</p><p> d_addr_incr :out std_logic;</p><p> d_doub_indi :out std_logic;</p>
54、<p> d_addr_vari :out std_logic;</p><p> d_addr_skp :out std_logic;</p><p> d_addr_tmp :out std_logic);</p><p> end component;</p><p> component s_reg
55、_decod </p><p><b> Port ( </b></p><p> ir11_9 :in std_logic_vector(2 downto 0);</p><p> s_r0 :out std_logic;</p><p> s_r1 :out std_logic;</p>
56、<p> s_r2 :out std_logic;</p><p> s_r3 :out std_logic;</p><p> s_sp :out std_logic;</p><p> s_psw :out std_logic;</p><p> s_pc :out std_logic;</p
57、><p> s_tmp :out std_logic);</p><p> end component;</p><p> component saddr_decod </p><p><b> Port ( </b></p><p> ir8_6 :in std_logic_vector
58、(2 downto 0);</p><p> s_addr_reg :out std_logic;</p><p> s_addr_indi :out std_logic;</p><p> s_addr_decr :out std_logic;</p><p> s_addr_incr :out std_logic
59、;</p><p> s_doub_indi :out std_logic;</p><p> s_addr_vari :out std_logic;</p><p> s_addr_skp :out std_logic;</p><p> s_addr_tmp :out std_logic);</p>
60、<p> end component;</p><p> component code_selb </p><p><b> Port (</b></p><p> r0_to_b :in std_logic;</p><p> r1_to_b :in std_logic;</p>
61、<p> r2_to_b :in std_logic;</p><p> r3_to_b :in std_logic;</p><p> C_to_b :in std_logic;</p><p> D_to_b :in std_logic;</p><p> psw_to_b :in std_logic; <
62、/p><p> mbr_to_b :in std_logic; </p><p> sel_b :out std_logic_vector(2 downto 0) );</p><p> end component;</p><p> component code_sela </p><p><b>
63、 Port ( </b></p><p> r0_to_a :in std_logic;</p><p> r1_to_a :in std_logic;</p><p> r2_to_a :in std_logic;</p><p> r3_to_a :in std_logic;</p><p>
64、 C_to_a :in std_logic;</p><p> D_to_a :in std_logic;</p><p> sp_to_a :in std_logic; </p><p> pc_to_a :in std_logic; </p><p> sel_a :out std_logic_vector(2 dow
65、nto 0)</p><p><b> );</b></p><p> end component;</p><p> component code_alu </p><p><b> Port ( </b></p><p> op_a:in std_logic;&
66、lt;/p><p> op_b:in std_logic;</p><p> a_add_b:in std_logic;</p><p> a_sub_b:in std_logic;</p><p> a_com:in std_logic;</p><p> b_com:in std_logic;</p&g
67、t;<p> a_add_1:in std_logic;</p><p> a_sub_1:in std_logic;</p><p> a_neg:in std_logic;</p><p> a_and_b:in std_logic;</p><p> a_or_b:in std_logic;</p>
68、<p> a_eor_b:in std_logic;</p><p> reset : in std_logic;</p><p> alu_con6:out std_logic_vector(5 downto 0)</p><p><b> );</b></p><p> end componen
69、t;</p><p> signal op_mov : std_logic;</p><p> signal op_add : std_logic;</p><p> signal op_sub : std_logic;</p><p> signal op_and : std_logic;</p><
70、p> signal oP_or : std_logic;</p><p> signal op_eor : std_logic;</p><p> signal op_com : std_logic;</p><p> signal op_neg : std_logic;</p><p> signal op_in
71、c : std_logic;</p><p> signal op_dec : std_logic;</p><p> signal op_sl : std_logic;</p><p> signal op_sr : std_logic;</p><p> signal op_jmp : std_logic;</p
72、><p> signal op_jsr : std_logic;</p><p> signal op_sti : std_logic;</p><p> signal op_cli : std_logic;</p><p> signal s_r0 : std_logic;</p><p> sig
73、nal s_r1 : std_logic;</p><p> signal s_r2 : std_logic;</p><p> signal s_r3 : std_logic;</p><p> signal s_sp : std_logic;</p><p> signal s_psw : std_lo
74、gic;</p><p> signal s_pc : std_logic;</p><p> signal s_tmp : std_logic;</p><p> signal d_r0 : std_logic;</p><p> signal d_r1 : std_logic;</p>&l
75、t;p> signal d_r2 : std_logic;</p><p> signal d_r3 : std_logic;</p><p> signal d_sp : std_logic;</p><p> signal d_psw : std_logic;</p><p> signal d_p
76、c : std_logic;</p><p> signal d_tmp : std_logic;</p><p> signal s_addr_reg : std_logic;</p><p> signal s_addr_indi : std_logic;</p><p> signal s_addr_
77、decr : std_logic;</p><p> signal s_addr_incr : std_logic;</p><p> signal s_doub_indi : std_logic;</p><p> signal s_addr_vari : std_logic;</p><p> signal
78、 s_addr_skp : std_logic;</p><p> signal s_addr_tmp : std_logic;</p><p> signal d_addr_reg : std_logic;</p><p> signal d_addr_indi : std_logic;</p><p>
79、; signal d_addr_decr : std_logic;</p><p> signal d_addr_incr : std_logic;</p><p> signal d_doub_indi : std_logic;</p><p> signal d_addr_vari : std_logic;</p>
80、<p> signal d_addr_skp : std_logic;</p><p> signal d_addr_tmp : std_logic;</p><p> signal r0_to_a : std_logic;</p><p> signal r1_to_a : std_logic;</p>&l
81、t;p> signal r2_to_a : std_logic;</p><p> signal r3_to_a : std_logic;</p><p> signal C_to_a : std_logic;</p><p> signal D_to_a : std_logic;</p><p> signal
82、 sp_to_a : std_logic; </p><p> signal pc_to_a : std_logic;</p><p> signal r0_to_b : std_logic;</p><p> signal r1_to_b : std_logic;</p><p> signal r2_to_b : s
83、td_logic;</p><p> signal r3_to_b : std_logic;</p><p> signal C_to_b : std_logic;</p><p> signal D_to_b : std_logic;</p><p> signal psw_to_b : std_logic; <
84、/p><p> signal mbr_to_b : std_logic; </p><p> signal op_a: std_logic;</p><p> signal op_b: std_logic;</p><p> signal a_add_b: std_logic;</p><p>
85、signal a_sub_b: std_logic;</p><p> signal a_com: std_logic;</p><p> signal a_add_1: std_logic;</p><p> signal a_sub_1: std_logic;</p><p> signal a_neg: std_log
86、ic;</p><p> signal a_and_b: std_logic;</p><p> signal a_or_b: std_logic;</p><p> signal a_eor_b: std_logic;</p><p> signal dm : std_logic;</p>&
87、lt;p> signal shift_sl : std_logic;</p><p> signal shift_sr : std_logic;</p><p> signal dou_oper : std_logic; ---double operator</p><p> signal sin_oper : std
88、_logic; ---single operator</p><p> signal two_oper : std_logic;</p><p> signal zero_oper : std_logic;</p><p> signal zero_temp : std_logic;</p><p> signa
89、l condition : std_logic;</p><p> type state_type is (initial,ft0,st0,st1,st2,st3,st4,dt0,dt1,dt2,dt3,dt4,et0,et1,et2,et3,it0,it1,it2,it3,it4,it5);</p><p> signalpresent_state,next_state : s
90、tate_type;</p><p> signal ft0_to_st0 : std_logic;</p><p> signal ft0_to_dt0 : std_logic;</p><p> signal ft0_to_et0 : std_logic;</p><p> signal st0_t
91、o_st1 : std_logic;</p><p> signal st1_to_st2 : std_logic;</p><p> signal st1_to_dt0 : std_logic;</p><p> signal st1_to_et0 : std_logic;</p><p>
92、signal st2_to_st3 : std_logic;</p><p> signal st2_to_dt0 : std_logic;</p><p> signal st2_to_et0 : std_logic;</p><p> signal st3_to_st4 : std_logic;</p>
93、<p> signal st4_to_dt0 : std_logic;</p><p> signal st4_to_et0 : std_logic;</p><p> signal dt0_to_dt1 : std_logic;</p><p> signal dt0_to_et0 : std_logic
94、;</p><p> signal dt1_to_dt2 : std_logic;</p><p> signal dt1_to_et0 : std_logic;</p><p> signal dt2_to_dt3 : std_logic;</p><p> signal dt2_to_et0
95、 : std_logic;</p><p> signal dt3_to_dt4 : std_logic;</p><p> signal dt3_to_et0 : std_logic;</p><p> signal dt4_to_et0 : std_logic;</p><p> signal
96、 et0_to_et1 : std_logic;</p><p> signal et0_to_et2 : std_logic;</p><p> signal et0_to_ft0 : std_logic;</p><p> signal et1_to_et2 : std_logic;</p><p&
97、gt; signal et1_to_ft0 : std_logic;</p><p> signal et2_to_et3 : std_logic;</p><p> signal et2_to_ft0 : std_logic;</p><p> signal et3_to_ft0 : std_logic;</p&
98、gt;<p> signal et0_to_it0 : std_logic;-----------------------------------------</p><p> signal et1_to_it0 : std_logic;--</p><p> signal et2_to_it0 : std_logic;--</p&g
99、t;<p> signal et3_to_it0 : std_logic;-----------------------------------------</p><p> signal it_enter : std_logic;</p><p><b> begin</b></p><p>
100、zero_temp<='0';</p><p> u_oper_deco: oper_decoder</p><p><b> Port map(</b></p><p> ir15_12 =>ir_code(15 downto 12),</p><p> op_mov =>op
101、_mov,</p><p> op_add =>op_add,</p><p> op_sub =>op_sub,</p><p> op_and =>op_and,</p><p> oP_or =>oP_or,</p><p> op_eor =>op_eor,</p
102、><p> op_com =>op_com,</p><p> op_neg =>op_neg,</p><p> op_inc =>op_inc,</p><p> op_dec =>op_dec,</p><p> op_sl =>op_sl,</p><p
103、> op_sr =>op_sr,</p><p> op_jmp_rst=> op_jmp,</p><p> op_sti=>op_sti,</p><p> op_cli=>op_cli,</p><p> op_jsr =>op_jsr);</p><p> u_
104、dreg_deco: d_reg_decod </p><p> Port map( </p><p> ir5_3=>ir_code(5 downto 3), </p><p> d_r0 =>d_r0, </p><p> d_r1 =>d_r1, </p><p> d_r2 =&g
105、t;d_r2, </p><p> d_r3 =>d_r3,</p><p> d_sp =>d_sp,</p><p> d_psw =>d_psw,</p><p> d_pc =>d_pc,</p><p> d_tmp =>d_tmp);</p>&
106、lt;p> u_daddr_deco: daddr_decod </p><p> Port map( </p><p> ir2_0=>ir_code(2 downto 0),</p><p> d_addr_reg =>d_addr_reg,</p><p> d_addr_indi =>d_addr_
107、indi,</p><p> d_addr_decr =>d_addr_decr,</p><p> d_addr_incr =>d_addr_incr,</p><p> d_doub_indi =>d_doub_indi,</p><p> d_addr_vari =>d_addr_vari,</p&
108、gt;<p> d_addr_skp =>d_addr_skp,</p><p> d_addr_tmp =>d_addr_tmp);</p><p> u_sreg_deco: s_reg_decod </p><p> Port map( </p><p> ir11_9 =>ir_code(
109、11 downto 9),</p><p> s_r0 =>s_r0,</p><p> s_r1 =>s_r1,</p><p> s_r2 =>s_r2,</p><p> s_r3 =>s_r3,</p><p> s_sp =>s_sp,</p>
110、<p> s_psw =>s_psw,</p><p> s_pc =>s_pc,</p><p> s_tmp =>s_tmp);</p><p> u_saddr_deco: saddr_decod </p><p> Port map( </p><p> ir8_6
111、 =>ir_code(8 downto 6),</p><p> s_addr_reg =>s_addr_reg,</p><p> s_addr_indi =>s_addr_indi,</p><p> s_addr_decr =>s_addr_decr,</p><p> s_addr_i
112、ncr =>s_addr_incr,</p><p> s_doub_indi =>s_doub_indi,</p><p> s_addr_vari =>s_addr_vari,</p><p> s_addr_skp =>s_addr_skp,</p><p> s_addr_tmp
113、 =>s_addr_tmp);</p><p> u_code_sel_b: code_selb </p><p><b> Port map(</b></p><p> r0_to_b =>r0_to_b,</p><p> r1_to_b =>r1_to_b,</p><
114、p> r2_to_b =>r2_to_b,</p><p> r3_to_b =>r3_to_b,</p><p> C_to_b =>C_to_b,</p><p> D_to_b =>D_to_b,</p><p> -- psw_to_b =>psw_to_b, ---------
115、---------------------------------------------------</p><p> psw_to_b=>zero_temp,</p><p> mbr_to_b =>mbr_to_b,</p><p> sel_b =>selb3);</p><p> u_code_sel_a
116、: code_sela </p><p> Port map( </p><p> r0_to_a =>r0_to_a,</p><p> r1_to_a =>r1_to_a,</p><p> r2_to_a =>r2_to_a,</p><p> r3_to_a =>r3_to_a
117、,</p><p> C_to_a =>C_to_a,</p><p> D_to_a =>D_to_a,</p><p> sp_to_a =>sp_to_a,</p><p> pc_to_a =>pc_to_a,</p><p> sel_a =>sela3);&l
118、t;/p><p> u_cod_alu: code_alu </p><p> Port map( </p><p> op_a=>op_a,</p><p> op_b=>op_b,</p><p> a_add_b=>a_add_b,</p><p> a_sub_
119、b=>a_sub_b,</p><p> a_com=>a_com,</p><p> -- b_com=>b_com,</p><p> b_com=>zero_temp,</p><p> a_add_1=>a_add_1,</p><p> a_sub_1=>a_s
120、ub_1,</p><p> a_neg=>a_neg,</p><p> a_and_b=>a_and_b,</p><p> a_or_b=>a_or_b,</p><p> a_eor_b=>a_eor_b,</p><p> reset =>reset,</p>
121、;<p> alu_con6=>con_alu6);</p><p> u_cod_sh: code_shift </p><p> Port map( </p><p> dm =>dm,</p><p> shift_sl =>shift_sl,</p><p> s
122、hift_sr =>shift_sr,</p><p> shift_reg2 =>shift_reg2);</p><p> u_pulse: process(pulse)</p><p><b> begin</b></p><p> if pulse'event and pulse=
123、39;0' then </p><p> present_state <= next_state;</p><p><b> end if;</b></p><p> end process;</p><p> u_state: process(present_state,reset,ft0_to_
124、st0,ft0_to_dt0,ft0_to_et0,st0_to_st1,st1_to_st2,</p><p> st1_to_dt0,st1_to_et0,st2_to_st3,st2_to_dt0,st2_to_et0,st3_to_st4,</p><p> st4_to_dt0,st4_to_et0,dt0_to_dt1,dt0_to_et0,dt1_to_dt2,dt1_t
125、o_et0,</p><p> dt2_to_dt3,dt2_to_et0,dt3_to_dt4,dt3_to_et0,dt4_to_et0,et0_to_et1,</p><p> et0_to_et2,et0_to_ft0,et1_to_et2,et1_to_ft0,et2_to_et3,et2_to_ft0,</p><p> et3_to_ft0 ,e
126、t0_to_it0,et1_to_it0,et2_to_it0,et3_to_it0</p><p><b> )</b></p><p><b> begin</b></p><p> case present_state is</p><p> when initial => if
127、 reset = '1' then </p><p> next_state <= ft0;</p><p><b> end if;</b></p><p> int_en <= '1'; ------------------------------------------
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)實(shí)驗(yàn)報(bào)告模板
- 《大學(xué)計(jì)算機(jī)ⅰ》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一
- 《大學(xué)計(jì)算機(jī)ⅰ》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)二
- 計(jì)算機(jī)輔助審計(jì)實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)病毒實(shí)驗(yàn)報(bào)告
- 大學(xué)計(jì)算機(jī)實(shí)驗(yàn)3實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)病毒實(shí)驗(yàn)報(bào)告
- 實(shí)驗(yàn)報(bào)告 交通燈控制器實(shí)驗(yàn)報(bào)告
- 《大學(xué)計(jì)算機(jī)基礎(chǔ)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一
- 大學(xué)計(jì)算機(jī)實(shí)驗(yàn)2-實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)組成原理運(yùn)算器實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)畢業(yè)論文范文畢業(yè)論文計(jì)算機(jī)專(zhuān)業(yè)
- 計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)報(bào)告
- 計(jì)算機(jī)審計(jì)上機(jī)實(shí)驗(yàn)報(bào)告3
- 《大學(xué)計(jì)算機(jī)基礎(chǔ)》實(shí)驗(yàn)報(bào)告模板
- 計(jì)算機(jī)原理與應(yīng)用實(shí)驗(yàn)報(bào)告
- 大學(xué)計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)報(bào)告2
- 計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告
評(píng)論
0/150
提交評(píng)論