嵌入式 实验二运算器组成实验.docx
- 文档编号:11775773
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:23
- 大小:1.22MB
嵌入式 实验二运算器组成实验.docx
《嵌入式 实验二运算器组成实验.docx》由会员分享,可在线阅读,更多相关《嵌入式 实验二运算器组成实验.docx(23页珍藏版)》请在冰点文库上搜索。
嵌入式实验二运算器组成实验
实验二运算器组成实验
算术逻辑运算实验
一.实验目的
1.了解简单运算器的数据传输通路。
2.验证运算功能发生器的组合功能。
3.掌握算术逻辑运算加、减、与的工作原理。
4.验证实验台运算的8位加、减、与、直通功能。
5.按给定数据,完成几种指定的算术和逻辑运算。
二、实验框图
三、数据表格及仿真图
表2-2A[7..0],B[7..0]设置值检查
F[7..0]
SW_B
寄存器内容
S3S2S1S0
M
BUS
A[7..0]
B[7..0]
01010101
1010101010
01010101
1010101010
表2-3
S3S2S1S0
A[7..0]
B[7..0]
算术运算M=0
逻辑运算(M=1)
cn=0(无进位)
cn=1(有进位)
0000
AA
55
F=(AA)
F=(AB)
F=(55)
0001
AA
55
F=(FF)
F=(00)
F=(00)
0010
AA
55
F=(AA)
F=(AB)
F=(55)
0011
AA
55
F=(00)
F=(FF)
F=(00)
0100
FF
01
F=(FD)
F=(FE)
F=(FE)
0101
FF
01
F=(FD)
F=(FE)
F=(FE)
0110
FF
01
F=(FE)
F=(FD)
F=(FE)
0111
FF
01
F=(FF)
F=(FE)
F=(FE)
1000
FF
FF
F=(FE)
F=(FF)
F=(FF)
1001
FF
FF
F=(FE)
F=(FF)
F=(FF)
1010
FF
FF
F=(FE)
F=(FF)
F=(FF)
1011
FF
FF
F=(FF)
F=(FE)
F=(FF)
1100
55
01
F=(FF)
F=(AB)
F=(01)
1101
55
01
F=(AA)
F=(AB)
F=(FF)
1110
55
01
F=(54)
F=(55)
F=(55)
1111
55
01
F=(55)
F=(54)
F=(55)
1、A[]=AA,B[]=55,S[]=0000~0011,M=0,CN=1.
A[]=AA,B[]=55,S[]=0000~0011,M=0,CN=0
A[]=AA,B[]=55,S[]=0000~0011,M=1,
2、A[]=FF,B[]=01,S[]=0100~0111,M=0,CN=1
A[]=FF,B[]=01,S[]=0100~0111,M=0,CN=0
A[]=FF,B[]=01,S[]=0100~0111,M=1
3、原理同上
4、A[]=55,B[]=01,S[]=1100~1111,M=1,
A[]=55,B[]=01,S[]=1100~1111,M=0,CN=0
A[]=55,B[]=01,S[]=1100~1111,M=0,CN=1
表2-48种常用的算术与逻辑运算
操作
S3S2S1S0
M
Cn
DR1
DR2
运算关系及结果显示
Cn4
逻辑乘
1011
1
0/1
55
AA
DR1.DR2→DR2(00)
0
传送
1111
1
0/1
55
AA
DR1 →DR2(55)
0
按位加
0110
1
0/1
55
AA
DR1
DR2→DR2(FF)
1
取反
0000
1
0/1
55
AA
→ DR2(AA)
1
加1
0000
0
1
55
AA
DR2+1→DR2(56)
0
求负
0010
0
1
55
AA
+1→DR2(56)
1
加法
1001
0
0
55
AA
DR1+DR2→DR2(FF)
0
减法
0110
0
0
55
AA
DR1–DR2→DR2(AB)
0
1、逻辑乘
2、传送
3、按位加
4、取反
5、加一
6、求负
7、加法
8、减法
三、1、通过抽样进行理论计算,对比于实验所得的数据,完全相等。
2、通过这次实验,我对算术逻辑运算单元和功能有了基本的了解,认识了他的工作原理。
附录、程序
1、ALU181
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALU181IS
PORT(
S:
INSTD_LOGIC_VECTOR(3DOWNTO0);
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
F:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
COUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
CO,FZ:
OUTSTD_LOGIC);
ENDALU181;
ARCHITECTUREbehavOFALU181IS
SIGNALA9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALB9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALF9:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
A9<='0'&A;B9<='0'&B;
PROCESS(M,CN,A9,B9)
BEGIN
IF(A9=B9)THENFZ<='1';ENDIF;
CASESIS
WHEN"0000"=>IFM='0'THENF9<=A9+CN;ELSEF9<=NOTA9;ENDIF;
WHEN"0001"=>IFM='0'THENF9<=(A9orB9)+CN;ELSEF9<=NOT(A9ORB9);ENDIF;
WHEN"0010"=>IFM='0'THENF9<=(A9or(NOTB9))+CN;ELSEF9<=(NOTA9)ANDB9;ENDIF;
WHEN"0011"=>IFM='0'THENF9<="000000000"-CN;ELSEF9<="000000000";ENDIF;
WHEN"0100"=>IFM='0'THENF9<=A9+(A9AND(NOTB9))+CN;ELSEF9<=NOT(A9ANDB9);ENDIF;
WHEN"0101"=>IFM='0'THENF9<=(A9orB9)+(A9ANDNOTB9)+CN;ELSEF9<=NOTB9;ENDIF;
WHEN"0110"=>IFM='0'THENF9<=(A9-B9)-CN;ELSEF9<=A9XORB9;ENDIF;
WHEN"0111"=>IFM='0'THENF9<=(A9or(NOTB9))-CN;ELSEF9<=A9and(NOTB9);ENDIF;
WHEN"1000"=>IFM='0'THENF9<=A9+(A9ANDB9)+CN;ELSEF9<=(NOTA9)ORB9;ENDIF;
WHEN"1001"=>IFM='0'THENF9<=A9+B9+CN;ELSEF9<=NOT(A9XORB9);ENDIF;
WHEN"1010"=>IFM='0'THENF9<=(A9or(NOTB9))+(A9ANDB9)+CN;ELSEF9<=B9;ENDIF;
WHEN"1011"=>IFM='0'THENF9<=(A9ANDB9)-CN;ELSEF9<=A9ANDB9;ENDIF;
WHEN"1100"=>IFM='0'THENIFCN='1'THEN
F9<=(A9+A9)+CN;
ELSE
F9<=A9(7downto0)&'0'+A9;ENDIF;
ELSEF9<="000000001";
ENDIF;
WHEN"1101"=>IFM='0'THENF9<=(A9orB9)+A9+CN;ELSEF9<=A9OR(NOTB9);ENDIF;
WHEN"1110"=>IFM='0'THENF9<=((A9or(NOTB9))+A9)+CN;ELSEF9<=A9ORB9;ENDIF;
WHEN"1111"=>IFM='0'THENF9<=A9-CN;ELSEF9<=A9;ENDIF;
WHENOTHERS=>F9<="000000000";
ENDCASE;
IF(A9=B9)THENFZ<='0';ENDIF;
ENDPROCESS;
F<=F9(7DOWNTO0);CO<=F9(8);
COUT<="0000"WHENF9(8)='0'ELSE"0001";
ENDbehav;
2、lpm_counter
--megafunctionwizard:
%LPM_COUNTER%
--GENERATION:
STANDARD
--VERSION:
WM1.0
--MODULE:
lpm_counter
--============================================================
--FileName:
lpm_counter0.vhd
--MegafunctionName(s):
--lpm_counter
--
--SimulationLibraryFiles(s):
--lpm
--============================================================
--************************************************************
--THISISAWIZARD-GENERATEDFILE.DONOTEDITTHISFILE!
--
--9.0Build13202/25/2009SJFullVersion
--************************************************************
--Copyright(C)1991-2009AlteraCorporation
--YouruseofAlteraCorporation'sdesigntools,logicfunctions
--andothersoftwareandtools,anditsAMPPpartnerlogic
--functions,andanyoutputfilesfromanyoftheforegoing
--(includingdeviceprogrammingorsimulationfiles),andany
--associateddocumentationorinformationareexpresslysubject
--tothetermsandconditionsoftheAlteraProgramLicense
--SubscriptionAgreement,AlteraMegaCoreFunctionLicense
--Agreement,orotherapplicablelicenseagreement,including,
--withoutlimitation,thatyouruseisforthesolepurposeof
--programminglogicdevicesmanufacturedbyAlteraandsoldby
--Alteraoritsauthorizeddistributors.Pleaserefertothe
--applicableagreementforfurtherdetails.
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYlpm;
USElpm.all;
ENTITYlpm_counter0IS
PORT
(
clock:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDlpm_counter0;
ARCHITECTURESYNOFlpm_counter0IS
SIGNALsub_wire0:
STD_LOGIC_VECTOR(3DOWNTO0);
COMPONENTlpm_counter
GENERIC(
lpm_direction:
STRING;
lpm_port_updown:
STRING;
lpm_type:
STRING;
lpm_width:
NATURAL
);
PORT(
clock:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOMPONENT;
BEGIN
q<=sub_wire0(3DOWNTO0);
lpm_counter_component:
lpm_counter
GENERICMAP(
lpm_direction=>"UP",
lpm_port_updown=>"PORT_UNUSED",
lpm_type=>"LPM_COUNTER",
lpm_width=>4
)
PORTMAP(
clock=>clock,
q=>sub_wire0
);
ENDSYN;
--============================================================
--CNXfileretrievalinfo
--============================================================
--Retrievalinfo:
PRIVATE:
ACLRNUMERIC"0"
--Retrievalinfo:
PRIVATE:
ALOADNUMERIC"0"
--Retrievalinfo:
PRIVATE:
ASETNUMERIC"0"
--Retrievalinfo:
PRIVATE:
ASET_ALL1NUMERIC"1"
--Retrievalinfo:
PRIVATE:
CLK_ENNUMERIC"0"
--Retrievalinfo:
PRIVATE:
CNT_ENNUMERIC"0"
--Retrievalinfo:
PRIVATE:
CarryInNUMERIC"0"
--Retrievalinfo:
PRIVATE:
CarryOutNUMERIC"0"
--Retrievalinfo:
PRIVATE:
DirectionNUMERIC"0"
--Retrievalinfo:
PRIVATE:
INTENDED_DEVICE_FAMILYSTRING"CycloneII"
--Retrievalinfo:
PRIVATE:
ModulusCounterNUMERIC"0"
--Retrievalinfo:
PRIVATE:
ModulusValueNUMERIC"0"
--Retrievalinfo:
PRIVATE:
SCLRNUMERIC"0"
--Retrievalinfo:
PRIVATE:
SLOADNUMERIC"0"
--Retrievalinfo:
PRIVATE:
SSETNUMERIC"0"
--Retrievalinfo:
PRIVATE:
SSET_ALL1NUMERIC"1"
--Retrievalinfo:
PRIVATE:
SYNTH_WRAPPER_GEN_POSTFIXSTRING"0"
--Retrievalinfo:
PRIVATE:
nBitNUMERIC"4"
--Retrievalinfo:
CONSTANT:
LPM_DIRECTIONSTRING"UP"
--Retrievalinfo:
CONSTANT:
LPM_PORT_UPDOWNSTRING"PORT_UNUSED"
--Retrievalinfo:
CONSTANT:
LPM_TYPESTRING"LPM_COUNTER"
--Retrievalinfo:
CONSTANT:
LPM_WIDTHNUMERIC"4"
--Retrievalinfo:
USED_PORT:
clock0000INPUTNODEFVALclock
--Retrievalinfo:
USED_PORT:
q0040OUTPUTNODEFVALq[3..0]
--Retrievalinfo:
CONNECT:
@clock0000clock0000
--Retrievalinfo:
CONNECT:
q0040@q0040
--Retrievalinfo:
LIBRARY:
lpmlpm.lpm_components.all
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0.vhdTRUE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0.incFALSE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0.cmpTRUE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0.bsfTRUEFALSE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0_inst.vhdFALSE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0_waveforms.htmlTRUE
--Retrievalinfo:
GEN_FILE:
TYPE_NORMALlpm_counter0_wave*.jpgFALSE
--Retrievalinfo:
LIB_FILE:
lpm
2.带进位算术运算实
一.实验目的
1、验证带进位控制的算术运算功能发生器的功能。
2、按指定数据完成几种指定的算术运算。
二、电路框图
三、记录实验数据,给出对应仿真波形图。
表2-5
S3S2S1S0
A[7..0]
B[7..0]
算术运算M=0
逻辑运算(M=1)
cn=0(无进位)
cn=1(有进位)
0101
FF
01
F=(FD)
F=(FD)
F=(FE)
0110
FF
01
F=(FE)
F=(FE)
F=(FE)
0111
FF
01
F=(FF)
F=(FF)
F=(FE)
1000
FF
FF
F=(FE)
F=(FE)
F=(FF)
1001
FF
FF
F=(FE)
F=(FE)
F=(FF)
1010
FF
FF
F=(FE)
F=(FE)
F=(FF)
S=0101~0111,A[7..0]=FF,B[.7..0]=01,M=0.CN=0,
S=0101~0111,A[7..0]=FF,B[.7..0]=01,M=0.CN=1,
S=0101~0111,A[7..0]=FF,B[7..0]=01,M=1
S=1000~1010,A[7..0]=FF,B[7..0]=FF,M=1
S=1000~1010,A[7..0]=FF,B[7..0]=FF,M=0,CN=1
S=1000~1010,A[7..0]=FF,B[7..0]=FF,M=0,CN=0
移位运算器实验
一、实验目的
1.验证移位控制的组合功能。
二、电路框图
三、时序仿真
1、D[7..0]=56,M=0,CO=0
2、D[7..0]=56,M=1,CO=1,
3、D[7..0]=56,M=1,CO=0,
四、经过理论计算并与实验数据对比,两中结果相同。
五、思考题
附录
1、shift
LibraryIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSHIFTIS
PORT(CLK,M,C0:
INSTD_LOGIC;
S:
INSTD_LOGIC_VECTOR(1DOWNTO0);
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
QB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验二运算器组成实验 实验 运算器 组成