青岛理工大学控制器部件设计_第1页
青岛理工大学控制器部件设计_第2页
青岛理工大学控制器部件设计_第3页
青岛理工大学控制器部件设计_第4页
青岛理工大学控制器部件设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、青岛理工大学实 验 报 告实验课程: 计算机组成原理I 实验日期: 2014 年 10月29日, 交报告日期:2014 年11月日,成绩:实验地点:现代教育技术中心305(计算机实验室)计算机工程 学院,计算机科学与技术 专业, 班级:计算122 实验指导教师: 龚玉玺 批阅教师:龚玉玺同组学生姓名郝兴明徐鹏学号201207051201207065一、实验课题:(1)主要元件设计 1程序计数器 功能要求:8位二进制计数器,同步并行置数,同步复位(清零),三态输出。 提示:注意程序计数器的“自动加一”功能。 2数据寄存器 功能要求:8位,同步并行置数,双向三态输出。 3地址寄存器 功能要求:8位

2、,同步并行置数,三态输出。 4指令寄存器 功能要求:8位,同步并行置数。 5指令译码器功能要求:3-8译码器。 (2)仿真 设计仿真波形数据,要考虑到所有可能的情况。在实验报告中必须清楚说明仿真波形数据是怎样设计的。二、逻辑设计:1、程序计数器的设计Q7Q6Q5Q4Q3Q2Q1Q0cZrldetclkD7D6D5D3D2D1D4D08位程序计数器8位程序计数器系统框图端口说明:et:控制程序计数器自动加一的控制端ld:预置数控制端r:同步清零端clk:时钟信号z:三态控制端口c:进位输出端口q:输出端口d:预置数端口。2、数据寄存器的设计:zQ7Q6Q4Q08位地址寄存器loaddloadqz

3、qzdQ7Q6Q5Q4Q3Q2Q1Q0D1D7D6D5D4D3D2D08位数据寄存器8位数据寄存器系统框图端口说明:clk:时钟信号zd,zq:三态控制端口,其中zd控制d端的三态输出,zq控制q端的三态输出loadd,loadq:同步置数端口,loadd控制d端的同步输入,loadq控制q端的同步输入d,q:双向三态输入输出3、地址寄存器设计:8位地址寄存器系统框图Q5Q3Q2Q1LoadclkclkD2D1D3D7D6D5D4D0端口说明:clk:时钟信号load:同步置数端口z:控制三态输出d:输入端口q:输入端口4、指令寄存器的设计:8位指令寄存器系统框图Q7Q6Q5Q3Q4Q2Q1Q

