课设报告数据结构.docx
《课设报告数据结构.docx》由会员分享,可在线阅读,更多相关《课设报告数据结构.docx(45页珍藏版)》请在冰豆网上搜索。
![课设报告数据结构.docx](https://file1.bdocx.com/fileroot1/2023-6/20/715f3ae1-ff92-41ac-a633-9b12e7b17fa0/715f3ae1-ff92-41ac-a633-9b12e7b17fa01.gif)
课设报告数据结构
《计算机组成原理与汇编实验》
实验报告
学生姓名:
王明颖
学号:
14570131
同组成员:
张伟宸翟芸婷
完成日期:
2016.7.8
成绩:
一、实验一……………………………………………………1
二、实验二……………………………………………………13
三、实验三……………………………………………………18四、实验四……………………………………………………31
五、心得与体会………………………………………………39
六、参考资料…………………………………………………39
一.实验一——16位并行进位运算器功能部件的设计与实现
(一)总体设计
1.1.1问题分析
了解并行进位运算器的工作原理和过程,利用多个芯片采用扩展的方式设计出16位并行进位运算器功能部件,并封装调试。
1、分析并设计16位并行进位运算器的基本结构;
2、选择芯片及若干元器件进行物理连接,完成16位并行进位运算器功能部件的设计,并实现部件的封装;
3、对设计出的16位并行进位运算器功能部件进行测试,检查运算器功能部件是否能够正确完成数值运算的功能。
运算器(ALU)功能部件是为了完成计算机主机系统设计实践的算术/逻辑运算功能而设计的功能部件,是计算机进行算术/逻辑运算的核心部件。
在本范例中设计的运算器功能部件可以对8位数据进行算术/逻辑运算。
此部件采用了两片4位片的74181,通过串行进位而扩展成8位运算器。
暂存器(74273)对从总线上面传来的数据进行寄存,可以起到暂存数据的作用。
三态门(74244)由控制信号ALU-BUS控制,保证ALU运算所得到的结果在需要时送上总线,完成算术逻辑运算。
1.1.2总体方案设计。
1、设计出部件的逻辑原理图,画出部件的逻辑电路布线图;
2、拟定测试数据及测试方法;
3、检测模拟仿真测试结果的正确性;
4、对设计出的部件进行封装,并写出封装后芯片的功能表。
(二)详细设计
1.2.1每个模块的功能
完成运算
1.2.2入出信息
输入信息
输出信息
1.2.3处理逻辑
1.2.4屏幕显示布局设计图
74181功能表
74182功能表
运算器封装
布局设计图
(3)程序编码。
--Copyright(C)1991-2008AlteraCorporation
--YouruseofAlteraCorporation'sdesigntools,logicfunctions
--andothersoftwareandtools,anditsAMPPpartnerlogic
--functions,andanyoutputfilesfromanyoftheforegoing
--(includingdeviceprogrammingorsimulationfiles),andany
--associateddocumentationorinformationareexpresslysubject
--tothetermsandconditionsoftheAlteraProgramLicense
--SubscriptionAgreement,AlteraMegaCoreFunctionLicense
--Agreement,orotherapplicablelicenseagreement,including,
--withoutlimitation,thatyouruseisforthesolepurposeof
--programminglogicdevicesmanufacturedbyAlteraandsoldby
--Alteraoritsauthorizeddistributors.Pleaserefertothe
--applicableagreementforfurtherdetails.
--PROGRAM"QuartusII64-Bit"
--VERSION"Version8.0Build21505/29/2008SJFullVersion"
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYwork;
ENTITYBlock1IS
port
(
cn:
INSTD_LOGIC;
m:
INSTD_LOGIC;
a:
INSTD_LOGIC_VECTOR(15downto0);
b:
INSTD_LOGIC_VECTOR(15downto0);
s:
INSTD_LOGIC_VECTOR(3downto0);
f:
OUTSTD_LOGIC_VECTOR(15downto0)
);
ENDBlock1;
ARCHITECTUREbdf_typeOFBlock1IS
attributeblack_box:
boolean;
attributenoopt:
boolean;
component\74181_0\
PORT(B0N:
INSTD_LOGIC;
A0N:
INSTD_LOGIC;
A1N:
INSTD_LOGIC;
B1N:
INSTD_LOGIC;
A3N:
INSTD_LOGIC;
B2N:
INSTD_LOGIC;
A2N:
INSTD_LOGIC;
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
B3N:
INSTD_LOGIC;
S2:
INSTD_LOGIC;
S1:
INSTD_LOGIC;
S0:
INSTD_LOGIC;
S3:
INSTD_LOGIC;
PN:
OUTSTD_LOGIC;
GN:
OUTSTD_LOGIC;
F3N:
OUTSTD_LOGIC;
F1N:
OUTSTD_LOGIC;
F0N:
OUTSTD_LOGIC;
F2N:
OUTSTD_LOGIC);
endcomponent;
attributeblack_boxof\74181_0\:
componentistrue;
attributenooptof\74181_0\:
componentistrue;
component\74181_1\
PORT(B0N:
INSTD_LOGIC;
A0N:
INSTD_LOGIC;
A1N:
INSTD_LOGIC;
B1N:
INSTD_LOGIC;
A3N:
INSTD_LOGIC;
B2N:
INSTD_LOGIC;
A2N:
INSTD_LOGIC;
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
B3N:
INSTD_LOGIC;
S2:
INSTD_LOGIC;
S1:
INSTD_LOGIC;
S0:
INSTD_LOGIC;
S3:
INSTD_LOGIC;
PN:
OUTSTD_LOGIC;
GN:
OUTSTD_LOGIC;
F3N:
OUTSTD_LOGIC;
F1N:
OUTSTD_LOGIC;
F0N:
OUTSTD_LOGIC;
F2N:
OUTSTD_LOGIC);
endcomponent;
attributeblack_boxof\74181_1\:
componentistrue;
attributenooptof\74181_1\:
componentistrue;
component\74181_2\
PORT(B0N:
INSTD_LOGIC;
A0N:
INSTD_LOGIC;
A1N:
INSTD_LOGIC;
B1N:
INSTD_LOGIC;
A3N:
INSTD_LOGIC;
B2N:
INSTD_LOGIC;
A2N:
INSTD_LOGIC;
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
B3N:
INSTD_LOGIC;
S2:
INSTD_LOGIC;
S1:
INSTD_LOGIC;
S0:
INSTD_LOGIC;
S3:
INSTD_LOGIC;
PN:
OUTSTD_LOGIC;
GN:
OUTSTD_LOGIC;
F3N:
OUTSTD_LOGIC;
F1N:
OUTSTD_LOGIC;
F0N:
OUTSTD_LOGIC;
F2N:
OUTSTD_LOGIC);
endcomponent;
attributeblack_boxof\74181_2\:
componentistrue;
attributenooptof\74181_2\:
componentistrue;
component\74181_3\
PORT(B0N:
INSTD_LOGIC;
A0N:
INSTD_LOGIC;
A1N:
INSTD_LOGIC;
B1N:
INSTD_LOGIC;
A3N:
INSTD_LOGIC;
B2N:
INSTD_LOGIC;
A2N:
INSTD_LOGIC;
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
B3N:
INSTD_LOGIC;
S2:
INSTD_LOGIC;
S1:
INSTD_LOGIC;
S0:
INSTD_LOGIC;
S3:
INSTD_LOGIC;
PN:
OUTSTD_LOGIC;
GN:
OUTSTD_LOGIC;
F3N:
OUTSTD_LOGIC;
F1N:
OUTSTD_LOGIC;
F0N:
OUTSTD_LOGIC;
F2N:
OUTSTD_LOGIC);
endcomponent;
attributeblack_boxof\74181_3\:
componentistrue;
attributenooptof\74181_3\:
componentistrue;
component\74182_4\
PORT(PN2:
INSTD_LOGIC;
GN2:
INSTD_LOGIC;
GN3:
INSTD_LOGIC;
PN3:
INSTD_LOGIC;
CI:
INSTD_LOGIC;
PN1:
INSTD_LOGIC;
PN0:
INSTD_LOGIC;
GN1:
INSTD_LOGIC;
GN0:
INSTD_LOGIC;
CY:
OUTSTD_LOGIC;
CX:
OUTSTD_LOGIC;
CZ:
OUTSTD_LOGIC);
endcomponent;
attributeblack_boxof\74182_4\:
componentistrue;
attributenooptof\74182_4\:
componentistrue;
signalf_ALTERA_SYNTHESIZED:
STD_LOGIC_VECTOR(15downto0);
signalSYNTHESIZED_WIRE_0:
STD_LOGIC;
signalSYNTHESIZED_WIRE_1:
STD_LOGIC;
signalSYNTHESIZED_WIRE_2:
STD_LOGIC;
signalSYNTHESIZED_WIRE_3:
STD_LOGIC;
signalSYNTHESIZED_WIRE_4:
STD_LOGIC;
signalSYNTHESIZED_WIRE_5:
STD_LOGIC;
signalSYNTHESIZED_WIRE_6:
STD_LOGIC;
signalSYNTHESIZED_WIRE_7:
STD_LOGIC;
signalSYNTHESIZED_WIRE_8:
STD_LOGIC;
signalSYNTHESIZED_WIRE_9:
STD_LOGIC;
signalSYNTHESIZED_WIRE_10:
STD_LOGIC;
BEGIN
b2v_inst:
74181_0
PORTMAP(B0N=>b(0),
A0N=>a(0),
A1N=>a
(1),
B1N=>b
(1),
A3N=>a(3),
B2N=>b
(2),
A2N=>a
(2),
M=>m,
CN=>cn,
B3N=>b(3),
S2=>s
(2),
S1=>s
(1),
S0=>s(0),
S3=>s(3),
PN=>SYNTHESIZED_WIRE_6,
GN=>SYNTHESIZED_WIRE_5,
F3N=>f_ALTERA_SYNTHESIZED(3),
F1N=>f_ALTERA_SYNTHESIZED
(1),
F0N=>f_ALTERA_SYNTHESIZED(0),
F2N=>f_ALTERA_SYNTHESIZED
(2));
b2v_inst1:
74181_1
PORTMAP(B0N=>b(4),
A0N=>a(4),
A1N=>a(5),
B1N=>b(5),
A3N=>a(7),
B2N=>b(6),
A2N=>a(6),
M=>m,
CN=>SYNTHESIZED_WIRE_0,
B3N=>b(7),
S2=>s
(2),
S1=>s
(1),
S0=>s(0),
S3=>s(3),
PN=>SYNTHESIZED_WIRE_3,
GN=>SYNTHESIZED_WIRE_4,
F3N=>f_ALTERA_SYNTHESIZED(7),
F1N=>f_ALTERA_SYNTHESIZED(5),
F0N=>f_ALTERA_SYNTHESIZED(4),
F2N=>f_ALTERA_SYNTHESIZED(6));
b2v_inst2:
74181_2
PORTMAP(B0N=>b(8),
A0N=>a(8),
A1N=>a(9),
B1N=>b(9),
A3N=>a(11),
B2N=>b(10),
A2N=>a(10),
M=>m,
CN=>SYNTHESIZED_WIRE_1,
B3N=>b(11),
S2=>s
(2),
S1=>s
(1),
S0=>s(0),
S3=>s(3),
PN=>SYNTHESIZED_WIRE_7,
GN=>SYNTHESIZED_WIRE_9,
F3N=>f_ALTERA_SYNTHESIZED(11),
F1N=>f_ALTERA_SYNTHESIZED(9),
F0N=>f_ALTERA_SYNTHESIZED(8),
F2N=>f_ALTERA_SYNTHESIZED(10));
b2v_inst3:
74181_3
PORTMAP(B0N=>b(12),
A0N=>a(12),
A1N=>a(13),
B1N=>b(13),
A3N=>a(15),
B2N=>b(14),
A2N=>a(14),
M=>m,
CN=>SYNTHESIZED_WIRE_2,
B3N=>b(15),
S2=>s
(2),
S1=>s
(1),
S0=>s(0),
S3=>s(3),
PN=>SYNTHESIZED_WIRE_8,
GN=>SYNTHESIZED_WIRE_10,
F3N=>f_ALTERA_SYNTHESIZED(15),
F1N=>f_ALTERA_SYNTHESIZED(13),
F0N=>f_ALTERA_SYNTHESIZED(12),
F2N=>f_ALTERA_SYNTHESIZED(14));
b2v_inst4:
74182_4
PORTMAP(PN2=>SYNTHESIZED_WIRE_3,
GN2=>SYNTHESIZED_WIRE_4,
GN3=>SYNTHESIZED_WIRE_5,
PN3=>SYNTHESIZED_WIRE_6,
CI=>cn,
PN1=>SYNTHESIZED_WIRE_7,
PN0=>SYNTHESIZED_WIRE_8,
GN1=>SYNTHESIZED_WIRE_9,
GN0=>SYNTHESIZED_WIRE_10,
CY=>SYNTHESIZED_WIRE_1,
CX=>SYNTHESIZED_WIRE_2,
CZ=>SYNTHESIZED_WIRE_0);
f<=f_ALTERA_SYNTHESIZED;
END;
(四)遇到的问题及解决方法分析
遇到的问题:
进位怎样传入。
解决办法:
通过74182芯片来传输进位。
(五)尚未解决的问题及其应对策略
尚未解决的问题:
运算结果总比实际结果多一
应对策略:
S0~S3的赋值不同所运行的运算不同,可以通过改变S0~S3的赋值来解决。
二.实验二——带字位扩展存储器功能部件的设计与实现
(一)总体设计
2.1.1问题分析
了解随机存储器的工作原理和过程,熟悉随机存储器的读写原理。
根据存储器的工作原理,并且按照存储器字位扩展的基本原则完成存储器功能部件的设计,并实现器件封装,测试存储器的读写功能。
1、设计出存储器功能部件的基本结构;
2、选择芯片及若干元器件进行物理连接,完成存储器部件的设计并实现部件的封装;
3、对该部件进行模拟仿真测试,检查存储器功能部件的数据读写是否正确。
功能介绍:
存储器功能部件(Memory)是为了提供存储数据和程序而设计的功能部件。
可作为主机系统的主存储器使用。
在存储器功能部件中,设计了主存地址寄存器(MAR)和主存数据寄存器(MDR),作为主存与CPU进行数据交换的接口。
MAR接收、暂存总线上的主存地址,MDR暂存输出到总线上的数据。
CPMAR和CPMDR管脚分别作为主存地址寄存器(MAR)和主存数据寄存器(MDR)的数据接收控制信号。
RD作为存储器的读控制信号(上升沿触发),在RD为高电位(即:
存储器数据输出有效)期间,应发出CPMDR脉冲控制信号,使存储器的读出数据锁存到存储器数据寄存器MDR中。
WR和WRE分别作为存储器的写控制信号和写使能控制信号,在WRE为高电位期间,发出WR脉冲控制信号(上升沿有效),则可以把输入数据写入到主存储器中。
RAM-BUS控制信号(低电位有效)完成将存储器的输出数据通过三态门输出的功能。
2.1.2总体方案设计。
1、设计出部件的逻辑原理图,画出部件的逻辑电路布线图;
2、拟定测试数据及测试方法;
3、检测模拟仿真测试结果的正确性;
4、对设计出的部件进行封装,并写出封装后芯片的功能表。
(二)详细设计
2.2.1每个模块的功能
具有扩展功能的存储器存储功能
2.2.2处理逻辑
2.2.3屏幕显示布局设计图
74273功能表
74244功能表
存储器封装
布局设计图
(3)程序编码。
//Copyright(C)1991-2008AlteraCorporation
//YouruseofAlteraCorporation'sdesigntools,logicfunctions
//andothersoftwareandtools,anditsAMPPpartnerlogic
//functions,andanyoutputfilesfromanyoftheforegoing
//(includingdeviceprogrammingorsimulationfiles),andany
//associateddocumentationorinformationareexpresslysubject
//tothetermsandconditionsoftheAlteraProgramLicense
//SubscriptionAgreement,AlteraMegaCoreFunctionLicense
//Agreement,orotherapplicablelicenseagreement,including,
//withoutlimitation,thatyouruseisforthesolepurposeof
//programminglogicdevicesmanufacturedbyAlteraandsoldby
//Alteraoritsauthorizeddistributors.Pleaserefertothe
//applicableagreementforfurtherdetails.
//PROGRAM"QuartusII64-Bit"
//VERSION"Version8.0Build21505/29/2008SJFullVersion"
moduleBlock12(
WRE,
WR,
RD,
clka,
clkd,
CLRN,
GN,
a,
in,
out
);
inputWRE;
inputWR;
inputRD;
inputclka;
inputclkd;
inputCLRN;
inputGN