(精品)畢業(yè)精品組成原理標準實驗報告(2013年優(yōu)秀畢業(yè)設計)_第1頁
(精品)畢業(yè)精品組成原理標準實驗報告(2013年優(yōu)秀畢業(yè)設計)_第2頁
(精品)畢業(yè)精品組成原理標準實驗報告(2013年優(yōu)秀畢業(yè)設計)_第3頁
(精品)畢業(yè)精品組成原理標準實驗報告(2013年優(yōu)秀畢業(yè)設計)_第4頁
(精品)畢業(yè)精品組成原理標準實驗報告(2013年優(yōu)秀畢業(yè)設計)_第5頁
已閱讀5頁,還剩140頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

江蘇技術師范學院 計算機 學院標 準 實 驗 報 告(實驗)課程名稱 計算機組成原理 計算機科學與工程學院制實 驗 報 告學生姓名:XXX 學 號:XXXXXX 指導教師:馮立平實驗地點:計算機學院104室 實驗時間:200410一、實驗室名稱:計算機學院硬件實驗室 二、實驗項目名稱:存儲器邏輯設計三、實驗學時:8四、實驗原理:通過部件級的實驗設計和調試,了解半導體存儲器的設計過程。五、實驗目的: . 掌握用硬件描述語言設計邏輯部件。 . 掌握存儲器容量的字擴展和位擴展技術。 掌握存儲芯片片選邏輯的設計方法。六、實驗內容:利用ALTERA公司的EPF10K10LC84-4的內部可編程資源,設計一個256X16bit的RAM;要求能隨機寫入和讀出數(shù)據(jù)。已知1個648,1個328,1個168的存儲器,設計1個容量為1128的存儲器,此存儲器的片選信號為CS,低電平有效。r-w:讀/寫允許輸入線,高電平時寫,低電平時讀,8位數(shù)據(jù)輸入線din,8位數(shù)據(jù)輸出線dout,地址線adr(6)adr(0).。寫出存儲空間分配、地址分配與片選邏輯,并簡單說明。存儲空間分配648328168地址分配與片選邏輯芯片容量 芯片地址 片選信號片選邏輯648adr(5)adr(0) CS0 CS0 = 328adr(4)adr(0) CS1 CS1 =A6 168 adr(3)adr(0) CS2 CS2 =A6 A5 (A6 A0對應adr(6)adr(0)總容量為1128,共需7位地址adr(6)adr(0) 對648芯片,將低6位地址adr(5)adr(0)連接到芯片上,余下的高位adr(6)作為片選依據(jù);而328,應將低5位地址adr(4)adr(0)連接到芯片上,余下的adr(6)adr(5)作為片選依據(jù)。而168,應將低4位地址adr(3)adr(0)連接到芯片上,余下的adr(6)adr(5)adr(4) 作為片選依據(jù)。令adr0對應于648的adr接口,adr1對應于328的adr接口,adr2對應于168的adr接口。七、實驗器材(設備、元器件):PC機一臺,EDA教學實驗箱一臺,導線若干。八、實驗步驟:. 介紹實驗開發(fā)平臺和實驗板的使用。. 設計一個256X8bit的RAM。. 用兩個256X8bit的RAM組成一個256X16bit的ARM。. 仿真并驗證。九、實驗數(shù)據(jù)及結果分析:附程序及仿真波形圖:1、ram256x8.vhd文件:LIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE ram_constants IS constant DATA_WIDTH : INTEGER := 8; constant ADDR_WIDTH : INTEGER := 8;END ram_constants; LIBRARY ieee;USE ieee.std_logic_1164.ALL;LIBRARY lpm;USE lpm.lpm_components.ALL;LIBRARY work;USE work.ram_constants.ALL;ENTITY ram256x8 IS PORT( data: IN STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0); address: IN STD_LOGIC_VECTOR (ADDR_WIDTH-1 DOWNTO 0); we, inclock, outclock: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (DATA_WIDTH - 1 DOWNTO 0);END ram256x8;ARCHITECTURE example OF ram256x8 ISBEGIN inst_1: lpm_ram_dq GENERIC MAP (lpm_widthad = ADDR_WIDTH, lpm_width = DATA_WIDTH) PORT MAP (data = data, address = address, we = we, inclock = inclock, outclock = outclock, q = q);END example;2、ram256x16.vhdLIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE ram_constants IS constant DATA_WIDTH : INTEGER := 8; constant ADDR_WIDTH : INTEGER := 8;END ram_constants; LIBRARY ieee;USE ieee.std_logic_1164.ALL;LIBRARY lpm;USE lpm.lpm_components.ALL;LIBRARY work;USE work.ram_constants.ALL;ENTITY ram256x16 IS PORT( data_16: IN STD_LOGIC_VECTOR (15 DOWNTO 0); address: IN STD_LOGIC_VECTOR (7 DOWNTO 0); we, inclock, outclock: IN STD_LOGIC; q_16: OUT STD_LOGIC_VECTOR (15 DOWNTO 0);END ram256x16;architecture ram256x16_arch of ram256x16 iscomponent ram256x8 PORT( data: IN STD_LOGIC_VECTOR (DATA_WIDTH-1 DOWNTO 0); address: IN STD_LOGIC_VECTOR (ADDR_WIDTH-1 DOWNTO 0); we, inclock, outclock: IN STD_LOGIC; q: OUT STD_LOGIC_VECTOR (DATA_WIDTH - 1 DOWNTO 0);END component;beginu_ram16_1:ram256x8port map(data=data_16(15 downto 8),address=address,we=we,inclock=inclock,outclock=outclock,q=q_16(15 downto 8);u_ram16_2:ram256x8port map(data=data_16(7 downto 0),address=address,we=we,inclock=inclock,outclock=outclock,q=q_16(7 downto 0);end ram256x16_arch;configuration ram256x16_config of ram256x16 isfor ram256x16_archend for;end ram256x16_config;3 、功能仿真波形圖十、實驗結論:由波形圖可以看出,組合后的存儲器具有一般存儲器的功能,可以寫入和讀出RAM的數(shù)據(jù),只是采用了時鐘同步打入的方式,但這不影響使用和我們理解存儲器擴展的原理。而且這種方式更加穩(wěn)定可靠。十一、總結及心得體會:對EPF10K10LC84-4芯片的使用有了進一步的了解,更好的掌握了存儲器原理、邏輯結構。十二、對本實驗過程及方法、手段的改進建議:可以改用較大容量的可編程芯片,或者采用其他公司的芯片如:XILINX公司的FPGA。因為它有片選信號,而ALTERA公司的FELX系列芯片沒有片選信號。 報告評分: 指導教師簽字:電子科技大學 計算機 學院標 準 實 驗 報 告(實驗)課程名稱 計算機組成原理 電子科技大學教務處制表電 子 科 技 大 學實 驗 報 告學生姓名:XXX 學 號:XXX XXX 指導教師:馮立平實驗地點:計算機學院104室 實驗時間:2004. 10一、實驗室名稱:計算機學院硬件實驗室 二、實驗項目名稱:運算器邏輯設計三、實驗學時:8四、實驗原理:理解運算器結構及功能,理解各選擇器、算邏部件、移位器的端口及實現(xiàn)邏輯和各部件之間的接口關系,并學會如何利用VHDL對硬件實體邏輯進行描述并進行模塊級、系統(tǒng)級仿真,從而模擬完整的ALU結構和功能。五、實驗目的:1掌握用硬件描述語言設計邏輯部件的方法。2了解運算器的設計過程。3掌握74181芯片的連接方法和分級同時進位技術。4驗證運算器的功能。六、實驗內容:利用ALTERA公司的EPF10K10LC84-4的內部可編程資源,設計一個16 bit的運算器 ;要求該運算器具有加、減算術運算功能和基本邏輯運算功能。模塊編號:U_ALU_16功能:在微命令的控制下對輸入A、B進行算術邏輯運算?;具\算有:A+B、A-B、A、B、A+1、A-1、A與B、A或B、A(B)反COM、A(B)補NEG、左移、右移輸入:R0、R1、R2、R3、C、D、PC、SP /*選擇器A的輸入(16位)R0、R1、R2、R3、C、D、PSW、MBR /*選擇器B的輸入(16位) SELA3 /*選擇器A的選擇控制(3位)SELB3 /*選擇器B的選擇控制(3位)CON_ALU6 /*ALU的功能控制(6位)SHIFT_REG2 /*移位器的控制(2位)左移、右移、直傳(DM)輸出:IN_BUS_16 /*內部數(shù)據(jù)總線(16位)運算結果IN_BUS_16內部框圖:SHIFT_REG2移位寄存器ALU_OUTCON_ALU6ALUALU_INAALU_INBSELB3SELA3選擇器B選擇器AR0、R1、R2、R3、C、D、PC、SPR0、R1、R2、R3、C、D、PSW、MBR1、選擇器A (U_SEL_A)1) 輸入:R0、R1、R2、R3、C、D、PC、SP、SELA3輸出:ALU_INA2) 功能:SELAALU_INA000R0001R1010R2011R3100C101D110PC111SP2、選擇器B (U_SEL_B)1)輸入:R0、R1、R2、R3、C、D、PSW、MBR、SELB3輸出:ALU_INB2) 功能:SELBALU_INB000R0001R1010R2011R3100C101D110PSW111MBR3、移位寄存器 (U_SHIFT_REG)1) 輸入:ALU_OUT、SHIFT_REG22) 輸出:IN_BUS_163) 功能:SHIFT_REG2IN_BUS_16備注00ALU_OUTDM(直傳)01ALU_OUT(14 DOWNTO 0)&0LS(左移)100 &ALU_OUT(15 DOWNTO 1)RS(右移)XXZ高阻4、ALU (U_ALU_4)1) 輸入:ALU_INA 、ALU_INB、CON_ALU62) 輸出:ALU_OUT3) 內部框圖:SN74182P4 G4 C3 P3 G3 C2 P2 G2 C1 P1 G1 1512 118 74 30 ALU_OUTSN74181SN74181SN74181SN74181CON_ALU6(0) 51 51 51 51 1512 118 74 30 CON_ALU6 1512 118 74 30 ALU_INAALU_INB5、SN74181 (U_SN74181) 小組內并行進位(4位)注意Pi、Gi的產生邏輯;1)輸入:A_IN /*四位輸入 B_IN /*四位輸入 CON_ALU6 /*六位輸入 S3S2S1S0MC0 C /*進位2) 輸出:F_OUT /*四位輸出 P_OUT /*A_IN 異或B_IN G_OUT /*A_IN 與 B_IN3) 功能: 工作方式選擇(OP_SEL) S3S2S1S0輸出 F_OUT M=1 邏輯運算M=0 算術運算0000A非A減10001(AB)非AB減10010A非+BAB非減10011邏輯1全10100(A+B)非A加(A+B非)0101B非AB加(A+B非)0110(A異或B)非A加B非0111A+B非A+B非1000A非BA加(A+B)1001A異或BA加B1010BAB非加(A+B)1011A+BA+B1100邏輯001101AB非AB加A1110ABAB非加A1111AA6、SN74182 (U_SN74182) 組間并行進位;1) 輸入:C0、P1、G1、P2、G2、P3、G3、P4、G42) 輸出:C1、C2、C3 3) 功能:C1=G1+P1C0 C2=G2+P2G1+P2P1C0 C3=G3+P3G2+P3P2G1+P3P2P1C七、實驗器材(設備、元器件):PC機一臺,EDA教學實驗箱一臺,導線若干。八、實驗步驟:畫出寄存器級的ALU框圖,標明端口、引腳及其含義。用MAXPLUS建立代碼工程,用VHDL定義并描述各部件及整體功能。模塊級仿真、系統(tǒng)級仿真。模擬合成并驗證。九、實驗數(shù)據(jù)及結果分析:經過整理的數(shù)據(jù)及表格、運算器程序清單及仿真波形:1、選擇器A功能表SELAALU_INA000R0001R1010R2011R3100C101D110PC111SP2、選擇器B功能表SELBALU_INB000R0001R1010R2011R3100C101D110PSW111MBR3、移位寄存器功能表SHIFT_REG2IN_BUS_16備注00ALU_OUTDM(直傳)01ALU_OUT(14 DOWNTO 0)&0LS(左移)100 &ALU_OUT(15 DOWNTO 1)RS(右移)XXZ高阻4、ALU控制信號功能表工作方式選擇(OP_SEL) S3S2S1S0輸出 F_OUT M=1 邏輯運算M=0 算術運算0000A非A減10001(AB)非AB減10010A非+BAB非減10011邏輯1全10100(A+B)非A加(A+B非)0101B非AB加(A+B非)0110(A異或B)非A加B非0111A+B非A+B非1000A非BA加(A+B)1001A異或BA加B1010BAB非加(A+B)1011A+BA+B1100邏輯001101AB非AB加A1110ABAB非加A1111AA(CPU_ALU)-16 bit select and alu and shift library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity cpu_alu is Port ( r0 : in std_logic_vector(15 downto 0); r1 : in std_logic_vector(15 downto 0); r2 : in std_logic_vector(15 downto 0); r3 : in std_logic_vector(15 downto 0); sp : in std_logic_vector(15 downto 0); pc : in std_logic_vector(15 downto 0); psw : in std_logic_vector(15 downto 0); mbr : in std_logic_vector(15 downto 0); sela3 : in std_logic_vector(2 downto 0); selb3 : in std_logic_vector(2 downto 0); con_alu6 : in std_logic_vector(5 downto 0); shift_reg2 : in std_logic_vector(1 downto 0); in_bus_16 : out std_logic_vector(15 downto 0); c : in std_logic_vector(15 downto 0); d : in std_logic_vector(15 downto 0);end cpu_alu;architecture cpu_alu_arch of cpu_alu iscomponent alu_16 Port ( alu_ina : in std_logic_vector(15 downto 0); alu_inb : in std_logic_vector(15 downto 0); con_alu6 : in std_logic_vector(5 downto 0); alu_out : out std_logic_vector(15 downto 0);end component;component alu_select Port ( r0 : in std_logic_vector(15 downto 0); r1 : in std_logic_vector(15 downto 0); r2 : in std_logic_vector(15 downto 0); r3 : in std_logic_vector(15 downto 0); r4 : in std_logic_vector(15 downto 0); r5 : in std_logic_vector(15 downto 0); r6 : in std_logic_vector(15 downto 0); r7 : in std_logic_vector(15 downto 0); r_out : out std_logic_vector(15 downto 0); con : in std_logic_vector(2 downto 0);end component;component M_SHIFT_REG Port ( ALU_OUT:IN STD_LOGIC_VECTOR(15 DOWNTO 0); SHIFT_REG2:IN STD_LOGIC_VECTOR(1 DOWNTO 0); ALU_INBUS_16:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);end component;signal alu_ina,alu_inb,alu_out:std_logic_vector(15 downto 0);beginu_sela:alu_selectport map(r0=r0,r1=r1,r2=r2,r3=r3,r4=c,r5=d,r6=sp,r7=pc,r_out=alu_ina,con=sela3);u_selb:alu_selectport map(r0=r0,r1=r1,r2=r2,r3=r3,r4=c,r5=d,r6=psw,r7=mbr,r_out=alu_inb,con=selb3);u_alu_in_16: alu_16 Port map( alu_ina =alu_ina, alu_inb =alu_inb, con_alu6=con_alu6, alu_out =alu_out);u_shift: M_SHIFT_REG Port map( ALU_OUT=alu_out, SHIFT_REG2=shift_reg2, ALU_INBUS_16=in_bus_16);end cpu_alu_arch;configuration cpu_alu_config of cpu_alu isfor cpu_alu_archend for;end cpu_alu_config;(ALU_16)-16 bit alulibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity alu_16 is Port ( alu_ina : in std_logic_vector(15 downto 0); alu_inb : in std_logic_vector(15 downto 0); con_alu6 : in std_logic_vector(5 downto 0); alu_out : out std_logic_vector(15 downto 0);end alu_16;architecture alu_16_arch of alu_16 iscomponent m_74182port(C0,P1,G1,P2,G2,P3,G3,g4,p4 : in std_logic; C1,C2,C3: out std_logic);end component;component alu_sn74181 port(a_in : in std_logic_vector(3 downto 0);-operand a b_in : in std_logic_vector(3 downto 0);-operand b op_sel : in std_logic_vector(4 downto 0); f_out : out std_logic_vector(3 downto 0);-out value f c_in : in std_logic; p_out : out std_logic; g_out : out std_logic);end component;signal alu_p1,alu_p2,alu_p3,alu_p4,alu_g1,alu_g2,alu_g3,alu_g4:std_logic;signal alu_c0,alu_c1,alu_c2,alu_c3:std_logic;beginu_74181_1:alu_sn74181port map(a_in=alu_ina(3 downto 0),b_in=alu_inb(3 downto 0),op_sel=con_alu6(5 downto 1),f_out=alu_out(3 downto 0),c_in=con_alu6(0),p_out=alu_p1,g_out=alu_g1);u_74181_2:alu_sn74181port map(a_in=alu_ina(7 downto 4),b_in=alu_inb(7 downto 4),op_sel=con_alu6(5 downto 1),f_out=alu_out(7 downto 4),c_in=alu_c1,p_out=alu_p2,g_out=alu_g2);u_74181_3:alu_sn74181port map(a_in=alu_ina(11 downto 8),b_in=alu_inb(11 downto 8),op_sel=con_alu6(5 downto 1),f_out=alu_out(11 downto 8),c_in=alu_c2,p_out=alu_p3,g_out=alu_g3);u_74181_4:alu_sn74181port map(a_in=alu_ina(15 downto 12),b_in=alu_inb(15 downto 12),op_sel=con_alu6(5 downto 1),f_out=alu_out(15 downto 12),c_in=alu_c3,p_out=alu_p4,g_out=alu_g4);u_74182: m_74182port map(c0=con_alu6(0),p1=alu_p1,g1=alu_g1,p2=alu_p2,g2=alu_g2,p3=alu_p3,g3=alu_g3,p4=alu_p4,g4=alu_g4,c1=alu_c1,c2=alu_c2,c3=alu_c3);end alu_16_arch;configuration alu_16_config of alu_16 isfor alu_16_archend for;end alu_16_config;(ALU_SN74181)-primitive variable input and output(operand,c0)-can not set zero when opel=11001 and c_in=0library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity alu_sn74181 is Port ( a_in : in std_logic_vector(3 downto 0);-operand a b_in : in std_logic_vector(3 downto 0);-operand b op_sel : in std_logic_vector(4 downto 0); f_out : out std_logic_vector(3 downto 0);-out value f c_in :in std_logic; p_out : out std_logic; g_out : out std_logic); - c_out : out std_logic);-carray outend alu_sn74181;architecture alu_sn74181_arch of alu_sn74181 issignal c0,m:std_logic ;signal a,b,s :std_logic_vector(3 downto 0);signal a_0,b_0,a_1,b_1,a_2,b_2,a_3,b_3:std_logic;signal d,e,h,t:std_logic;signal p_neg,g_neg,p_temp,g_temp:std_logic;signal is_f:std_logic_vector(3 downto 0);signal f_neg:std_logic_vector(3 downto 0);beginp_alu:process(op_sel,c_in,a_in,b_in,c0,m,a,b,s,a_0,b_0,a_1,b_1,a_2,b_2,a_3,b_3,d,e,h,t)beginc0=c_in;m=op_sel(0);a=not(a_in);b=not(b_in);s=op_sel(4 downto 1);a_0 =not(not b(0)and s(1) or (b(0)and s(0) or a(0);a_1 =not(not b(1)and s(1) or (b(1)and s(0) or a(1);a_2 =not(not b(2)and s(1) or (b(2)and s(0) or a(2);a_3 =not(not b(3)and s(1) or (b(3)and s(0) or a(3);b_0 =not(not b(0)and s(2)and a(0) or (b(0)and s(3)and a(0);b_1 =not(not b(1)and s(2)and a(1) or (b(1)and s(3)and a(1);b_2 =not(not b(2)and s(2)and a(2) or (b(2)and s(3)and a(2);b_3 =not(not b(3)and s(2)and a(3) or (b(3)and s(3)and a(3);g_temp=a_3 or (b_3 and a_2) or (b_3 and b_2 and a_1)or (b_3 and b_2 and b_1 and a_0);p_temp=b_3 and b_2 and b_1 and b_0;d =not(c0 and b_0 and b_1 and b_2 and not m)or(b_1 and b_2 and a_0 and not m) or (b_2 and a_1 and not m)or (a_2 and not m);e =not(c0 and b_0 and b_1 and not m)or (b_1 and a_0 and not m)or (a_1 and not m);h =not(c0 and not m and b_0) or (a_0 and not m);t =not(c0 and not m);is_f(3)=d xor(a_3 xor b_3);is_f(2)=e xor(a_2 xor b_2);is_f(1)=h xor(a_1 xor b_1);is_f(0)=t xor(a_0 xor b_0);f_neg(0)=not a(0);f_neg(1)=a(1) xor a(0);f_neg(2)=a(2) xor (a(1) and a(0);f_neg(3)=a(3) xor (a(2) and a(1) and a(0);p_neg=a(3) and a(2) and a(1) and a(0);g_neg=0;-f_out=not(is_f);end process p_alu;p_alu_neg:process(f_neg,is_f,p_neg,g_neg,p_temp,g_temp,op_sel,c_in)beginif op_sel=11001 and c_in=1 thenf_out=f_neg;p_out=p_neg;g_out=g_neg;elsef_out=not is_f;p_out=p_temp;g_out=g_temp;end if;end process p_alu_neg;end alu_sn74181_arch;configuration alu_sn74181_config of alu_sn74181 is

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論