您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 计算机组成原理第二次上机实验报告
青岛理工大学实验报告实验课程:计算机组成原理I实验日期:2015年10月23日,交报告日期:2015年11月2日,成绩:实验地点:现代教育技术中心303计算机工程学院,计算机科学与技术专业,班级:计算132班实验指导教师:林孟达批阅教师:林孟达同组学生姓名学号一、实验课题及内容按照题目要求设计一个通用寄存器组的逻辑,决定外部的端口(名称、有效电平)和内部各元件的连接,画出系统框图和逻辑图,设计仿真数据,用VHDL编程和仿真。实验内容:一、主要元件设计1.16位寄存器功能要求:同步并行置数,异步复位(清零),三态输出,片选信号,读/写控制。2.地址译码器功能要求:3-8译码器。二、顶层设计用层次结构设计的方法设计一个通用寄存器组。包括8个16位寄存器,1个地址译码器等元件。功能要求:每个寄存器能够同步并行置数,异步复位(清零),三态输出。每个都可以(用地址)独立访问。三、仿真设计仿真波形数据,要考虑到所有可能的情况。在实验报告中必须清楚说明仿真波形数据是怎样设计的。四、深入的课题①上面设计的通用寄存器组,每次只能访问一个寄存器。如果想同时访问两个寄存器,应该怎样设计?②16位的寄存器每次读/写都是一个16位字,如果需要写入的是8位的字,即将8位的字写到16位寄存器的高8位或低8位(例如,16位寄存器A由AH和AL两个8位的寄存器组成),读出时,可一次读16位。应该怎样设计?二、逻辑设计1、3-8译码器系统框图端口说明:a(2-0):输入信号S(2-0):使能端,s0是高电平有效,s1,s2是低电平有效。y(0-7):输出端口210ssss3-8译码器逻辑函数:saaay0120saaay0121saaay0122saaay0123saaay0124saaay0125saaay0126saaay0127A2A1A0S2S1S03-8译码器Y7Y6......Y02、16位寄存器系统框图端口说明:d(0-15):输入q(0-15):输出cp,reset,chip,rw,z:分别是时钟信号,异步清零信号,片选信号,读写控制信号,三态输出。3、通用寄存器组系统框图通用寄存器组端口说明:d(0-15):数据输入q(0-15):数据输出a(0-2):译码器的输入s(0-2):使能端控制cp,z,reset,rw:分别是时钟信号,三态输出,异步清零,读写控制16位寄存器d15d14......d1d0q15q14q1q0....chipcpresetzrwd15d14d1d0......q15q14......q1q0a2a1a0cpresetzs2s1s0rw三、仿真设计1、3-8译码器:3-8译码器功能表输入输出s0s1s2a2a1a0y7y6y5y4y3y2y1y01001001001001001001001000000010100111001011101111111111011111101111110111111011111101111110111111011111101111111从它的功能表可以知道输入的数据是有限的且只有八组,故可以按照功能表对全部数据进行仿真。2、16位寄存器:16位寄存器功能表chipcpresetzrw工作状态1不工作01异步清零(复位)0011读000写000高阻态根据功能表来输入各个端口验证各项功能。(1)验证无工作状态功能:令chip=‘1’,若输出为Z则说明其没有工作。(2)验证异步清零功能:使chip=‘0’且r=‘1’,接着使chip=‘0’,cp处于上升沿,reset=0,z=1,rw=‘1’。若仿真结果是16个0则表明异步清零功能有效,且简洁验证了,读功能是正确的。(3)验证写入寄存器的功能:使chip=‘0’且cp处于上升沿,reset=‘0’,rw=0。接着读出数据,若读出的数据是这之前写入寄存器的数据则表明写功能正确。(4)验证读功能:使chip=‘0’且cp处于上升沿,reset=‘0’,rw=‘1’。若仿真的结果是之前写入寄存器的数据,则表明读功能是正确的。3、十六位寄存器组:对十六位寄存器组,共有8个寄存器。每一个寄存器都要进行功能验证,一、为了验证译码器的正确性;二、为了验证每个寄存器的功能是否都正确。(实际上这些寄存器都是由一个模板复制而来,之所以每个都进行验证是为了查看每个组件之间的连接是否正确)。按照十六位寄存器的仿真设计,对每一种片选信号都进行十六位寄存器的仿真。四、实验步骤及工具实验步骤:1、逻辑设计2、根据逻辑原理设计数据并得出理论结果3、用VHDL语言编写程序4、启动Quartus系统5、建立一个工程6、建立一个VHDL文件,输入源程序并检查错误7、编译并修改语法错误8、建立一个波形文件9、功能仿真和时序仿真,修改逻辑错误,记录仿真波形工具:1、PC机2、QuartusⅡ系统五、结果分析讨论1、3-8译码器功能仿真结果:结果讨论:从仿真图可以看出对于每种输入,都可以得到和功能表一致的结果。故3-8译码器设计是正确的。2、十六位寄存器仿真结果:结果讨论:从仿真图可以看出对于精心选择的数据,都输出了正确的结果。因此可以断定该十六位寄存器的设计是正确的。3、十六位寄存器组的仿真结果:各片寄存器的仿真图:第一片:第二片:第三片:第四片:第五片:第六片:第七片:第八片:经过功能仿真,无论片选信号选择哪个寄存器时,由仿真图可知都能输出正确的结果,所以可以推断出该通用寄存器组的设计基本是正确的。六、VHDL程序--底层设计libraryieee;--3-8译码器useieee.std_logic_1164.all;entityDecoderisport(a:instd_logic_vector(2downto0);y:outstd_logic_vector(7downto0);s:instd_logic_vector(2downto0));endDecoder;architecturebehaveofDecoderisbeginprocess(s,a)beginifs=100thenifa=000theny=11111110;elsifa=001theny=11111101;elsifa=010theny=11111011;elsifa=011theny=11110111;elsifa=100theny=11101111;elsifa=101theny=11011111;elsifa=110theny=10111111;elsifa=111theny=01111111;endif;elsey=00000000;endif;endprocess;endbehave;libraryieee;--16位寄存器useieee.std_logic_1164.all;entitySregisterisport(cp,chip,rw,z,reset:instd_logic;d:instd_logic_vector(15downto0);q:outstd_logic_vector(15downto0));endSregister;architecturebehave1ofSregisterissignalsign:std_logic_vector(15downto0);beginprocess(cp,chip,rw,z,reset)beginifchip='0'thenifreset='1'thensign=(others='0');elsifrising_edge(cp)thenifrw='1'thenq=sign;elsesign=d;endif;ifz='0'thenq=(others='Z');endif;endif;elseq=(others='Z');endif;endprocess;endbehave1;--顶层设计libraryieee;--通用寄存器useieee.std_logic_1164.all;entityUsual_registerisport(d:instd_logic_vector(15downto0);q:outstd_logic_vector(15downto0);z,reset,cp,rw:instd_logic;a:instd_logic_vector(2downto0);s:instd_logic_vector(2downto0));endUsual_register;architecturebehave3ofUsual_registerissignalY:std_logic_vector(7downto0);componentSregisterport(cp,reset,chip,z,rw:instd_logic;d:instd_logic_vector(15downto0);q:outstd_logic_vector(15downto0));endcomponent;componentDecoderport(a:instd_logic_vector(2downto0);y:outstd_logic_vector(7downto0);s:instd_logic_vector(2downto0));endcomponent;beginD0:Decoderportmap(a=a,y=y,s=s);G0:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(0));G1:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(1));G2:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(2));G3:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(3));G4:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(4));G5:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(5));G6:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(6));G7:Sregisterportmap(cp=cp,z=z,reset=reset,rw=rw,q=q,d=d,chip=Y(7));endbehave3;
本文标题:计算机组成原理第二次上机实验报告
链接地址:https://www.777doc.com/doc-4345446 .html