资源描述
东北大学秦皇岛分校
计算机和通信工程学院
计算机组成原理课程设计
指令设计及工作寄存器设计
专业名称
班级学号
学生姓名
指导老师
设计时间
课程设计任务书
专业:计算机和通信工程学院 学号: 学生姓名(署名):
设计题目:指令系统及工作寄存器设计
1、设计试验条件
综合楼808试验室
硬件:PC机
软件:Xilinx ISE ModelSim
编程语言:VHDL
2、设计任务及要求
1. 指令:7、20、47、60号指令;
2. 工作寄存器W;
3. 二-十进制编码器;
要求:•总线结构:单总线,数据总线位数8位、地址总线8位;
•存放器:内存容量64K*8bit
•控制器:用硬联线控制器实现26位微操作控制信号
•运算器:单累加器,实现加、减等8种操作
•外设:
–输入:用开关输入二进制量
–输出:7段数码管和LED显示
•指令系统规模:64条指令,7种类型,5种寻址方法
3、设计汇报内容
(1)设计目标:
1、 融会贯通计算机组成原理课程内容,经过知识综合利用,加深对计算机系统各个模块工作原理及相互联络认识;
2、 学习利用VHDL进行FPGA/CPLD设计基础步骤和方法,熟悉EDA设计、模拟调试工具使用,体会FPGA/CPLD技术相对于传统开发技术优点;
3、 培养科学研究独立工作能力,取得工程设计和组装调试实践经验。
(2)设计主体:
图1 整机逻辑结构框图
图2 芯片引脚
图3 cpu逻辑结构框图
【设计指令系统】
(1) 设计指令
指令编号
指令助记符
机器码1
机器码2
指令功效
7
ADD A, EM
000110
MM
将存放器MM地址值加入累加器A中
20
SUB C A, #II
010011
II
从累加器A中减去立即数II,减进位
47
_INT_
101110
试验机占用,不可修改,进入中止时,试验机硬件产生_INT_指令
60
RETI
111011
中止返回
表1 指令类型、寻址方法
第7条指令: ADD A, EM
指令类型:算术运算指令
寻址方法:寄存器寻址和直接寻址
第20条指令: SUB C A, #II
指令类型:逻辑运算指令
寻址方法:存放器直接寻址
第47条指令: _INT_
指令类型:转移指令
寻址方法:寄存器间接寻址
第60条指令: RETI
指令类型:转移指令
寻址方法:寄存器直接寻址
(2)控制信号
1、XRD : 外部设备读信号,当给出了外设地址后,输出此信号,从指定外设读数据。
2、EMWR: 程序存放器EM写信号。
3、EMRD: 程序存放器EM读信号。
4、PCOE: 将程序计数器PC值送到地址总线ABUS上(MAR)。
5、EMEN: 将程序存放器EM和数据总线DBUS接通,由EMWR和EMRD 决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。
6、IREN: 将程序存放器EM读出数据打入指令寄存器IR。
7、EINT: 中止返回时清除中止响应和中止请求标志,便于下次中止。
8、ELP: PC打入许可,和指令寄存器IR3、IR2位结合,控制程序跳转。
9、FSTC:进位置1,CY=1
10、 FCLC:进位置0,CY=0
11、MAREN:将地址总线ABUS上地址打入地址寄存器MAR。
12、MAROE:将地址寄存器MAR值送到地址总线ABUS上。
13、OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。
14、STEN: 将数据总线DBUS上数据存入堆栈寄存器ST中。
15、 RRD: 读寄存器组R0-R3,寄存器R?选择由指令最低两位决定。
16、 RWR: 写寄存器组R0-R3,寄存器R?选择由指令最低两位决定。
17、 CN: 决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。
18、 FEN: 将标志位存入ALU内部标志寄存器。
19、 WEN: 将数据总线DBUS值打入工作寄存器W中。
20、 AEN: 将数据总线DBUS值打入累加器A中。
21-23: X2~ X0 : X2、X1、X0三位组合来译码选择将数据送到DBUS上寄存器。
24-26: S2~ S0 : S2、S1、S0三位组合决定ALU做何种运算。
(3)指令实施步骤:
表2 指令分解和微操作对应控制信号
编号
助记符
功效
机器码
周期
总数CT
节拍数
微操作
控制信号
1
_FATCH_
取指令
000000XX
T2
PC→MAR
PCOE, MAREN
010
T1
EM→W
EMEN, EMRD, WEN
T0
W→IR
PC + 1→PC
IREN
20
SUBC A, #II
从累加器A中减去间址存放器值,带进位
010011XX
T5
PC→MAR
PCOE MAREN
101
T4
EM→DBUS→W
PC+1→PC
EMEN EMRD WEN
T3
A,W→ALU→F
ALU→A
FEN AEN
7
ADD A, EM
将存放器EM地址值加入累加器A中
000110XX
T7
PC→MAR
PCOE, MAREN
T6
EM→W
PC+1→PC
EMEN EMRD WEN
111
T5
W→MAR
MAREN
T4
EM→W
PC+1→PC
EMEN EMRD WEN
T3
A+W→A
S=001 X=100
AEN
47
_INT_
产生中止
101110XX
T4
PC→DBUS→ST
PCOE, X=011,STEN PC,IA,ST,IR
T3
Z→PC
PC,IA,ST,IR
60
RETI
中止返回
111011XX
T3
ST→PC
ST,DBUS,PC,IR
步骤图:
1、第7条指令 ADD A, EM
PCOE, MAREN
T7
PC→MAR
EMEN EMRD WEN
T6
EM→W
PC+1→PC
W→MAR
MAREN
T5
EM→W
PC+1→PC
EMEN EMRD WEN
T4
S=001 X=100
AEN
T3
A+W→A
2、第20条指令SUBC A, #II
PCOE MAREN
EMEN EMRD WEN
FEN AEN
T3
T5
T4
A,W→ALU→F
ALU→A
EM→DBUS→W
PC+1→PC
PC→MAR
DI
3、第47条指令
PCOE, X=011,STEN PC,IA,ST,IR
PC,IA,ST,IR
T4
PC→DBUS→ST
PC,IA,ST,IR
T3
Z→PC
4、第60条指令
ST,DBUS,PC,IR
T3
ST→PC
【模型及实现(工作寄存器W)】
(1)逻辑电路图形符号表示:
图4 工作寄存器逻辑电路图
图5 工作寄存器RTL逻辑电路图
图5 工作寄存器FDC逻辑电路图
(2)逻辑电路功效:暂存和传送数据
(3)仿真测试:
图6 波形分析图
图7 结果显示图
结果分析:
D为数据输入、R为数据输出、CLK为时序控制、EN为读写控制端、RST为复位端、R为数据输出。所以因为RST为1,即使D端输入数据为:1011,输出端仍为0(从波形能够看出来),EN为0,表示写数据。
(4)VDHLM描述以下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity REG is
PORT (CLK : IN STD_LOGIC ;
D : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
EN : IN STD_LOGIC;
RST : IN STD_LOGIC;
R: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
end REG;
architecture Behavioral of REG is
SIGNAL Q1 : STD_LOGIC_VECTOR(15 DOWNTO 0); --类似于在芯片内部定义一个数据暂存节点
begin
PROCESS (CLK,Q1)
BEGIN
IF (RST = '1') THEN
Q1 <= "0000";
ELSE
IF (CLK'EVENT AND CLK = '1' )THEN
IF(EN = '0') THEN
Q1 <= D ;
ELSE
Q1 <= "XXXXXXXXXXXXXXXX";
END IF;
END IF;
END IF;
END PROCESS ;
R <= Q1 ;
end Behavioral;
【逻辑功效实现(二-十进制编码器)】
(1)二-十进制功效表以下所表示:
(2)逻辑电路设计
逻辑电路图形符号表示、功效 :
图8 二-十进制编码器功效将输入数字信号变成对应输出二进制信号
系统实现
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity SY3is
Port ( d : in STD_LOGIC_VECTOR (9 downto 0);
clk : in STD_LOGIC;
e : in STD_LOGIC;
q : out STD_LOGIC_VECTOR (3 downto 0));
end SY3;
architecture Behavioral of SY3 is
begin
p1:process(d)
begin
if (d(0)='0' AND e='0') THEN
Q<="0000";
ELSIF (d(1)='0' AND e='0') THEN
Q<="0001";
ELSIF (d(2)='0' AND e='0') THEN
Q<="0010";
ELSIF (d(3)='0' AND e='0') THEN
Q<="0011";
ELSIF (d(4)='0' AND e='0') THEN
Q<="0100";
ELSIF (d(5)='0' AND e='0') THEN
Q<="0101";
ELSIF (d(6)='0' AND e='0') THEN
Q<="0110";
ELSIF (d(7)='0' AND e='0') THEN
Q<="0111";
ELSIF (d(8)='0' AND e='0') THEN
Q<="1000";
ELSIF (d(9)='0' AND e='0') THEN
Q<="1001";
ELSIF ( e='1') THEN
Q<="1111";
END IF;
END PROCESS P1;
end Behavioral;
(3)仿真测试
仿真过程以下:
(1) 在sources窗口处右击,加入新源文件
(2)创建波形仿真激励文件.tbw:选Test Bench Waveform,并输入文件名
(3)初始化时钟周期及相关参数→finish
(4)右侧会出现 .tbw文件窗口,设置输入引脚值,存盘
(5)左侧sources窗口选择“behavioral simulation”,下面processes窗口会自动出现"Modelsim Simulator"
(6)双击其中“Simulate behavioral model”会自动调用“Modelsim ”进行仿真,观察波形窗口,观察是否正确
图9 波形显示图
图10 二-十进制编码器结果分析图
仿真证实:所设计二-十进制编码器能将输入数字信号变成对应输出二进制信号。
(4)RTL级逻辑电路
图11 RTL级逻辑电路
四.心得和体会
经过此次课程设计我学习到了利用VHDL进行FPGA/CPLD设计基础步骤和方法,熟悉EDA设计、模拟调试工具使用,体会FPGA/CPLD技术相对于传统开发技术优点,同时培养科学研究独立工作能力,取得工程设计和组装调试实践经验。
不过在此过程中也碰到了很多困难,比如在设计开始阶段对于XILINX ISE 和Modelsim SE这两个软件就不会用,经过和同学交流我大约了解了软件使用方法,学习到了很多知识。
五.参考资料
[1]袁静波.计算机组成和结构[M].北京:机械工业出版社,.8.
[2]程晓荣,翟学明,王晓霞. 计算机组成和结构[M].北京:中国电力出版社,.
[3]陈耀和.VHDL语言设计技术[M]. 北京:电子工业出版社,.
[4]汉泽西.EDA技术及其应用[M]. 北京:北京航空航天出版社,
[5]李云松,宋锐.Xilinx FPGA 数据基础(VHDL)版[M] .陕西:西安电子科技大学出版社,.
展开阅读全文