计算机系统实验:时序电路实验

穿精又带淫゛_ 提交于 2020-03-12 17:14:03

2019年3月21日
题目:时序电路实验
解释:时序电路的实现相对来讲较为简单,并没有什么特别的东西,唯一需要新学的就是如果用quartus画一张状态机图,并产生相应的vhdl文件。如图所示:
在这里插入图片描述
生成的vhdl文件如图所示:
在这里插入图片描述
在这里插入图片描述
题目:微程序控制器实验1
解释:
首先通过模拟器进行操作,模拟器的文件下载下来后如图所示:
在这里插入图片描述
其中HexEdit可执行程序是用来对user_prog文件进行查看后修改,查看之后的文件如图所示:
在这里插入图片描述
之后运行simple cpu emulator.exe可执行文件进行运行
在这里插入图片描述
start上面是我们的文件,start后开始运行,现在是初始状态,其中pc是计数器,op是指令代码,addr是当前微指令地址,nxt是下一微指令地址,ar是地址寄存器,dr1是暂存器1,dr2是暂存器2,r5是寄存器

初始状态 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ir进行译码 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ar 在这里插入图片描述
执行ram->r5 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ir 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ar 在这里插入图片描述
执行ram->dr2 在这里插入图片描述
执行r5->dr1 在这里插入图片描述
执行alu->r5 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ir 在这里插入图片描述
执行pc->ar,pc+ 在这里插入图片描述
执行ram->ar 在这里插入图片描述
执行r5->ram 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ir 在这里插入图片描述
执行pc->ar,pc+1 在这里插入图片描述
执行ram->ar 在这里插入图片描述

在这里插入图片描述
下略
流程图为:
在这里插入图片描述
最终结果为:
在这里插入图片描述
到此为止结束,结果存放在ram地址为10的位置中
题目:微程序控制器实验2
解释:
下面是rom的excel表格实现:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY rom IS
PORT
(
     address  : IN     STD_LOGIC_VECTOR (4 DOWNTO 0);
               q  : OUT STD_LOGIC_VECTOR (27 DOWNTO 0));
END rom;
ARCHITECTURE SYN OF rom IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (27 DOWNTO 0);
BEGIN
sub_wire0<=
"1010111100000000000000000001"	 WHEN address= 	"00000"	ELSE
"1111111000001000000000000010"	 WHEN address= 	"00001"	ELSE
"1001111100000100000001001000"	 WHEN address= 	"00010"	ELSE
"1001111100000100000001100000"	 WHEN address= 	"01000"	ELSE
"1011111000001000000000010101"	 WHEN address= 	"01001"	ELSE
"1011111000001000000000010111"	 WHEN address= 	"01010"	ELSE
"1011111000001000000000011001"	 WHEN address= 	"01011"	ELSE
"1001101100010000000000011011"	 WHEN address= 	"01100"	ELSE
"1011111000001000000000011100"	 WHEN address= 	"01101"	ELSE
"1011111000001000000000000011"	 WHEN address= 	"01110"	ELSE
"1011111000001000000000011101"	 WHEN address= 	"01111"	ELSE
"1001111100001000000001010110"	 WHEN address= 	"10101"	ELSE
"1001111110000000000001000001"	 WHEN address= 	"10110"	ELSE
"1001111100001000000001011000"	 WHEN address= 	"10111"	ELSE
"1001101100000000000010000001"	 WHEN address= 	"11000"	ELSE
"1001111100001000000001011010"	 WHEN address= 	"11001"	ELSE
"1000111100000000000010000001"	 WHEN address= 	"11010"	ELSE
"1001110110000000000000000001"	 WHEN address= 	"11011"	ELSE
"1011111100000000000001000001"	 WHEN address= 	"11100"	ELSE
"1001111100000100000001000100"	 WHEN address= 	"00011"	ELSE
"1001111100100000000001000101"	 WHEN address= 	"00100"	ELSE
"1001101100010000000000000110"	 WHEN address= 	"00101"	ELSE
"1001110110000000000000000001"	 WHEN address= 	"00110"	ELSE
"1001111100001000000001011110"	 WHEN address= 	"11101"	ELSE
"1001111100100000000001011111"	 WHEN address= 	"11110"	ELSE
"1001101100010000000000000111"	 WHEN address= 	"11111"	ELSE
"1001110110000000000000000001"	 WHEN address= 	"00111"	ELSE
"1010111100000000000000010001"	 WHEN address= 	"10000"	ELSE
"1111111000001000000000010010"	 WHEN address= 	"10001"	ELSE
"1111111000001000000000010100"	 WHEN address= 	"10011"	ELSE
"1000111100000000000010010001"	 WHEN address= 	"10010"	ELSE
"1000111100000000000001010011"	;
 q    <= sub_wire0(27 DOWNTO 0);
END SYN;

这是rom的vhdl语言
其中address表示的是当前输入的五位地址,而之前的一个长字符串表示的就是二十八位输出信号,其中包括控制信号,下址信号等等,用来控制当前电路和为下一个时钟周期提供指令的地址。
在这里插入图片描述
可以看出是对输入的五位控制信号进行一个判断,根据不同的信号组合产生不同的28位信号输出
以下是电路图截图:
其中第一张表示的是ROM的输出以上部分,包含ROM的输出,其中主要有ROM,用来产生28位输出信号,以及三组八位寄存器用来存储当前输出的信号
其中第二张表示的是ROM的输出以下部分,包含ROM的输入,其中主要有一个八位的寄存器,但我们只用了其中的三位用来存储外部给予的ir三位控制信号以及三组二位D触发器,用来存储输入的五位指令信号,还有一个节拍器,通过外部给予时钟信号,产生四个节拍,使整个控制器有序工作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现以指令add为例进行分析
add是一条双字节指令,在t1时进行给出当前微地址的微指令,然后在t2时给出下址,放入到7474地址寄存器组中,在t3时取出指令,从IR7…5进行输入,将结果输入到74244寄存器中进行存储,在t4时通过给rom进行译码操作给出相应的下址重新返回给7474地址寄存器组。具体操作如下:
比方说add指令的前地址为0FH
进入之后先执行pc->ar和pc+1操作,用来从RAM中取出完整的ADD指令,此时的下址为03H
然后执行RAM->AR操作,将RAM中的数据取出放入AR中,此时的下址为04H
然后再执行RAM->DR2操作,将RAM中的数据取出放入DR2暂存器,用来进行计算,此时的下址为05H
再进行R5->DR1操作,将R5寄存器中的数据取出放入DR1暂存器,用来后续进行计算,此时的下址为06H
再进行ALU->R5操作,将DR1和DR2两个暂存器中的数据进行相加操作后将结果放入R5寄存器中,此时的下址为01H
此时再进行跳转,整个指令执行结束。
以下为仿真文件以及仿真结果:
在这里插入图片描述
在这里插入图片描述
以下为下载结果:
在这里插入图片描述
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!