4、0指令译码器8位指令寄存器D7D6D5D2D4D3D1D0Loadclk端口说明:clk:时钟信号load:同步置数端口d:输入端口q:输入端口5、指令译码器的设计:Y0Y1Y2Y4Y7Y6Y5Y3A2A1A0指令译码器系统框图端口说明:A:指令码输入端,高电平有效Y:指令码译码后的输出端。低电平有效。三、VHDL程序8位程序计数器:-eight_countlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity eight_count isport( -et控制自动加1的端口-clk时钟信号-c进

5、位输出-z三态们 z=1-ld预制数控制端 ld=0-r同步清零端 r=0有效et,clk,z,ld,r :in std_logic;c : out std_logic;d : in unsigned(7 downto 0);q : out unsigned(7 downto 0);end eight_count;architecture behave of eight_count issignal iq : unsigned(7 downto 0);beginprocess (clk,et,z,ld,r)beginif rising_edge(clk) thenif r = '0&#

6、39; then-同步清零iq<=(others=>'0');elsif ld = '0' then iq<=d;-预制数elsif et = '1' then iq<=iq+1;-计数end if;end if;if iq = 255 then c <='1'-计数到255,产生进位else c<='0'end if;q<=iq;if z = '1' then -三态们关闭 c<='Z' q<=(others=>'

7、Z');end if;end process;end behave;8位数据寄存器:-data registerlibrary ieee;use ieee.std_logic_1164.all;entity data_register isport(-clk时钟信号-zq控制q端口的三态-zd控制d端口的三态-load1,load2同步并行置数.loadd控制d,loadq控制q-d输入输出双向端口-q输入输出端口clk,zd,zq,loadd,loadq : in std_logic;d : inout std_logic_vector(7 downto 0);q : inout s

8、td_logic_vector(7 downto 0);end data_register;architecture behave of data_register issignal iq : std_logic_vector(7 downto 0);begin process(clk,zd,zq,loadd,loadq)beginif rising_edge(clk) thenif loadd = '1' and zd = '0' then-因为d是双向端口,当d作为输入端口时, -d作为输出端口时应该是高阻态,否则会产生线与 iq <=d; d<

9、=(others=>'Z');end if;if loadq = '1' and zq = '0' theniq<=q;q<=(others=>'Z');end if;end if;if zd = '0' then -三态门关闭d<=(others=>'Z');else d<=iq;end if;if zq = '0' then-三态门关闭q<=(others=>'Z');else q<=iq;end if;

10、end process;end behave ;8位地址寄存器-address_registerlibrary ieee;use ieee.std_logic_1164.all;entity address_register isport (-load同步并行置数-z三态输出 z=1 is valide signal-d输入-q输出load ,z ,clk : in std_logic;d : in std_logic_vector(7 downto 0);q : out std_logic_vector(7 downto 0);end address_register;architectur

11、e behave of address_register issignal iq : std_logic_vector(7 downto 0);beginprocess(clk,z,load)beginif rising_edge(clk) and load = '1' theniq<=d;end if;if z='1' thenq<=(others=>'Z');elseq<=iq;end if;end process;end behave;8位指令寄存器:library ieee;use ieee.std_logic_1

12、164.all;entity instruction_register isport(clk ,load : in std_logic;d : in std_logic_vector(7 downto 0);q : out std_logic_vector(7 downto 0);end instruction_register;architecture behave of instruction_register issignal save : std_logic_vector(7 downto 0);begin process(clk , load)beginif rising_edge(

13、clk) and load='1' thensave<=d;end if;q<=save;end process;end behave;指令译码器(3-8译码器):-Decodelibrary ieee;use ieee.std_logic_1164.all;entity decode isport(A : in std_logic_vector(2 downto 0);-输入Y : out std_logic_vector(7 downto 0)-输出);end decode; architecture de_behave of decode is signal

14、s: std_logic;beginprocess(A)begincase A iswhen "000"=> Y<="11111110"when "001"=> Y<="11111101"when "010"=> Y<="11111011"when "011"=> Y<="11110111"when "100"=> Y<="11101111&quo

15、t;when "101"=> Y<="11011111"when "110"=> Y<="10111111"when "111"=> Y<="01111111"end case;end process;end de_behave;四、仿真设计:8位程序计数器仿真设计:程序计数器的仿真设计的要点在于验证:1、 程序在加1控制端有效的时候是否具有自动加1的功能。2、 r同步置数端口的有效性。3、 ld预置数端口的有效性。4、 z三态端口的有效性

16、。5、 控制加1端口et的有效性。令数据从00000000开始计数,观察数据是否是相邻数据相差1位,同时在加1的过程中间插入r=0,ld=0,z=1,et=0信号,已验证其功能是否实现,如果这些功能实现了,则相应的输出端,分别会显示出0000000,置入的数据,三态,上一次计数时的输出数据。8位数据寄存器仿真设计:数据寄存器的仿真设计的要点在于验证:1、 能否从q、d端口分别读入数据,能否在三态门打开时正确输出寄存器中的数据。2、 三态门是否有效。仿真数据:1、 在clk上升是从d端口置入数据11111111,同时l同步置数端loadd打开,loadq=0,zd=0,zq=0.2、 下一个时钟

17、上升沿:loadq=0,loadd=0,zd=0,zq=1.3、 下一个时钟上升沿:loadq=0,loadd=0,zd=1,zq=04、 下一个时钟上升沿,从q端口置入数据11110000,通知同步置数端loadq打开,loadd=0,zd=0,zq=05、 下一个时钟上升沿:loadd=0,loadq=0,zd=1,zq=1.6、 下一个时钟上升沿:loadq=1,loadd=0,zd=1,z1=0(用于验证一端输入一端输出发生的情况)7、 下一个时钟上升沿:zd=1,z1=1,loadd=0,loadq=08位地址寄存器的仿真设计:地址寄存器的仿真设计要点在于验证:1、 同步置数功能是否

18、有效2、 三态输出是否有效。仿真数据:1、 时钟上升沿d=11111111,load=1,z=02、 下一个时钟上升沿:load=0,d=00000001,z=03、 下一个时钟上升沿:load=1,d=00000010,z=04、 下一个时钟上升沿:load=1,d=00000011,z=18位指令寄存器的仿真设计:指令寄存器的设计在于验证期同步置数端是否有效。仿真数据:1. 时钟上升沿:load=0,d=000000012. 下一个时钟上升沿:load=1,d=000000103. 下一个时钟上升沿:load=0,d=000000114. 下一个时钟上升沿:load=1,d=000001005. 下一个时钟上升沿:load=0,d=00000101指令译码器的设计:指令译码器一共有8种情况全部仿真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论