计算机组成原理上机实验报告.doc,计算机组成原理第二次上机实验报告.doc

《计算机组成原理第二次上机实验报告.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《计算机组成原理第二次上机实验报告.doc》文档请在天天文库搜索。

1、青岛理工大学实 验 报 告实验课程: 计算机组成原理I 实验日期: 2015年 10月23日, 交报告日期:2015 年11月2日,成绩:实验地点:现代教育技术中心303计算机工程 学院,计算机科学与技术 专业, 班级:计算132班实验指导教师:林孟达 批阅教师:林孟达同组学生姓名学号一、 实验课题及内容 按照题目要求设计一个通用寄存器组的逻辑,决定外部的端口(名称、有效电平)和内部各元件的连接,画出系统框图和逻辑图,设计仿真数据,用VHDL编程和仿真。实验内容:一、主要元件设计 1.16位寄存器 功能要求:同步并行置数,异步复位(清零),三态输出,片选信号,读/写控制。 2.地址译码器 功能要求:3-8译码器。二、顶层设计 用层次结构设计的方法设计一个通用寄存器组。包括8个16位寄存器,1个地址译码器等元件。 功能要求:每个寄存器能够同步并行置数,异步复位(清零),三态输出。每个都可以。

2、(用地址)独立访问。 三、仿真 设计仿真波形数据,要考虑到所有可能的情况。在实验报告中必须清楚说明仿真波形数据是怎样设计的。 四、深入的课题 ① 上面设计的通用寄存器组,每次只能访问一个寄存器。如果想同时访问两个寄存器,应该怎样设计? ② 16位的寄存器每次读/写都是一个16位字,如果需要写入的是8位的字,即将8位的字写到16位寄存器的高8位或低8位(例如,16位寄存器A由AH和AL两个8位的寄存器组成),读出时,可一次读16位。应该怎样设计?二、 逻辑设计 1、3-8译码器系统框图A0A1A2 3-8译码器S2S1S0 ......Y0Y6Y7端口说明:a(2-0):输入信号 S(2-0):使能端,s0是高电平有效,s1,s2是低电平有效。 y(0-7):输出端口3-8译码器逻辑函数: 2、16位寄存器系统框图d14d15d0d1......16位寄存器chipcpresetzrw...。

3、.q0q1q14q15端口说明:d(0-15):输入 q(0-15):输出 cp,reset,chip,rw,z:分别是时钟信号,异步清零信号,片选信号,读写控制信 号,三态输出。3、 通用寄存器组系统框图d0d1d14d15......s2a2s1a1s0a0rwcp 通用寄存器组resetz......q0q1q14q15端口说明: d(0-15):数据输入 q(0-15):数据输出 a(0-2):译码器的输入 s(0-2):使能端控制 cp,z,reset,rw:分别是时钟信号,三态输出,异步清零,读写控制三、仿真设计1、3-8译码器:3-8译码器功能表输入输出s0 s1 s2 a2 a1 a0 y7 y6 y5 y4 y3 y2 y1 y01 0 01 0 01 0 01 0 01 0 01 0 01 0 01 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1。

4、 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 01 1 1 1 1 1 0 11 1 1 1 1 0 1 11 1 1 1 0 1 1 11 1 1 0 1 1 1 11 1 0 1 1 1 1 11 0 1 1 1 1 1 10 1 1 1 1 1 1 1从它的功能表可以知道输入的数据是有限的且只有八组,故可以按照功能表对全部数据进行仿真。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则表明异步清零功能有效,且简洁验证了,读。

5、功能是正确的。(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、 6、建立一个VHDL文件,输入源程序并检查错误 7、编译并修改语法错误 8、建立一个波形文件 9、功能仿真和时序仿真,修改逻辑错误,记录仿真波形工具:1、PC机 2、Quartus Ⅱ系统五、结果分析讨论1、3-8译码器功能仿真结果:结果讨论:从仿真图可以看出对于每种输入,都可以得到和功能表一致的结果。故3-8译码器设计是正确的。2、十六位寄存器仿真结果:结果讨论:从仿真图可以看出对于精心选择的数据,都输出了正确的结果。因此可以断定该十六位寄存器的设计是正确的。3、十六位寄存器组的仿真结果:各片寄存器的仿真图:第一片:第二片:第三片:第四片:第五片:第六片:第七片:第八片:经过功能仿真,无论片选信号选择哪个寄存器时,由仿真图可知都能输出正确的结果,所以可以推断出该通用寄存器组的设计基本是正确的。六、VHDL程序--底层设计library ieee;--3-8译码器use ieee.std。

7、_logic_1164.all;entity Decoder isport(a:in std_logic_vector(2 downto 0); y:out std_logic_vector(7 downto 0); s:in std_logic_vector(2 downto 0)); end Decoder;architecture behave of Decoder isbeginprocess(s,a)beginif s="100" then if a="000" then y<=""; elsif a="001" then y<=""; elsif a="010" then y<=""; elsif a="011" then y<=""; elsif a="100" then y<=""; elsif a="101" then y<=""; e。

8、lsif a="110" then y<=""; elsif a="111" then y<=""; end if;else y<="";end if;end process;end behave;library ieee;--16位寄存器use ieee.std_logic_1164.all;entity Sregister isport(cp,chip,rw,z,reset:in std_logic; d:in std_logic_vector(15 downto 0); q:out std_logic_vector(15 downto 0)); end Sregister;architecture behave1 of Sregister issignal sign:std_logic_vector(15 downto 0);beginprocess(cp,chip。

9、,rw,z,reset)begin if chip='0' then if reset='1' then sign'0'); elsif rising_edge(cp)then if rw='1'then q<=sign; else sign<=d; end if; if z='0' then q'Z'); end if; end if; else q'Z'); end if; end process; end behave1; --顶层设计 library ieee;--通用寄存器 use ieee.std_logic_1164.all; entity Usual_register is port(d:in std_logic_vector(15 downto 0); q:out std_logic_vector(15 downto 0); z,reset,cp,rw:in 。

10、std_logic; a:in std_logic_vector(2 downto 0); s:in std_logic_vector(2 downto 0)); end Usual_register; architecture behave3 of Usual_register is signal Y:std_logic_vector(7 downto 0); component Sregister port(cp,reset,chip,z,rw:in std_logic; d:in std_logic_vector(15 downto 0); q:out std_logic_vector(15 downto 0)); end component; component Decoder port(a:in std_logic_vector(2 downto 0); y:out std_lo。

11、gic_vector(7 downto 0); s:in std_logic_vector(2 downto 0)); end component; begin D0:Decoder port map (a=>a,y=>y,s=>s); G0:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(0)); G1:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(1)); G2:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q。

12、,d=>d,chip=>Y(2)); G3:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(3)); G4:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(4)); G5:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(5)); G6:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(6)); G7:Sregister port map (cp=>cp,z=>z,reset=>reset,rw=>rw,q=>q,d=>d,chip=>Y(7)); end behave3;。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值