简单运算器数据通路课案.docx
《简单运算器数据通路课案.docx》由会员分享,可在线阅读,更多相关《简单运算器数据通路课案.docx(21页珍藏版)》请在冰豆网上搜索。
简单运算器数据通路课案
编号:
B04911053
学号:
201540410126
课程设计
教学院
计算机学院
课程名称
计算机组成原理课程设计
题目
简单运算器数据通路
专业
计算机科学与技术
班级
15级计算机科学与技术
(一)班
姓名
甘全中
同组人员
严达贵、徐金波、高继续、杜昌豪
指导教师
张玲、祁文青
2016
年
12
月
23
日
课程设计任务书
2016~2017学年第1学期
学生姓名:
甘全中专业班级:
15级计算机科学与技术
(一)班
指导教师:
张玲、祁文青工作部门:
计算机学院
一、课程设计题目简单运算器数据通路的设计
二、课程设计内容
1.利用QUARTUS软件设计一个8位简单运算器数据通路。
2.运算器可实现两个8位二进制数的加法、减法、传送运算三种运算。
3.包括R1、R2、R3三个通用寄存器和DR。
4.数据有IN输入,经过运算后结果写入某寄存器中。
同时将结果显示在数码管上。
总体框图参考下图:
三、进度安排
前半周,课题讲解,布置任务,分析、讨论、进行各子模块的设计设计
后半周,完成各模块联调,进行测试,成果验收,进行答辩
四、基本要求
1.能够熟练掌握计算机中ALU模块的工作原理以及寄存器输入输出控制原理;
2.掌握硬件描述语言VHDL及原理图设计方法;
3.熟练掌握QuartusII软件平台;
4.各小组按模块分工,每人独立完成自己负责的模块;
5.独立撰写符合要求的课程设计报告。
目录
一概述1
1.1课程设计的目的1
1.2课程设计的要求1
二总体方案设计2
2.1简单运算器数据通路总体框架2
2.2EDA技术及QUARTUSII软件介绍2
2.3寄存器3
2.4数据选择器3
2.5算术逻辑运算单元(ALU)4
2.6显示译码器4
三详细设计5
3.1寄存器设计5
3.2数据选择器设计6
3.3ALU设计7
3.4显示译码器设计9
3.5简单运算器数据通路设计10
四程序的调试与运行结果说明11
4.18位寄存器的仿真11
4.2数据选择器的仿真11
4.3ALU的仿真12
4.4显示译码器的仿真13
4.5数据通路的仿真13
五课程设计总结15
参考文献16
一概述
1.1课程设计的目的
1.理解和掌握该课程中的有关基本概念,程序设计思想和方法。
2.培养综合运用所学知识独立完成课题的能力。
3.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
4.掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
5.计算机组成原理是计算机专业的核心专业基础课。
课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决问题的能力。
6.通过对知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,建立计算机整机概念。
对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。
锻炼学生的独立思考和动手能力。
1.2课程设计的要求
根据理论课程所学的知识,设计出简单运算器数据通路系统的总体方案,结合各单元实验积累和课堂上所学知识,选择适当器件,完成简单运算器数据通路的设计,具体要求如下:
1.能够熟练掌握计算机中ALU模块的工作原理以及寄存器输入输出控制原理;
2.掌握硬件描述语言VHDL及原理图设计方法;
3.熟练掌握QuartusII软件平台;
4.各小组按模块分工,每人独立完成自己负责的模块;
5.独立撰写符合要求的课程设计报告。
二总体方案设计
2.1简单运算器数据通路总体框架
图2.1示出了一个简单运算器数据通路模型,其中ALU为算术逻辑单元,R1、R2、R3为三个寄存器。
三个寄存器的内容都可以通过多路开关从ALU的X端或Y端送至ALU。
数据通过IN单元可以分别送至寄存器中,通过三选一选择器选出数据X、Y。
在ALU中通过s[3..0]选择进行何种运算(+、-、M)。
本次实验将X、Y分别输出即算前显示,并将运算后的结果显示在数码管上。
利用QUARTUS软件设计一个8位简单运算器数据通路,包括R1、R2、R3三个通用寄存器和DR。
数据有IN输入,经过运算后结果写入某寄存器中。
同时将结果显示在数码管上。
2.2EDA技术及QUARTUSII软件介绍
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
2.3寄存器
设计了三个寄存器R1、R2和R3,用来存放IN输入的数据,由输入端LOAD进行控制数据的存放。
2.4数据选择器
需要两个三选一数据选择器,其中一个选择器由微操作4、6和8分别控制R1、R2和DR的输出,另一个选择器由微操作5、7和9分别控制R1、R2和R3的输出,三选一控制器相应的控制操作如表格3.1所示
表格3.1三选一选择器相应的控制操作
部件
信号序号
控制输出
说明
三选一
选择器(左)
R1_X
R1
信号R1_X、R2_X、DR_X
互斥,每次只输入一个信号
R2_X
R2
DR_X
DR
部件
信号序号
控制输出
说明
三选一
选择器(右)
R1_Y
R1
信号R1_Y、R2_Y、R3_Y
互斥,每次只输入一个信号
R2_Y
R2
R3_Y
R3
2.5算术逻辑运算单元(ALU)
实验中ALU有16中运算由s[3..0]控制选择。
此处只列举+、-、M三种操作。
ALU的操作(加、减和传送)在同一个CPU周期内只能单独地选择一种进行预算,控制信号“+”控制“X+Y”的输出,控制信号“-”控制“X-Y”的输出,控制信号“M”控制“X”的输出,ALU相应的控制操作如表格3.2所示。
表格3.2ALU相应的控制操作
部件
运算
控制信号
控制输出
说明
ALU
(运算器)
Add
+
Z=X+Y
每次只能单独进行一种运算
Subtraction
-
Z=X-Y
Move
M
Z=X
2.6显示译码器
显示译码器将由ALU运算后的结果显示在数码管上。
由于一个数码管只能显示出0~9的数字,故将8位数分为低四位和高四位,显示在两个数码管上。
实验中需要两个显示译码器。
三详细设计
3.1寄存器设计
用quartus软件设计8位寄存器(R_8),使用VHDL硬件语言描述。
其VHDL源码为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYR_8IS
PORT(D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
LOAD:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITY;
ARCHITECTUREONEOFR_8IS
BEGIN
PROCESS(D,CLK,LOAD)
BEGIN
IFCLK'EVENTANDCLK='1'
THENIFLOAD='1'THEN
Q<=D;
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTURE;
编译无错误提示后,CreateSymbolFiles。
R_8结构如图3-1。
图3-1
3.2数据选择器设计
用quartus软件设计三选一数据选择器(XZQ)。
其VHDL源码为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYXZQIS
port(A,B,C:
INSTD_LOGIC;
D1,D2,D3:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDENTITY;
ARCHITECTUREART1OFXZQIS
BEGIN
PROCESS(A,B,C,D1,D2,D3)
BEGIN
IFA='1'THENQ<=D1;
ELSEIFB='1'THENQ<=D2;
ELSEIFC='1'THENQ<=D3;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
ENDART1;
编译无错误提示后,CreateSymbolFiles。
XZQ结构如图3-2。
图3-2
3.3ALU设计
用quartus设计算术逻辑单元(ALU),包括16中运算。
其VHDL源码为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALUIS
PORT(A,B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
EN:
INSTD_LOGIC;
s:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
Q0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDALU;
ARCHITECTUREART1OFALUIS
signalQ:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(A,B,S,EN)
variableQX:
bit_VECTOR(7DOWNTO0);
BEGIN
IFEN='1'THEN
CASESIS
WHEN"0000"=>Q<=A+B;--ADDITION
WHEN"0001"=>Q<=A-B;--SUBTRACTION
WHEN"0011"=>Q<=AANDB;--与门输出
WHEN"0100"=>Q<=AORB;--或
WHEN"0101"=>Q<=ANANDB;--与非
WHEN"0110"=>Q<=ANORB;--或非
WHEN"0111"=>Q<=NOTA;--A反相
WHEN"1000"=>Q<=AXORB;--异或
WHEN"1001"=>QX:
=to_bitvector(A)sla1;Q<=to_stdlogicvector(QX);--算术左移
WHEN"1010"=>QX:
=to_bitvector(A)sra1;Q<=to_stdlogicvector(QX);--算术右移
WHEN"1011"=>QX:
=to_bitvector(A)sll1;Q<=to_stdlogicvector(QX);--逻辑左移
WHEN"1100"=>QX:
=to_bitvector(A)srl1;Q<=to_stdlogicvector(QX);--逻辑右移
WHEN"1101"=>QX:
=to_bitvector(A)rol1;Q<=to_stdlogicvector(QX);--循环左移
WHEN"1110"=>QX:
=to_bitvector(A)ror1;Q<=to_stdlogicvector(QX);--循环右移
WHEN"1111"=>Q<=conv_std_logic_vector(conv_integer(A)*conv_integer(B),8);--A对B取模
WHENOTHERS=>Q<="00000000";
ENDCASE;
ELSEQ<="00000000";
ENDIF;
Q0(3DOWNTO0)<=Q(3DOWNTO0);
Q1(3DOWNTO0)<=Q(7DOWNTO4);
ENDPROCESS;
ENDART1;
编译无错误提示后,CreateSymbolFiles。
(ALU)结构如图3-3。
图3-3
3.4显示译码器设计
用quartus设计显示译码器,通过控制七段数码管来实现数字显示。
其VHDL源码为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYMQIS
PORT(X:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Y:
OUTbit_VECTOR(6DOWNTO0));
END;
ARCHITECTUREART1OFYMQIS
BEGIN
process(x)
begin
casexis
when"0000"=>y<="0111111";
when"0001"=>y<="0110000";
when"0010"=>y<="1011011";
when"0011"=>y<="1001111";
when"0100"=>y<="1100110";
when"0101"=>y<="1101101";
when"0110"=>y<="1111101";
when"0111"=>y<="0000111";
when"1000"=>y<="1111111";
when"1001"=>y<="1101111";
when"1010"=>y<="1110111";
when"1011"=>y<="1111100";
when"1100"=>y<="0111001";
when"1101"=>y<="1011110";
when"1110"=>y<="1111001";
when"1111"=>y<="1110001";
WHENOTHERS=>y<="0000000";
ENDcase;
ENDprocess;
ENDART1;
编译无错误提示后,CreateSymbolFiles。
(YMQ)结构如图3-4。
图3-4
3.5简单运算器数据通路设计
在设计好8位寄存器(R_8)、数据选择器(XZQ)、算术逻辑单元(ALU)、显示译码器(YMQ)模块后,建立工程进行连线。
简单运算器数据通路连线如图3-5。
编译无错误提示后,CreateSymbolFiles。
(shujutongli)结构如图3-6。
图3-6
四程序的调试与运行结果说明
4.18位寄存器的仿真
根据8位寄存器的功能进行仿真调试。
CLK时钟为上升沿,并且置数控制(LOAD)为1。
将IN单元输入的00001100(十进制位12)存入到寄存器Q中。
如图表4-1。
图4-18位寄存器仿真
4.2数据选择器的仿真
数据选择器实现三选一的功能。
三个数据D1(00001000)、D2(00010100)、D3(00010000)。
选择端A、B、C,置B为1。
结果将D2(00010100)选择到Q。
如图表4-2。
图4-2数据选择器的仿真
4.3ALU的仿真
ALU的仿真,由s[3..0]控制是进行何种运算。
如s[0000]是进行算术加法运算、s[0001]是进行算术减法运算、s[1111]是进行A对B的取模运算。
4.3.1ALU的算术加法仿真
数A为0001000(十进制数16),数B为00001000(十进制数8),s(0000)是进行加法运算,EN使能端置1,Q0为运算结果的低四位,Q1为运算结果的高四位。
运算结果是Q0(1000),Q1(0001)。
如图表4-3。
图4-3ALU算术加法仿真
4.3.2ALU的算术减法仿真
数A为0001000(十进制数16),数B为00001000(十进制数8),s(0001)是进行加法运算,EN使能端置1,Q0为运算结果的低四位,Q1为运算结果的高四位。
运算结果是Q0(1000),Q1(0000)。
如图表4-4。
图4-4ALU算术减法仿真
4.3.3ALU的取模仿真
数A为0001000(十进制数16),数B为00001000(十进制数8),s(1111)是进行取模运算,EN使能端置1,Q0为运算结果的低四位,Q1为运算结果的高四位。
运算结果是Q0(0000),Q1(1000)。
如图表4-5。
图4-5ALU的取模仿真
4.4显示译码器的仿真
由于显示译码器是将一个数字用七段的数码灯管来显示的。
故输入数X(00011)时,七段灯管的亮暗值为Y(0110000)。
如图表4-6。
图4-6显示译码器的仿真
4.5数据通路的仿真
通过IN单元输入8位数D[7..0],通过CLK_DR、CLK_R2控制DR和R1、R2和R3的时钟,DR、R1、R2、R3分别有置数控制端LOAD_DR、LOAD_R1、LOAD_R2、LOAD_R3控制是否置数到寄存器中,通过三选一的数据选择器选择数据X(由DR_X、R1_X、R2_X控制),数据Y(由R1_Y、R2_Y、R3_Y控制)。
并且将选中的数据分别显示在QA、QB中,然后由s选择进行何种运算,调试中给出s(0001),即进行算术减法运算。
将运算结果显示在显示译码管中,低四位显示在Y1上,高四位显示在Y2上。
由于相减的结果为0。
故Y1应显示为0即(0111111),Y2应显示为0即(0111111)。
如图表4-7。
图4-7简单运算器数据通路的仿真
五课程设计总结
计算机组成原理是计算机学科重要的基础课程。
理论课的学习是理解原理,而课程设计是验证理论课学习的重要方式。
初次接触到硬件类型的设计,之间都是程序类的课程设计。
因此,可以更好的理解其硬件工作原理及特性。
本次实验较多的运用到数字电子技术,很多知识得到很好的巩固。
了解到可编程芯片的设计,初步学习EDA技术,明白VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述。
学会在QUARTUS中如何用VHDL语言设计芯片。
在试验中基本完成运算器数据通路中个芯片的设计及最后数据通路的设计。
由于初次运用QUARTUS软件,对其强大的功能了解不够,导致不能很好的运用。
尤其是在仿真阶段,其中包括数字电路的逻辑模拟、故障分析,模拟电路的交直流分析、瞬态分析。
在进行系统仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。
仿真主要是检验设计方案在功能方面的正确性。
计算机组成原理是其他计算机的基础,尤其是在硬件方面更为重要。
今后的学习一直会是在计算机组成原理的基础上去理解的。
再复杂的系统都是从一个一个的子系统做起来的,今后的学习固然高深,但只要从浅到深是不会太难的。
此次试验让我对专业知识有了更深的了解,也激发了我对学习的兴趣,从中积累了宝贵的实践操作经验。
参考文献
[1]白中英,计算机组成原理(第四版),北京,科学出版社,2008年9月。
[2]白中英,杨春武,计算机硬件基础实验教程(第2版),北京,清华大学出版社,2011。
[3]Hamacher,C,计算机组成与嵌入式系统(第六版),北京,机械工业出版社,2013,8。
[4]白中英,计算机系统结构(第三版·网络版),北京,科学出版社2010。
[5]袁春风编著.计算机组成与系统结构.北京:
清华大学出版社,2011年。
[6]张志刚,FPGA与SOPC设计教程-DE2实践.西安:
电子科技大学出版社,2007年。
计算机组成原理课程设计成绩评定表
1、课程设计答辩或质疑记录
1)
2)
3)
2、答辩情况
a)未能完全理解题目,答辩情况较差□c)理解题目较清楚,问题回答基本正确□
b)部分理解题目,答辩情况较差□d)理解题目透彻,问题回答流利□
3、课程设计报告
a)内容:
不完整□完整□详细□
b)方案设计:
较差□合理□非常合理□
c)实现:
未实现□部分实现□全部实现□
d)文档格式:
不规范□基本规范□规范□
考勤成绩:
,
占总成绩比例10%
答辩成绩:
,
占总成绩比例30%
课程设计论文成绩:
,
占总成绩比例60%
课程设计总成绩:
4、课程设计评语
指导教师签字:
年月日