青岛理工大学通用寄存器组设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛理工大学

实验报告

实验课程:计算机组成原理I Array实验日期:2014年10月15日,交报告日期:2014年11月日,成绩:

实验地点:现代教育技术中心305(计算机实验室)

计算机工程学院,计算机科学与技术专业,班级:计算122班

实验指导教师:龚玉玺批阅教师:龚玉玺

一、实验课题

一、主要元件设计

1.16位寄存器

功能要求:同步并行置数,异步复位(清零),三态输出,片选信号,读/写控制。

2.地址译码器

功能要求:3-8译码器

二、顶层设计

用层次结构设计的方法设计一个通用寄存器组。包括8个16位寄存器,1个地址译码器等元件。

功能要求:每个寄存器能够同步并行置数,异步复位(清零),三态输出。每个都可以(用地址)独立访问

三、仿真

设计仿真波形数据,要考虑到所有可能的情况。在实验报告中必须清楚说明仿真波形数据是怎样设计的。

四、深入的课题

①上面设计的通用寄存器组,每次只能访问一个寄存器。如果想同时访问两个寄存器,

应该怎样设计?

②16位的寄存器每次读/写都是一个16位字,如果需要写入的是8位的字,即将8

位的字写到16位寄存器的高8位或低8位(例如,16位寄存器A由AH和AL两个8位的寄存器组成),读出时,可一次读16位。应该怎样设计

二、逻辑设计

端口说明:A(1-3):输入信号 S(1-3):使能端 Y(0-7):输出端口

功能表:

321逻辑函数:S A A A Y ⋅⋅⋅=)(0120,

S A A A Y ⋅⋅⋅=)(0121,S A A A Y ⋅⋅⋅=)(0122 S A A A Y ⋅⋅⋅=)(0123,S A A A Y ⋅⋅⋅=)(0124,S A A A Y ⋅⋅⋅=)(0125 S A A A Y ⋅⋅⋅=)(0126,S A A A Y ⋅⋅⋅=)(0127

十六位寄存器系统框图

端口说明: A(0-15):输入 D(0-15):输出 Clk:时钟信号

r,chip,z:分别是异步清零信号,片选信号,三态输出 rw,:分别是读写控制信号

功能表:

十六位寄存器组系统框图

端口说明: AI(0-3):给译码器的输入

z,r,clk,rw:分别是三态输出,异步置零,时钟,读写控制 A(0-15):数据输入 D(0-15):数据输出

十六位寄存器逻辑图

1、3-8译码器:

--Decode

library ieee;

use ieee.std_logic_1164.all;

entity decode is

port

(

s1,s2,s3: in std_logic;--使能端

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 s: std_logic;

begin

s<=s1 and (not s2) and (not s3);

Y(0)<=not( ((not A(2)) and (not A(1)) and (not A(0))) and s );

Y(1)<=not( ((not A(2)) and (not A(1)) and A(0)) and s);

Y(2)<=not( ((not A(2)) and A(1) and (not A(0))) and s );

Y(3)<=not( (not A(2) and A(1) and A(0)) and s);

Y(4)<=not( (A(2) and (not A(1)) and (not A(0))) and s);

Y(5)<=not( (A(2) and (not A(1)) and A(0)) and s);

Y(6)<=not( (A(2) and A(1) and (not A(0))) and s);

Y(7)<=not( (A(2) and A(1) and A(0)) and s);

end de_behave;

2、十六位寄存器:

--十六位寄存器

library ieee;

use ieee.std_logic_1164.all;

entity Sixteen_Register is

port

( --clk:时钟信号(上升沿有效)

--r:异步清零信号(高电平有效)

--chip:片选信号(低电平有效)

--z:三态门(z=1三态门打开)

--load:同步置数信号

--rw:读写控制信号rw = 1 is Read ,or is Write

clk,r,chip,z,rw : in std_logic ;

a : in std_logic_vector(15 downto 0);

d : out std_logic_vector(15 downto 0)

);

end Sixteen_Register;

architecture behave of Sixteen_Register is

signal sign : std_logic_vector(15 downto 0);--中间信号begin

process(clk,r,chip,z,rw)

begin

if chip = '0' then --片选信号有效时候

if r = '1' then --异步置零

sign <= (others=>'0');

elsif rising_edge(clk) then --clk上升沿

if rw = '1' then

d <= sign;

else --时钟上升沿,写

sign<=a;

end if;

if z = '0' then

d<=(others=>'Z');

end if;

end if;

else

相关文档
最新文档