计算机原理课程设计材料.docx
《计算机原理课程设计材料.docx》由会员分享,可在线阅读,更多相关《计算机原理课程设计材料.docx(16页珍藏版)》请在冰豆网上搜索。
计算机原理课程设计材料
第3章课程设计的要求、原理及方法
3.1课程设计的题目和内容
3.1.1课程设计的题目
设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,实现方法可从以下4类中任选一个:
●输入1到8之间的任意一个整数N,求1到N之间的所有数的平方和并输出显示,和为单字长。
说明:
①1到8之间的所有数的平方采用循环的方法用传送指令来实现;
②N从开关输入,和从数码管输出,然后输出显示停止。
第一类(最高成绩为“优”):
采用单数据总线结构的运算器,采用RAM,输入数据依次存放在RAM的某一连续的存储区域内;
第二类(最高成绩为“优”):
采用三数据总线结构的运算器,采用RAM,输入数据依次存放在RAM的某一连续的存储区域内;
第三类(最高成绩为“良”):
采用单数据总线结构的运算器,不采用RAM;
第四类(最高成绩为“良”):
采用三数据总线结构的运算器,不采用RAM。
★(范例)求1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长
说明:
N从开关输入,和从数码管输出,然后输出显示停止。
本书的第1章至第4章的内容均是围绕范例来介绍的。
3.1.2课程设计完成的内容
1.完成系统的总体设计,画出模型机数据通路框图;
2.设计微程序控制器(CISC模型计算机)的逻辑结构框图;
3.设计机器指令格式和指令系统;
4.设计时序产生器电路;
5.设计所有机器指令的微程序流程图;
6.设计操作控制器单元;
在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。
具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。
7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件;
8.由给出的题目和设计的指令系统编写相应的汇编语言源程序;
9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;
10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。
)
3.2课程设计的基本要求
该课程设计作为一门独立的课程,要求学生掌握CISC模型机的组成和工作原理,学会AlteraMAX+plusⅡEDA软件的使用,能用VHDL语言设计一个能完成一定功能的模型计算机,并通过仿真一个程序的执行来验证模型机设计的正确性。
3.3课程设计的具体步骤
3.3.1完成系统的总体设计
嵌入有RAM和ROM后的微处理器系统总体设计及顶层电路图
说明:
范例中设计时,外部时钟信号上边沿有效。
3.3.2设计控制器的逻辑结构框图
说明:
在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。
3.3.3设计机器指令格式和指令系统
由此可见,本模型机中的指令系统中共有8条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。
助记符号
指令格式
功能
IN1Rd
1000
××
Rd
将数据存到Rd寄存器
OUT1Rs
1111
Rs
××
(Rs)→LED
ADDRs,Rd
1100
Rs
Rd
(Rs)+(Rd)→Rd
CMPRs,Rd
1010
Rs
Rd
(Rs)-(Rd),锁存CY和ZI
INCRd
1101
××
Rd
(Rd)+1→Rd
MOVRd,data
1001
××
Rd
data
data→Rd
JMPaddr
1110
××××
addr
addr→PC
JBaddr
1011
××××
addr
若小于,则addr→PC
说明:
①对Rs和Rd的规定:
Rs或Rd
选定的寄存器
00
R0
01
R1
10
R2
②模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:
7
6543210
符号位
尾数
3.3.4设计时序产生器电路
T1、T2、T3、T4与CLR、Q之间的关系图
3.3.5设计微程序流程图
微程序控制器的设计过程为:
(1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;
(2)设计微指令格式和微指令代码表;
(3)设计地址转移逻辑电路;
(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;
(5)设计微程序控制器的顶层电路(由多个模块组成)。
图3-2CISC模型机中所有机器指令的微程序流程图
3.3.6设计操作控制器单元(即微程序控制器)
(1)设计微指令格式和微指令代码表
CISC模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为17位,P字段为2位,后继微地址为6位,其格式如下:
2423222120191817161514131211109876543210
LOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWRCSSW_BLED_BLDFRP1P2后继微地址
微指令格式中各信号的含义
由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:
LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。
微地址
微命令字段
P1
P2
后继微地址
000000
1
1
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
0
000010
000010
1
0
0
1
0
1
1
0
0
1
0
0
1
0
1
1
0
1
0
001000
000011
1
0
0
0
1
1
1
0
0
1
0
0
1
0
1
1
0
0
0
000000
000100
1
0
0
0
0
0
1
0
0
1
0
1
1
1
1
1
0
0
0
000101
000101
1
0
0
0
0
1
1
0
1
1
0
0
1
1
1
1
1
0
0
000000
000110
1
0
0
0
0
0
1
0
0
1
0
1
1
1
1
1
0
0
0
000111
000111
1
0
0
0
1
1
1
0
0
0
0
0
1
1
1
1
0
0
0
000000
001000
1
0
0
0
1
1
1
0
0
1
0
0
1
1
0
1
0
0
0
000000
001001
1
1
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
0
000011
001010
1
0
0
0
0
1
0
0
0
1
1
0
1
1
1
1
0
0
0
000100
001011
1
1
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
1
100000
001100
1
0
0
0
0
1
0
0
0
1
1
0
1
1
1
1
0
0
0
000110
001101
1
0
0
0
0
0
1
0
0
1
1
0
1
1
1
1
0
0
0
010010
001110
1
1
1
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
0
010011
001111
1
0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
0
000000
010010
1
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
000000
010011
0
1
0
0
0
1
1
0
0
1
0
0
1
0
1
1
0
0
0
000000
100000
0
1
0
0
0
1
1
0
0
1
0
0
1
0
1
1
0
0
0
000000
110000
1
0
0
0
0
1
1
0
0
1
0
0
1
1
1
1
0
0
0
000000
参照P47设计的控制存储器单元,其微地址及对应的内容便是上面给出的微指令代码。
(2)设计地址转移逻辑电路
地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。
由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA4~µA0对应的异步置“1”控制信号SE5~SE1的逻辑表达式为:
(µA5的异步置“1”端SE6实际未使用)
SE5=(FC+FZ)·P
(2)·T4
SE4=I7·P
(1)·T4
SE3=I6·P
(1)·T4
SE2=I5·P
(1)·T4
SE1=I4·P
(1)·T4
说明:
①上述逻辑表达式的含义……
②地址转移逻辑电路中异步置“1”信号SE5~SE1表达式的确定与P字段测试时转移微地址的确定密切相关;
③微程序控制器(地址转移逻辑电路、控制存储器、微指令寄存器)的设计详见P44-50。
(3)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;
(4)设计微程序控制器的顶层电路(由多个模块组成)。
3.3.7设计单元电路
设计模型机中的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件。
具体设计方法详见第4章。
说明:
①每个单元电路的设计思路见第4章,设计输入操作过程见第5章;
②范例对应的顶层电路图。
3.3.8编写汇编语言源程序
由给出的题目(范例)和设计的指令系统编写相应的汇编语言源程序。
算法思想为:
采用R0寄存器存放从开关输入的任意一个整数,R1存放准备参加累加运算的奇数,R2存放累加和,用一个循环程序实现如下:
IN1R0功能:
从开关输入任意一个整数n→R0
MOVR1,1将立即数1→R1(R1用于存放参与运算的奇数)
MOVR2,0将立即数0→R2(R2用于存放累加和)
L1:
CMPR0,R1将R0的整数n与R1的奇数进行比较,锁存CY/FC和ZI/FZ
JBL2小于,则转到L2处执行
ADDR1,R2否则,累加求和;并将R1的内容加2,形成下一个奇数
INCR1
INCR1
JMPL1跳转到L1处继续执行
L2:
OUT1R2输出累加和
JMPL2循环显示
3.3.9机器语言源程序
根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去。
与3.3.8中汇编语言源程序对应的机器语言源程序如下:
助记符地址(十六进制)机器代码功能
IN1RO0010000000(SW)→R0
MOVR1,101100100011→R1
0200000001
MOVR2,003100100100→R2
0400000000
L1:
CMPR0,R10510100001(R0)-(R1)
JBL20610110000L2→PC
0700001101
ADDR1,R20811000110(R1)+(R2)→R2
INCR10911010001(R1)+1→R1
INCR10A11010001(R1)+1→R1
JMPL10B11100000L1→PC
0C00000101
L2:
OUT1R20D11111000(R2)→LED
JMPL2OE11100000L2→PC
0F00001101
参照P31设计的主存储器单元,其地址及对应的内容便是上面给出的机器语言源程序。
3.3.10编译和功能仿真
在完成3.3.1至3.3.9的所有设计后,使用EDA软件对模型计算机(顶层电路或顶层文件)进行编译,编译通过后再进行功能仿真,其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试,要保证仿真的结果满足题目的要求。
若编译的过程中出现错误或仿真的结果不正确,要分析错误的原因,找出问题所在,这可能会修改到3.3.1至3.3.9中的任何一个或多个设计步骤。
说明:
范例功能仿真波形分析方法……
3.4考核方式
为考核学生的实际动手能力,避免高分低能现象,同时也为了避免课程设计报告的抄袭现象的出现,拟采用如下考核方式:
1.动手能力占60%;动手能力的考核主要包括:
设计题目的难易程度、设计进度的快慢、实验设备的完好率、设计的最后结果(在实验台上能正确运行机器语言源程序),以及回答问题(或答辩)的正确性等。
答辩内容:
①在微程序流程图中,能指出任何一个CPU周期内完成的操作及所需的控制信号,并能说出设计时这些控制信号是高电平有效,还是低电平有效;
②调试与仿真;
③指令的微程序流程图;
④其它理论知识。
2.课程设计报告占30%;课程设计报告的考核主要包括:
设计题目的难易程度、设计原理的正确性、报告书写是否认真、是否有抄袭现象等。
课程设计报告的内容包括:
(1)课程设计的题目(设计一台嵌入式CISC模型机);
(2)CISC模型机数据通路框图;
(3)操作控制器的逻辑框图;
(4)模型机的指令系统和所有指令的指令格式;
(5)所有机器指令的微程序流程图;
(6)嵌入式CISC模型计算机的顶层电路图;
(7)汇编语言源程序;
(8)机器语言源程序;
(9)机器语言源程序的功能仿真波形图及结果分析;
(10)故障现象和故障分析;
(11)心得体会;
(12)软件清单,含各个部件的VHDL源程序(.vhd)或图形描述文件(.gdf)。
3.平时表现占10%。
平时表现的考核主要包括:
考勤、学习态度等。
VHDL程序结构及含义
P20【程序1】----组合逻辑电路
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--执行加法运算
AA<='0'&A;
BB<='0'&B;
TEMP<=AA+BB;
BCDOUT<=TEMP(7DOWNTO0);
CY<=TEMP(8);
IF(TEMP="100000000"ORTEMP="000000000")THEN
ZI<='1';
ELSE
ZI<='0';
ENDIF;
ELSIF(S1='0'ANDS0='1')THEN--执行比较或减法运算
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--执行加1运算
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;
P24【程序4】----时序逻辑电路
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;
注意事项:
①实体名一定要与文件名同名;
②在编辑或编译、仿真某器件前,须将该文件设为当前项目文件;
③使用MAX+plusⅡ软件时,授权文件的选择;
④不同MAX+plusⅡ版本之间不一定兼容,即从开发设计一直到验收都使用同一版本;
⑤各类文件的编辑、编译、仿真等时间不能倒退;
⑥由于每个人使用的软件版本、授权文件、编辑时间都有可能不同,因此对于相同逻辑部件的VHDL源程序不要相互拷贝;
⑦所有的设计文件都必须放在同一个目录下,且目录名、文件名等均不能使用汉字;
⑧将所有VHDL源程序和图形文件的器件都选定为ACEX1K系列的EP1K30TC144-1芯片,设置方法如P99图5-31所述;
⑨对病毒较敏感。