青岛理工大学
实 验 报 告
实验课程: 计算机组成原理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译码器系统框图
A2 A1 S2 S1 3-8译码器 S0 ...... Y7 Y6 A0 Y0 端口说明:a(2-0):输入信号
S(2-0):使能端,s0是高电平有效,s1,s2是低电平有效。 y(0-7):输出端口
s?s0?s1?s2
3-8译码器逻辑函数:y0??a2?a1?a0??s y1??a2?a1?a0??s
y2??a2?a1?a0?s y3??a2?a1?a0??s y4??a2?a1?a0?s y5??a2?a1?a0??s
y6??a2?a1?a0?s y7??a2?a1?a0??s
???2、16位寄存器系统框图 d15 d14 ...... d1 d0 chip cp
reset 16位寄存器
z
rw
....
q15 q0 q14 q1
端口说明:d(0-15):输入 q(0-15):输出
cp,reset,chip,rw,z:分别是时钟信号,异步清零信号,片选信号,读写控制信 号,三态输出。
3、通用寄存器组系统框图 d15 d1 d14 d0
.....a2 a1 a0 cp reset z 通用寄存器组 ...... q1 q15 q14 s2 s1 s0 rw q0 端口说明: d(0-15):数据输入 q(0-15):数据输出 a(0-2):译码器的输入
s(0-2):使能端控制
cp,z,reset,rw:分别是时钟信号,三态输出,异步清零,读写控制
三、仿真设计
1、3-8译码器:
3-8译码器功能表
输入 s0 s1 s2 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 a2 a1 a0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 输出 y7 y6 y5 y4 y3 y2 y1 y0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 从它的功能表可以知道输入的数据是有限的且只有八组,故可以按照功能表对全部数据进行仿真。
2、16位寄存器:
16位寄存器功能表
chip 1 0 0 0 0 cp ? ? reset ? 1 0 z ? ? 1 ? rw ? ? 1 0 ? 工作状态 不工作 异步清零(复位) 读 写 高阻态 ? 0 0 0 根据功能表来输入各个端口验证各项功能。
(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、十六位寄存器仿真结果: