SE22综合性实验报告剖析Word格式.docx
- 文档编号:19436263
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:32
- 大小:301.66KB
SE22综合性实验报告剖析Word格式.docx
《SE22综合性实验报告剖析Word格式.docx》由会员分享,可在线阅读,更多相关《SE22综合性实验报告剖析Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
实现上,用实验4所用的简单通用寄存器组(4个寄存器+1个2-4译码器+2个4选1多路开关)设计方法,替代参考代码中的通用寄存器组部分。
(3)学习和掌握控制逻辑。
设计一套指令集(可在原参考代码指令集的基础上做删减,从中选取16条基本的指令),并修改控制器中指令集的译码部分。
(4)执行部件,ALU的改造。
可在原参考代码的基础上,改变某些运算功能的实现方式,比如加、减、增1、减1等算术运算。
实现上,原参考代码采用了最少编码量的“+”、“-”号实现。
可以改用通过portmap语句调用系统自带的加法器,也可以进一步自己编写加法器,然后用portmap语句调用。
(5)存储器部分的加入。
原参考代码采用的带外部存储器的模式。
实现上,可以在实验3的基础上,设计一个适合加到本CPU系统的存储器部分,通过与原参考代码系统连接外带存储器的数据线、控制线和地址线相连接。
此部分设计中,存储器的指令置入是一个难点。
可以考虑简单点的作为只读模式把指令写死在存储器中(可用于验证指令的执行);
或者考虑在reset的那一拍里,实现存储器中待指令的置入。
存储器模块单独调试可行后再加到系统上。
(九)总结构图
(十)指令集
(参考实验大纲中的示例,结合各小组自己的设计),撰写内容可参照参考材料的实践报告.doc中的指令系统总体说明(p9-11页)
(1)指令格式分类(按指令字长和操作数不同):
单字单操作数指令
74
32
10
OPCODEDEST_REG0000
OPCODEOFFSET
包括:
DEC,SHL,SHR,JR,JRC
单字双操作数指令
OPCODEDEST_REGSOUR_REG
ADD,AND,CMP,XOR,OR,MVRR,ADC,LDRR,STRR
③双字单操作数指令
OPCODE00000000
ADR
JMPA
④双字双操作数指令
DATA
MVRD
(2)指令的分组及节拍:
由于没有中断操作,本机指令的执行步骤可概括如下:
读取指令:
地址寄存器<
-指令地址,修改PC内容使其指向下一条将要执行的指令;
读内存,指令寄存器<
-读出的内容。
分析指令
执行指令:
通用寄存器之间的运算或传送,可1步完成;
读写内存,通常要两步完成。
根据指令的执行步骤不同,可以把全部指令分为A、B两组。
其中A组指令完成的是通用寄存器之间的数据运算或传送,或其他一些特殊操作,在取指之后可一步完成,包括:
ADD,AND,CMP,XOR,OR,MVRR,DEC,SHL,SHR,ADC,JR,JRC;
B组指令完成的是一次内存读写操作,在取指之后可两步完成,包括:
JMPA,LDRR,STRR,MVRD。
在编码的时候以指令操作码的最高两位来区分A、B组指令,00,01,10为A组指令,11为B组指令。
在控制器方面我们选用了组合逻辑控制器方案。
使用节拍来标记每条指令的执行步骤。
由指令而定,在我们的系统中不同的执行步骤只有5个,故使用3位节拍就足够了。
000
001
B组指令
101111
A组指令
011
(3)指令汇总表:
指令格式
汇编语句
操作数个数
CZVS
指令类型
功能说明
0000DRSR
ADDDR,SR
2
****
DR<
-DR+SR
0001DRSR
ANDDR,SR
A
-DRandSR
0010DRSR
CMPDR,SR
DR-SR
0011DRSR
XORDR,SR
-DRxorSR
0100DRSR
MVRR
….
组
-SR
0101DR00
DECDR
1
-DR-1
0110DR00
SHLDR
*…
指
DR,C<
-DR*2
0111DR00
SHRDR
-DR/2
1000DRSR
ADCDR,SR
-DR+SR+C
1001OFFSET
JRADR
无条件跳转
1010OFFSET
JRCADR
C=1时跳转
1011DRSR
ORDR,SR
-DRorSR
11000000ADR
JMPAADR
B
无条件跳转到ADR
1101DR00DATA
MVRDDR,DATA
令
-DATA
1110DRSR
LDRRDR,[SR]
-[SR]
1111DR0000
STRR[DR],SR
[DR]<
(十一)各部分设计
1.取指及调试
(0)是否加到最后整组的系统中
是
(1)修改后是否编译通过(指加到整个小组的系统里)
是
(2)修改后是否可运行(指加到整个小组的系统里)
(3)概要描述
调试汇编程序如下:
Movax,9
Movbx,14
Andax,bx
Cmpax,bx
Xorax,bx
Mvrrax,bx
Decax
Shlax
Shrax
Adcax,bx
MOVAX,9
LDRRBX,[AX]
JMPAX
写入内存指令如下:
ram(0)<
="
11010000"
;
--mov
ram
(1)<
00001001"
ram
(2)<
11010100"
ram(3)<
00001110"
ram(4)<
00010001"
--and
ram(5)<
00100001"
--cmp
ram(6)<
00110001"
--xor
ram(7)<
01000001"
--dr<
-sr
ram(8)<
01010000"
--dec
ram(9)<
01100000"
--shl
ram(10)<
01110000"
--shr
ram(11)<
10000001"
--adc
ram(12)<
ram(13)<
ram(14)<
11101000"
--ldrrdr,[sr]
ram(15)<
11000000"
--jmp
ram(16)<
00000000"
取指、调试模块:
部分代码说明如下:
libraryieee;
useieee.std_logic_1164.all;
entityreg_testais
port(clk,reset:
instd_logic;
input_a:
instd_logic_vector(2downto0);
input_b:
input_c:
cin:
rec:
instd_logic_vector(1downto0);
pc_en,reg_en:
q:
outstd_logic_vector(7downto0);
-----q<
=temp
q1:
outstd_logic_vector(7downto0));
-----q2<
=temp2
endreg_testa;
architecturebehaveofreg_testais
begin
process(clk,reset,input_a,input_b,input_c,cin,rec,pc_en,reg_en)
variabletemp:
std_logic_vector(7downto0);
variabletemp2:
begin
temp:
='
0'
&
input_a&
'
input_b;
-----每个观察端口为8位;
temp2:
=cin&
input_c&
rec&
pc_en&
reg_en;
ifreset='
then
q<
="
q1<
elsifclk'
eventandclk='
1'
then
q<
=temp;
q1<
=temp2;
endif;
endprocess;
endbehave;
2.控制逻辑
如果回答为否,可跳过第
(1)和
(2)问。
可以编译通过
可以运行
1.将组内讨论选取的指令进行编码。
2.在Controler的源代码中,将对应指令的编码,用自己新编的替代
3.修改Controler中,变量,输入,输出的位数
4.删除未被选中指令的代码
5.修改与Controler关联的一些小部件的代码(timer,offset等),主要是修改位数。
(4)相关的源代码、电原理图和其它说明表格。
BSF图:
Vhd:
entitycontrolleris
port(timer:
instruction:
instd_logic_vector(7downto0);
c,z,v,s:
dest_reg,sour_reg:
outstd_logic_vector(1downto0);
offset:
outstd_logic_vector(3downto0);
sst,sci,rec:
alu_func,alu_in_sel:
outstd_logic_vector(2downto0);
en_reg,en_pc,wr:
outstd_logic);
endcontroller;
architecturebehaveofcontrolleris
process(timer,instruction,c,z,v,s)
variabletemp1,temp2:
std_logic_vector(3downto0);
variabletemp3,temp4:
std_logic_vector(1downto0);
variablealu_out_sel:
std_logic_vector(1downto0);
forIin3downto0loop
temp1(I):
=instruction(I+4);
temp2(I):
=instruction(I);
endloop;
forIin1downto0loop
temp3(I):
=instruction(I+2);
temp4(I):
casetimeris//从这里往上修改的是位数,将位数减半
when"
100"
=>
//这里往下是节拍前3节拍还是改位数
dest_reg<
00"
sour_reg<
offset<
0000"
sci<
sst<
11"
alu_out_sel:
alu_in_sel<
000"
alu_func<
wr<
='
rec<
when"
01"
10"
001"
011"
//这个节拍中对应的指令编码都修改了
//还有修改位数
casetemp1is
when"
--ADD
dest_reg<
=temp3;
sour_reg<
=temp4;
offset<
sci<
sst<
alu_out_sel:
alu_in_sel<
alu_func<
0001"
--AND
010"
0010"
--CMP
0011"
--XOR
0100"
--MVRR
0101"
--DEC
0110"
--SHL
101"
0111"
--SHR
110"
1000"
--ADC
1001"
--JR
=temp2;
1010"
--JRC
=c&
"
0"
1011"
=(nots)&
whenothers=>
null;
endcase;
//这里以下是B组指令
1100"
|"
1101"
rec<
1110"
1111"
111"
wr<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SE22 综合性 实验 报告 剖析