版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《计算机组成实验C》
课程设计
适用专业:电子信息类专业
专业:
班级:
学号:
姓名:
指导教师:
实验学期:2014-2015第1学期
西南交通大学
信息科学与技术学院
简化计算机系统的设计
一.实验目的:通过学习简单的指令系统及其各指令的操作流程,用VHDL语
言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块
连接形成简化的计算机系统。
二.实验内容
I.用VHDL语言实现简单的处理器模块。
2.调用存储器模块设计256x16的存储器模块。
3.将简单的处理器模块和存储器模块连接形成简单的计算机系统。
4.将指令序列存入存储器,然后分析指令执行流程。
三.预习要求:1、学习简单指令集。2、学习各指令的操作流程。
四.实验报告
1.BLOCK图
图1原理图
内存文件:
Addr♦0+1♦2+3X+5+6♦7
000000015002400D0001F0094003100E0
8001E004100A10061008400510028002D
16007B00D0001Eooco001900D0001D00B0
24001300F0000000000000000000000000
3200000000000000000000000000000000
4000000000000000000000000000000000
4800000000000000000000000000000000
5600000000000000000000000000000000
6400000000000000000000000000000000
7200000000000000000000000000000000
80____00000000000000000000000000000000
图2内存文件.Mif
2.程序设计
LIBRARYieee;
USEieee.std_logic_1164.ALL;
PACKAGEmypackIS
CONSTANTidle:stdjogic_vector(3DOWNTO0):="0000";
CONSTANTload:stdlogicvector(3DOWNTO0):="0001H;
CONSTANTmove:std_logic_vector(3DOWNTO0):="00l0";
CONSTANTaddx:std_logic_vector(3DOWNTO0):="00ir';
CONSTANTsubp:std_logic_vector(3DOWNTO0):="0100";
CONSTANTandp:std_logic_vector(3DOWNTO0):="0101";
CONSTANTorp:std_logic_vector(3DOWNTO0)
CONSTANTxorp:std_logic_vector(3DOWNTO0):="0111";
CONSTANTshrp:std_logic_vector(3DOWNTO0):="1000";
CONSTANTship:std_logic_vector(3DOWNTO0):="1001";
CONSTANTswap:std_logic_vector(3DOWNTO0):="1010";
CONSTANTjmp:std_logic_vector(3DOWNTO0):="1011";
CONSTANTjz:std_logic_vector(3DOWNTO0):="1100";
CONSTANTread:std_logic_vector(3DOWNTO0)
CONSTANTwrite:std_logic_vector(3DOWNTO0):="1110";
CONSTANTstop:stdjogic_vector(3DOWNTO0):="1111H;
ENDmypack;
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_unsigned.ALL;
USEWORK.mypack.ALL;
-------------------------cpu实体声明-----------------------
ENTITYcpu2IS
PORT(
reset:INstdjogc;-清零信号低有效
clock:INstdjogic;一时钟信号
Write_Read:OUTstdjogic;一读写信号,T为写
M_address:OUTstd_logic_vector(11DOWNTO0);••地址线
M_data_in:INstd_logic_vector(7DOWNTO0);-数据输入线
Mdata_out:OUTstd_logic_vector(7DOWNTO0);--数据输出线
overflow:OUTstdjogic);一溢出标志
ENDcpu2;
..............................cpuRTL级行为描述............
ARCHITECTURERTLofcpu2IS
SIGNALIR:std_logic_vector(15DOWNTO0);-指令寄存器
SIGNALMDR:std_logic_vector(7DOWNTO0);--数据寄存器
SIGNALMAR:std_logic_vector(11DOWNTO0);一地址寄存器
SIGNALstatus:intftgftrRANGE0TO6;--状态寄存器
BEGIN
status_change:PROCESS(reset,clock,status)
BEGIN
IFreset='O'THENstatus<=0;
ELSIFclock'EVENTANDclock='O'THEN
CASEstatusIS
WHEN0=>
status<=1:
WHEN1=>
IFIR(15DOWNTO12)=StopTHEN
status<=1;
ELSE
status<=2;
ENDIF;
WHEN2=>
CASEIR(15DOWNTO12)IS
WHENRead|Write|Jmp|Jz|Swap=>
status<=3;
WHENOTHERS=>
status<=0;
ENDCASE;
WHEN3=>
IFIR(15DOWNTO12)=SwapTHEN
status<=0;
ELSE
status<=4;
ENDIF;
WHEN4=>
status<=5;
WHEN5=>
CASEIR(15DOWNTO12)IS
WHENRead|Write=>
status<=6;
WHENOTHERS=>
status<=0;
ENDCASE;
WHENOTHERS=>
status<=0;
ENDCASE;
ELSE
NULL;
ENDIF;
ENDPROCESSstatuschange;
seq:PROCESS(reset,clock)
VARIABLEPC:std_logic_vector(11DOWNTO0);--程序计数器
VARIABLER0,R1,R2,R3:std_logic_vector(7DOWNTO0);--通用寄存器
VARIABLEA:std_logic_vector(7DOWNTO0);--临时寄存器
VARIABLEtemp:stdlogic_vector(8DOWNTO0);-临时变量
BEGIN
IF(reset='O')THEN—清零
IR<=(OTHERS=>'0');
PC:=(OTHERS=。);
RO:=(OTHERS=>'0,);
R1:=(OTHERS=>'0');
R2:=(OTHERS=。);
R3:=(OTHERS=>'0');
A:=(OTHERS='。');
MAR<=(OTHERS=。);
MDR<=.:OTHERS=>'0');
ELSIFfclock'eventANDclock='1')THEN
overflow<='O';
CASEstatusIS
WHEN0=>-状态0
IR<=M_data_in&"00000000";--取指令
PC:=PC+1;-程序计数器加1
WHEN1=>--状态1
IF(IR(15DOWNTO12)/=stop)THEN
MAR<=PC;
ENDIF;
CASEIR(15DOWNTO12)IS
WHENload=>
R0:="0000"&IR(11DOWNTO8;;
WHENshlp|shrp=>
CASEIR(11DOWNTO10)IS-RxtoA
WHEN,,00',=>A:=R0;
WHEN"01"=>A:=R1;
WHEN"10M=>A:=R2;
WHENOTHERS=>A:=R3;
ENDCASE;
WHENMove|addx|subp|andp|orp|xorp|Swap=>
CASEIR(9DOWNTO8)IS-RytoA
WHEN"00"=>A:=R0;
WHEN"01'=>A:=R1;
WHEN"10M=>A:=R2;
WHENOTHERS=>A:=R3;
ENDCASE;
WHENOTHERS=>NULL;
ENDCASE;
WHEN2=>--状态2
CASEIR(15DOWNTO12)IS
WHENaddx=>-Rx:=Rx+A;
CASEIR(11DOWNTO10)IS
WHEN"00"=>
temp:=(R0(7)&R0(7DOWNTO0))+(A(7)&A(7DOWNTO
0));
R0:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
WHEN"01"=>
temp:=(R1(7)&R1(7DOWNTO0))+(A(7)&A(7DOWNTO
0));
R1:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
WHEN"10"=>
temp:=(R2(7)&R2(7DOWNTO0))+(A(7)&A(7DOWNTO
0));
R2:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
WHENOTHERS=>
temp:=(R3(7)&R3(7DOWNTO0))+(A(7)&A(7DOWNTO
0));
R3:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
ENDCASE;
WHENsubp=>-Rx:=Rx-A;
CASEIR(11DOWNTO10)IS
WHEN"00"=>
temp:=(R0(7)&R0(7DOWNTO0))+NOT(A(7)&A<7
DOWNTO0))+1;
R0:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
WHEN"01'=>
temp:=(R1(7)&R1(7DOWNTO0))+NOT(A(7)&A<7
DOWNTO0))+1;
R1:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
WHEN"10"=>
temp:=(R2(7)&R2(7DOWNTO0))+NOT(A(7)&A<7
DOWNTO0))+1;
R2:=temp(7DOWNTO0);
overflow<=temp(8)xorteTip(7);
WHENOTHERS=>
temp:=(R3(7)&R3(7DOWNTO0))+NOT(A(7)&A<7
DOWNTO0))+1;
R3:=temp(7DOWNTO0);
overflow<=temp(8)XORtemp(7);
ENDCASE;
WHENmove=>
CASEIR(11DOWNTO10)IS
WHEN"00M=>R0:=A;
WHEN"01"=>R1:=A;
WHEN"10M=>R2:=A;
WHENOTHERS=>R3:=A;
ENDCASE;
WHENshrp=>
CASEIR(11DOWNTO10)IS
WHEN"00M=>R0:='O'&A(7DOWNTO1);
WHEN"01"=>R1:='O'&A(7DOWNTO1);
WHEN"10H=>R2:='O'&A(7DOWNTO1);
WHENOTHERS=>R3:=’0,&A(7DOWNTO1);
ENDCASE;
WHENship=>
CASEIR(11DOWNTO10)IS
WHEN"00M=>R0:=A(6DOWNTO0)&'O';
WHEN"01'=>R1:=A(6DOWNTO0)&'O';
WHEN"10'=>R2:=A(6DOWNTO0)&'O';
WHENOTHERS=>R3:=A(6DOWNTO0)&'O';
ENDCASE;
WHENandp=>-Rx:=RxANDA;
CASEIR(11DOWNTO10)IS
WHEN-00H=>R0:=R0ANDA;
WHEN"01"=>R1:=R1ANDA;
WHEN"10M=>R2:=R2ANDA;
WHENOTHERS=>R3:=R3ANDA;
ENDCASE;
WHENorp=>-Rx:=RxORA;
CASEIR(11DOWNTO10)IS
WHEN"00"=>R0:=R0ORA;
WHEN"01M=>R1:=R1ORA;
WHEN"10M=>R2:=R2ORA;
WHENOTHERS=>R3:=R3ORA;
ENDCASE;
WHENxorp=>-Rx:=RxXORA;
CASEIR(11DOWNTO10)IS
WHEN"00"=>R0:=R0XORA;
WHEN"01M=>R1:=R1XORA;
WHEN"10M=>R2:=R2XORA;
WHENOTHERS=>R3:=R3XORA;
ENDCASE;
WHENSwap=>--Swap:RxtoRy;
CASEIR(11DOWNTO8)IS
WHEN"0100"=>R0:=R1;
WHEN"1000"=>R0:=R2;
WHEN"1100"=>R0:=R3;
WHEN"0001H=>R1:=R0;
WHEN"1001M=>R1:=R2;
WHEN"1101"=>R1:=R3;
WHEN"0010"=>R2:=R0;
WHEN"0110"=>R2:=R1;
WHEN"1110"=>R2:=R3;
WHEN"0111"=>R3:=R1;
WHEN"1011"=>R3:=R2;
WHEN"0011"=>R3:=R0;
WHENOTHERS=>NULL;
ENDCASE;
WHENOTHERS=>NULL;
ENDCASE;
WHEN3=>--状态3
CASEIR(15DOWNTO12)IS
WHENSwap=>-Swap:AtoRx
CASEIR(11DOWNTO10)IS
WHEN"00"=>R0:=A;
WHEN-01M=>R1:=A;
WHEN"10"=>R2:=A;
WHENOTHERS=>R3:=A;
ENDCASE;
WHENjmp|Jz|Read|Write=>
IR(7DOWNTO0)<=M_data_in;-取双字节指令的后半部分
PC:=PC+1;
WHENOTHERS=>NULL;
ENDCASE;
WHEN4=>--状态4
CASEIR(15DOWNTO12)IS
WHENjmp=>-无条件转移指令
PC:=IR(11DOWNTO0);
MAR<=IR(11DOWNTO0);
WHENJz=>-条件转移指令
IF(R0="00000000")then
PC:=IR(11DOWNTO0);
MAR<=IR(11DOWNTO0);
else
MAR<=PC;
ENDIF;
WHENRead=>
MAR<=IR(11DOWNTO0);
WHENWrite=>
MARv=IR(11DOWNTO0);
MDR<=RO;
WHENOTHERS=>NULL;
ENDCASE;
WHEN5=>一状态5
MAR<=PC;
WHEN6=>--状态6
CASEIR(15DOWNTO12)IS
WHENRead=>RO:=M_datajn;
WHENOTHERS=>NULL;
ENDCASE;
ENDCASE;
ENDIF;
ENDprocessseq;
comb:PROCESS(reset,status)
BEGIN
IF(reset='1'ANDstatus=5ANDIR(15DOWNTO12)=Write)THEN
Write_Read<=T;
ELSE
Write_Read<='O';
ENDIF;
ENDPROCESScomb;
Maddress<=MAR;
M_data_out<=MDR;
ENDRTL;
3.仿真波形图
clock
国A
国ep立»nst|\s«4:?C
囹inst|\s«qB0
囹>nst|\s<aRI
回中〃R2
国R3
回|IB
国cpxC|MAR
囹>nst|«DR
国)nst|st«tus
S
国
S・・q
ovtrQov
¥rxt«_Re4d
图3波形图1
clocknjumnRRnnmuuuuuuinnrLnruuuumnRnnnrLnjuumnnnRnjuuuuuu
reset
回0g:IMS\“qA(99X32xgIX20X64Xqq
回c^n2'inttrcIOOXTCOXroo080)KOX⑸/C8OX划X网X680XEmX】3X划X580XD80
回cpr£:iRst\"QWwX20X03XWXODXR
回cpxi2.iast\5<-qRI99X32X64
(21“G.IANUQK200X20XuX22
回ep«<2:inti\<MKJ8X次
回eyt^'iikttIK8WOX5100X2800X21doX?KK)XDOCO丫101XX1900XDCCOXwinXCOOJXBOOXFOOO
回CJ^12in»t■ABf,OJDXootX81x010XOUX012x013加*OMXOFX016X017加*018X019KCIA
囹cpu2:iftstWDR99
回cp砂.i皿status
回■_44dr・“(13XHX>x1®X17X18X>9»0X20X2.X笠X23/欲24X”X»
(399
回Lq84X51X28X2DX?BXroXIEXco速X19XWXIDX田弟以13XF。X00
“erfl”
Vialw-R«d
图4波形图2
解释如卜.:
操作码OP指令指令的助记符操作的内容
1R(15..12)格式
00003Idle无操作,PC:=PC+I:(为取下一条指令准
备地址)
00012LoadDataR0-I;(立即数I送R0)PC:=PC+1
00101MoveRx.RyRx-(Ry);PCFPC+1
0011
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省丰城市第九中学2025届高三(复读班)上学期第三次段考政治试卷(含答案)
- 光船租赁合同(2篇)
- 2025年紫外光固化油墨合作协议书
- 2025年付里叶红外分光光度计项目合作计划书
- 2025年低温超导材料项目发展计划
- 卖车场地租赁协议
- 2025年无机非金属材料项目发展计划
- 新能源汽车租赁合同
- 出租车租赁协议范本
- 建筑物租赁合同
- 甘肃省兰州市第一中学2023-2024学年高一上学期期末考试 物理 含解析
- 草地调查规划学知到智慧树章节测试课后答案2024年秋东北农业大学
- 酒店吃饭餐饮合同范例
- 2024年矿产资源开发咨询服务合同
- 上海市2024-2025学年高一语文下学期期末试题含解析
- 职业生涯规划成品
- 期末模拟卷01(全国适用)-【中职专用】高二语文上学期职业模块期末模拟卷(解析版)
- 建筑物拆除的拆除工厂考核试卷
- 广东省深圳市2023-2024学年高二上学期期末测试英语试卷(含答案)
- 人教版一年级数学2024版上册期末测评(提优卷一)(含答案)
- 医疗护理员理论知识考核试题题库及答案
评论
0/150
提交评论