(精品)毕业精品组成原理标准实验报告(2013年优秀毕业设计)_第1页
(精品)毕业精品组成原理标准实验报告(2013年优秀毕业设计)_第2页
(精品)毕业精品组成原理标准实验报告(2013年优秀毕业设计)_第3页
(精品)毕业精品组成原理标准实验报告(2013年优秀毕业设计)_第4页
(精品)毕业精品组成原理标准实验报告(2013年优秀毕业设计)_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏技术师范学院 计算机 学院标 准 实 验 报 告(实验)课程名称 计算机组成原理 计算机科学与工程学院制实 验 报 告学生姓名:XXX 学 号:XXXXXX 指导教师:冯立平实验地点:计算机学院104室 实验时间:200410一、实验室名称:计算机学院硬件实验室 二、实验项目名称:存储器逻辑设计三、实验学时:8四、实验原理:通过部件级的实验设计和调试,了解半导体存储器的设计过程。五、实验目的: . 掌握用硬件描述语言设计逻辑部件。 . 掌握存储器容量的字扩展和位扩展技术。 掌握存储芯片片选逻辑的设计方法。六、实验内容:利用ALTERA公司的EPF10K10LC84-4的内部可编程资源,设计一个256X16bit的RAM;要求能随机写入和读出数据。已知1个648,1个328,1个168的存储器,设计1个容量为1128的存储器,此存储器的片选信号为CS,低电平有效。r-w:读/写允许输入线,高电平时写,低电平时读,8位数据输入线din,8位数据输出线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)作为片选依据;而328,应将低5位地址adr(4)adr(0)连接到芯片上,余下的adr(6)adr(5)作为片选依据。而168,应将低4位地址adr(3)adr(0)连接到芯片上,余下的adr(6)adr(5)adr(4) 作为片选依据。令adr0对应于648的adr接口,adr1对应于328的adr接口,adr2对应于168的adr接口。七、实验器材(设备、元器件):PC机一台,EDA教学实验箱一台,导线若干。八、实验步骤:. 介绍实验开发平台和实验板的使用。. 设计一个256X8bit的RAM。. 用两个256X8bit的RAM组成一个256X16bit的ARM。. 仿真并验证。九、实验数据及结果分析:附程序及仿真波形图: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的数据,只是采用了时钟同步打入的方式,但这不影响使用和我们理解存储器扩展的原理。而且这种方式更加稳定可靠。十一、总结及心得体会:对EPF10K10LC84-4芯片的使用有了进一步的了解,更好的掌握了存储器原理、逻辑结构。十二、对本实验过程及方法、手段的改进建议:可以改用较大容量的可编程芯片,或者采用其他公司的芯片如:XILINX公司的FPGA。因为它有片选信号,而ALTERA公司的FELX系列芯片没有片选信号。 报告评分: 指导教师签字:电子科技大学 计算机 学院标 准 实 验 报 告(实验)课程名称 计算机组成原理 电子科技大学教务处制表电 子 科 技 大 学实 验 报 告学生姓名:XXX 学 号:XXX XXX 指导教师:冯立平实验地点:计算机学院104室 实验时间:2004. 10一、实验室名称:计算机学院硬件实验室 二、实验项目名称:运算器逻辑设计三、实验学时:8四、实验原理:理解运算器结构及功能,理解各选择器、算逻部件、移位器的端口及实现逻辑和各部件之间的接口关系,并学会如何利用VHDL对硬件实体逻辑进行描述并进行模块级、系统级仿真,从而模拟完整的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 /*内部数据总线(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定义并描述各部件及整体功能。模块级仿真、系统级仿真。模拟合成并验证。九、实验数据及结果分析:经过整理的数据及表格、运算器程序清单及仿真波形: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论