计算机组成原理课程设计报告CISC参考模板.docx
《计算机组成原理课程设计报告CISC参考模板.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告CISC参考模板.docx(40页珍藏版)》请在冰豆网上搜索。
![计算机组成原理课程设计报告CISC参考模板.docx](https://file1.bdocx.com/fileroot1/2023-4/16/388b30ee-59a0-4877-b166-dd28b0cc684c/388b30ee-59a0-4877-b166-dd28b0cc684c1.gif)
计算机组成原理课程设计报告CISC参考模板
XX学院
课程设计说明书(论文)
课程设计题目:
组成原理课程设计
学生姓名:
学号:
院系:
专业班级:
指导教师姓名及职称:
起止时间:
年月——年月
课程设计评分:
(教务处制)
内容摘要:
通过EDA开发软件QuertusⅡ,设计一台嵌入式的8位CISC模型计算机(采用定长CPU周期或变长CPU周期),并运行能完成一定功能的机器语言程序进行验证,程序功能可以是以下两个之一:
求出1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长(说明:
N从开关输入,和从数码管输出,然后输出显示停止)。
先通过VHDL语言将所有部件(ALU、LS273等)设计出来,然后根据顶层电路图做出顶层电路,最后进行引脚锁定和波形仿真、功能仿真。
关键词:
CISCVHDL顶层电路功能仿真
课程设计题目-----------------------------------------1
设计目的---------------------------------------------1
设计题目及要求-------------------------------------------1
设计方案
模型机总体设计-----------------------------------------------1
微程序控制器的组成原理框图-----------------------------------2
模型机机器指令格式和指令系统---------------------------------2
时序产生器的设计原理及时序波形图-----------------------------2
微程序流程图-------------------------------------------------3
微程序控制器单元---------------------------------------------4
汇编语言源程序-----------------------------------------------5
机器语言的源程序---------------------------------------------5
设计的过程与步骤
设计各单元电路-----------------------------------------------5
设计CISC模型机的顶层电路图----------------------------------7
模型机的各单元VHDL源程序-------------------------------7
模型机的单元电路图及系统顶层电路图----------------------18
模型机的功能仿真和硬件验证------------------------------23
设计总结------------------------------------------------25
参考文献------------------------------------------------25
课程设计题目:
组成原理课程设计
嵌入式的8位CISC模型机设计
一、设计目的
通过课程设计加深对计算机各功能部件的理解;掌握数据信息流和控制信息流的流动和实现过程,建立起整机概念;培养设计、开发和调试计算机的能力。
提高使用EDA工具软件和可编程器件芯片的基本技能。
培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。
二、设计题目及要求
设计一台8位的CISC模型机,要求具有以下验证程序所要求的功能:
求出1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长。
说明:
N从开关输入,和从数码管输出,然后输出显示停止。
要求学生掌握CISC模型机的组成和工作原理,学会QuertusEDA软件的使用,能用VHDL硬件描述语言设计一个能完成一定功能的模型计算机,并通过仿真一个程序的执行来验证模型机设计的正确性。
三、设计方案
1.模型机的总体设计
模型机的总体设计的内容包括确定各种部件的设置以及它们之间的数据通路结构。
CISC模型机由CISC微处理器、地址寄存器AR、ROM和RAM存储器等组成。
微处理器由算术逻辑运算单元ALU、状态条件寄存器、累加器AC、数据暂存器DR、通用寄存器R0~R2、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。
CISC模型机的操作控制器采用微程序控制器。
根据模型机功能要求,画出如图1所示模型机数据通路框图。
图1模型机数据通路框图
2.微程序控制器的组成原理框图
微程序控制器组成原理框图如图2。
它主要由控制器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。
图2微程序控制器组成原理框图
3.模型机机器指令格式和指令系统
CISC模型机的指令系统采用复杂的指令格式、多种指令字长度和多种寻址方式,但指令功能强大,单条指令的执行速度较慢。
根据所要求的功能,模型机的指令系统共设计了8条不同的功能指令。
指令字长度有单字长(1个字节)和双字长(2个字节)两种;寻址方式有三种,分别是寄存器寻址、直接寻址和立即寻址。
这8条指令是IN1(输入),MOV(将一个数送入寄存器),CMP(比较),JB(小于跳转),ADD(两数相加),INC(自增1),JMP(无条件跳转),OUT1(输出)。
模型机的指令系统中共有8条基本指令,表1出每条指令的助记符号、指令格式和功能。
表18条机器指令的助记符号、指令格式和功能
4.时序产生器的设计原理及时序波形图
CISC微处理器的时钟信号Q和清除信号CLR由外部输入,节拍脉冲信号Ti由时序产生器产生。
图3述了节拍脉冲信号与外部时钟信号、清除信号的时序关系。
图3T1、T2、T3、T4与CLR、Q之间的时序关系图
由图3看出,节拍脉冲信号T1、T2、T3、T4实际上是以Q为时钟输入信号的计数状态经过译码器译码后生成的,因此可写出节拍脉冲信号的逻辑表达式,并用VHDL语言实现之,然后将它创建为一个元件符号,供顶层电路调用。
如果系统的时钟控制信号(即工作脉冲P)是在T1、T2、T3或T4的中间产生,且上升沿有效,则它产生方法是:
先将Q取反,再和节拍脉冲信号Ti相“与”得到。
5.微程序流程图
根据模型机的数据通路图(图4)以及所有指令在CISC模型机中的操作过程,画出所有机器指令的微程序流程图,如图4所示。
图中每个框为一个CPU周期(包含T1~T4共4个节拍脉冲周期)对应于一条微指令。
框中上面的十六进制数表示的是当前微指令在控制存储器中的微地址;框中下面的十六进制数表示的是当前微指令的后续微坡地。
在编写微指令时,图中的菱形框从属于它上面的方框。
图4CISC模型机中所有机器指令的微程序流程图
6、微程序控制器单元
1)设计微指令格式和微指令代码表
CISC模型机系统使用的微指令采用全水平型微指令,字长25位,其中微指令字段17位,P字段2位,后续微地址6位。
由微指令格式和微程序流程图编写的微指令代码表2所示
表2微指令代码表
2)设计地址转移逻辑电路
地址转移逻辑电路是根据微程序流程图4中的菱形部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。
在图4中进行P
(1)(高电平有效)测试时,根据指令的操作码I7~I4强制修改后继微地址的低4位,在P
(2)(高电平有效)测试时,根据借位标志FC和零标志FZ进行两路分支,并且都在T4内形成后继微指令的微地址。
由于微地址寄存器中的触发器异步置“1”端低电平有效,与üA4~üA0对应的异步置“1”控制信号SE5~SE1的逻辑表达式为:
(üA5的异步置“1”端SE6实际未使用):
7.汇编语言源程序
算法思想为:
采用R0寄存器存放从开关输入的任意一个整数,R1存放准备参加累加运算的奇数,
R2存放累加的和,用一个循环程序实现如下:
功能
IN1R0从开关输入任意一个整数n→R0
MOVR1,1将立即数1→R1(R1用于存放参与运算的奇数)
MOVR2,0将立即数0→R2(R2用于存放累加和)
L1:
CMPR0,R1将R0的整数n与R1的奇数进行比较,锁存CY和ZI
JBL2小于,则转到L2处执行
ADDR1,R2否则,累加求和,并将R1的内容加2,形成下一个奇数
INCR1
INCR1
JMPL1无条件跳转到L1处继续执行
L2:
OUTR2输出累加和
JMPL2循环显示
8、机器语言的源程序
根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机的ROM中去。
与汇编语言源程序对应的机器语言源程序如下:
助记符地址(十六进制)机器代码功能
IN1R00010000000(SW)→R0
MOVR1,101100100011→R1
0200000001
MOVR2,003100100100→R2
0400000000
L1:
CMPR0,R10510100001(R0)-(R1),锁存CY和ZI
JBL20610110000若小于,则L2→PC
0700001101
ADDR1,R20811000110(R1)+(R2)→R2
INCR10911010001(R1)+1→R1
INCR10A11010001(R1)+1→R1
JMPL10B11100000L1→PC
0C00000101
L2:
OUTR20D11111000(R2)→LED
JMPL20E11100000L2→PC
0F00001101
四、设计的过程与步骤
1、设计各单元电路
首先设计出模型机中所有的单元部件,可以使用VHDL语言文件(.vhd)或者电路图形描述文件(.gdf)对模型机中的各个部件进行设计,并使之成为可供系统调用的元件符号。
1ALU单元
算术逻辑运算单元ALU可执行三种运算,即加、比较和加1运算。
ALU的三种运算受S0、S1控制。
2状态条件寄存器单元
状态条件寄存器用来在进行比较运算时锁存借位标志(FC/CY)和零标志(FZ/ZI),在进行条件转移时其内容作为判断的依据。
3暂存寄存器、通用寄存器、地址寄存器、指令寄存器单元
模型机中暂存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位数据寄存器LS273元件,只是上述各个寄存器实体的命名分别为:
AC,DR,R0,R1,R2,AR,IR
41:
2分配器单元
1:
2分配器单元用来将ALU的运算结果或通用寄存器的内容(经3选1多路选择器)回送到数据总线,或者将ALU的运算结果或通用寄存器的内容送往输出设备显示。
53选1数据选择器单元
3选1数据选择器单元MUX3在数据输入控制信号SW_B、只读存储器片选控制信号CS的控制下,用来从外部输入数据端ID[7..0]、4选1多路选择器的输出端N1[7..0]和只读存储器ROM的输出端N2[7..0]选择一个8位的数据进入内部数据总线
64选1数据选择器单元
4选1数据选择器单元MUX4在数据输入控制信号C(R0_B)、D(R1_B)、E(R2_B)、F(ALU_B)的控制下,用来从有三个通用寄存器的数据输出端和ALU的数据输出端选择一个8位的数据输入1:
2分配器的数据输入端。
7程序计数器单元
程序计数器单元的元件符号如图4-24,它在控制信号的控制下具有清“0”,置计数初值和加1功能,其作用是保证程序的顺序执行,在执行跳转指令时,通过修改PC的值达到程序转移分支的目的。
程序计数器PC的输出直接送往地址寄存器AR(LS273芯片)
8主存储器单元
CISC模型机由于只运行完成一定功能的程序而不需要进行数据处理,所以只采用ROM芯片作为它的主存储器单元,没有配置读写存储器RAM芯片。
它的主存储器单元是一片256×8位的ROM芯片,如图4-25所示。
ADDR[7..0]为8位坡地输入端,CS为片选信号,DOUT[7..0]为8位数据输出端。
在CISC模型机中,ROM芯片的读操作时序如图4-26所示。
ROM的读操作仅与片选信号CS有关,CS为低电平有效,有效电平的范围为一个CPU周期。
9时序产生器单元
时序产生器主要用来产生节拍脉冲信号(T1、T2、T3、T4),对各种控制信号实施时间上控制。
时序产生器单元元件符号如图4-27所示,它内容采用一个2位普通计数器,计数值译码后产生节拍脉冲信号(T1、T2、T3、T4),Q为外部时钟输入信号。
10微程序控制器单元
微程序控制器器由地址转移逻辑电路ADDR、微地址寄存器aa、控制存储器CONTROM和微命令寄存器MCOMMAND等几部分组成。
为了方便电路的设计与连线,在进行本模型机微程序控制器单元内部结构设计时,增加了F1、F2和F3共三个用于多根单线与总线之间转换的器件。
a、地址转换逻辑电路(ADDR)
b、微地址寄存器(aa)
微地址寄存器aa设计的实验操作方法说明:
它需要采用QuertusⅡ的VHDL文本设计法和电路图形设计法相结合的方法完成。
首先用VHDL文本设计法完成触发器MMM元件符号的创建,然后用图形输入设计法完成微地址寄存器
aa元件符号创建。
c、控制存储器(CONTROM)
d、微命令寄存器(MCOMMAND)
e、微地址转换器F1
f、地址转换器F2
g、地址转换器F2
h.微程序控制器单元crom设计的实验操作方法说明:
首先用QuertusⅡ文本设计法完成地址转换逻辑电路ADDR、控制存储器CONTROM、微命令寄存器MCOMMAND、微地址转换器F1、微地址转换器F2和微地址转换器F3等元件符号的创建;然后用QuertusII的文本输入法和图形输入设计法相结合的方法完成微地址寄存器aa元件符号创建;最后用图形输入设计法完成微程序控制器单元crom编译和元件符号创建。
2、设计CISC模型机的顶层电路图
在完成了CISC模型机的所有单元元件的设计后,就可以进行CISC模型机的顶层电路或顶层文件设计工作。
其顶层电路的功能也可直接采用VHDL语言程序来描述。
五、模型机的各单元VHDL源程序
--ALU的VHDL源程序ALU.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.all;
ENTITYALUIS
PORT(
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S1,S0:
INSTD_LOGIC;
BCDOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CY,ZI:
OUTSTD_LOGIC
);
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
PROCESS(S1,S0)
BEGIN
IF(S1='0'ANDS0='0')THEN--ADD
AA<='0'&A;
BB<='0'&B;
TEMP<=AA+BB;
BCDOUT<=TEMP(7DOWNTO0);
CY<=TEMP(8);
IF(TEMP="100000000")THEN
ZI<='1';
ELSE
ZI<='0';
ENDIF;
ELSIF(S1='0'ANDS0='1')THEN--CMP(SUB)
BCDOUT<=A-B;
IF(A
CY<='1';
ZI<='0';
ELSIF(A=B)THEN
CY<='0';
ZI<='1';
ELSE
CY<='0';
ZI<='0';
ENDIF;
ELSIF(S1='1'ANDS0='0')THEN--INC
AA<='0'&A;
TEMP<=AA+1;
BCDOUT<=TEMP(7DOWNTO0);
CY<=TEMP(8);
IF(TEMP="100000000")THEN
ZI<='1';
ELSE
ZI<='0';
ENDIF;
ELSE
BCDOUT<="00000000";
CY<='0';
ZI<='0';
ENDIF;
ENDPROCESS;
ENDA;
--状态条件寄存器的VHDL源程序LS74.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLS74IS
PORT(
LDFR:
INSTD_LOGIC;
CY,ZI:
INSTD_LOGIC;
FC,FZ:
OUTSTD_LOGIC
);
ENDLS74;
ARCHITECTUREAOFLS74IS
BEGIN
PROCESS(LDFR)
BEGIN
IF(LDFR'EVENTANDLDFR='1')THEN
FC<=CY;
FZ<=ZI;
ENDIF;
ENDPROCESS;
ENDA;
--8位数据寄存器的VHDL源程序LS273.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLS273IS
PORT(
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:
INSTD_LOGIC;
O:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDLS273;
ARCHITECTUREAOFLS273IS
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
O<=D;
ENDIF;
ENDPROCESS;
ENDA;
--1:
2分配器的VHDL源程序FEN2.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFEN2IS
PORT(
WR,LED_B:
INSTD_LOGIC;
X:
INSTD_LOGIC_VECTOR(7DOWNTO0);
W1,W2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDFEN2;
ARCHITECTUREAOFFEN2IS
BEGIN
PROCESS(LED_B,WR)
BEGIN
IF(LED_B='0'ANDWR='0')THEN
W2<=X;
ELSE
W1<=X;
ENDIF;
ENDPROCESS;
ENDA;
--3选1数据选择器单元VHDL源程序MUX3.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX3IS
PORT(
ID:
INSTD_LOGIC_VECTOR(7DOWNTO0);
SW_B,CS:
INSTD_LOGIC;
N1,N2:
INSTD_LOGIC_VECTOR(7DOWNTO0);
EW:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX3;
ARCHITECTUREAOFMUX3IS
BEGIN
PROCESS(SW_B,CS)
BEGIN
IF(SW_B='0')THEN
EW<=ID;
ELSIF(CS='0')THEN
EW<=N2;
ELSE
EW<=N1;
ENDIF;
ENDPROCESS;
ENDA;
--4选1数据选择器单元VHDL源程序MUX4.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX4IS
PORT(
C,D,E,F:
INSTD_LOGIC;
X1,X2,X3,X4:
INSTD_LOGIC_VECTOR(7DOWNTO0);
W:
outSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX4;
ARCHITECTUREAOFMUX4IS
SIGNALSEL:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
SEL<=F&E&D&C;
PROCESS(SEL)
BEGIN
--CASESELIS
--WHEN"1110"=>
--W<=X1;
--WHEN"1101"=>
--W<=X2;
--WHEN"1011"=>
--W<=X3;
--WHEN"0111"=>
--W<=X4;
--WHENOTHERS=>
--NULL;
--ENDCASE;
IF(SEL="1110")THEN--R0_out
W<=X1;
ELSIF(SEL="1101")THEN--R1_out
W<=X2;
ELSIF(SEL="1011")THEN--R2-out
W<=X3;
ELSIF(SEL="0111")THEN--ALU_out
W<=X4;
ELSE
null;
ENDIF;
ENDPROCESS;
ENDA;
--程序计数器单元VHDL源程序PC.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYPCIS
PORT(
load,LDPC,CLR:
INSTD_LOGIC;
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
O:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDPC;
ARCHITECTUREAOFPCIS
SIGNALQOUT:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(LDPC,CLR,load)
BEGIN
IF(CLR='0')THEN
QOUT<="00000000";
ELSIF(LDPC'EVENTANDLDPC='1')THEN
IF(load='0')THEN
QOUT<=D;--BUS->PC
ELSE
QOUT<=QOUT+1;--PC+1
ENDIF;
ENDIF;
ENDPROCESS;
O<=QOUT;
ENDA;
--主存储器单元VHDL源程序ROM16.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
US