组原课设硬布线逻辑.docx

上传人:b****8 文档编号:30498554 上传时间:2023-08-15 格式:DOCX 页数:13 大小:81.79KB
下载 相关 举报
组原课设硬布线逻辑.docx_第1页
第1页 / 共13页
组原课设硬布线逻辑.docx_第2页
第2页 / 共13页
组原课设硬布线逻辑.docx_第3页
第3页 / 共13页
组原课设硬布线逻辑.docx_第4页
第4页 / 共13页
组原课设硬布线逻辑.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

组原课设硬布线逻辑.docx

《组原课设硬布线逻辑.docx》由会员分享,可在线阅读,更多相关《组原课设硬布线逻辑.docx(13页珍藏版)》请在冰豆网上搜索。

组原课设硬布线逻辑.docx

组原课设硬布线逻辑

评语:

课中检查完成的题号及题数:

成绩:

自评分:

95

实验报告

实验名称:

基于硬布线控制器设计并实现

带中断功能的复杂模型机

日期:

2013-12-31

本人信息

班级:

学号:

姓名:

同组同学信息

班级:

学号:

姓名:

一、实验目的:

1.

掌握硬布线的控制器的组成原理、设计方法

2.

了解硬布线的控制器和微程序控制器的各自优点

3.

用硬布线控制器实现一个带有中断功能的复杂模型机

二、实验内容:

1.

编写机器指令测试程序运行情况以及中断响应。

2.

用VHDL语言编写带有中断的硬件程序

3.

用CM3P联机调试进行中断复杂机的构造和模拟

三、项目要求及分析:

要设计实现带有中断功能的复杂模型机,可采用以下步骤完成:

1.根据带中断功能的复杂模型机的微程序流程图,画出状态机描述图

2.根据机器指令文件确定控制器控制信号位

3.根据定义好的控制信号位以及微程序执行流程,编写VHDL源程序,编译

4.搭建程序测试环境,分配管脚,将程序载入CM3P测试机

5.联机测试指令

四、具体实现:

应包括:

状态图、控制信号表、控制引脚图、VHDL程序、机器码验证程序等。

状态图:

控制信号表:

控制引脚图:

CTRL

SIGNAL

INTAWRRDIOM

S3S2S1S0

LDALDBLDR0STMLOADLDARLDIR

ALU_BRS_BRD_BRI_BSP_BPC_B

LDPCSTICLI

RETT1INS7-INS0

PIN

60595857

56555453

49484746454406

054342412304

02215214

15315417-10

VHDL程序:

LIBRARYIEEE;

USEIEEE.std_logic_1164.ALL;

ENTITYCONTROLLERIS

PORT(

RESET:

INSTD_LOGIC;

T1:

INSTD_LOGIC;

INS:

INSTD_LOGIC_VECTOR(7DOWNTO0);

CTRL:

OUTSTD_LOGIC_VECTOR(16DOWNTO0)

);

ENDCONTROLLER;

ARCHITECTURECONTROLLER_ARCHOFCONTROLLERIS

TYPESTATEIS(S10,S9,S8,S7,S6,S5,S4,S3,S2,S1,S0);

SIGNALCUFSM:

STATE;

--CTRL:

WR,RD,IOM,S3,S2,S1,S0,LDA,LDB,LOAD,LDAR,LDIR,ALU_B,R0_B,LDR0,PC_B,LDPC

BEGIN

PROCESS(T1,RESET,INS)

BEGIN

IFRESET='0'THEN

CTRL<="00000000010011010";--NOP

CUFSM<=S0;

ELSIFT1'EVENTANDT1='1'THEN

CASECUFSMIS

WHENS0=>

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

WHENS1=>

CTRL<="01000000010111010";--MEM->BUS,BUS->IR

CUFSM<=S2;

WHENS2=>

IFINS="00000000"THEN--ADDINS

CTRL<="00000001010010010";--R0->BUS,BUS->A

CUFSM<=S3;

ELSIFINS="00100000"THEN--ININS

CTRL<="01100000010011110";--IN->BUS,BUS->R0

CUFSM<=S6;

ELSIFINS="00110000"THEN--OUTINS

CTRL<="10100000010010010";--R0->BUS,BUS->OUT

CUFSM<=S7;

ELSIFINS="01010000"THEN--HLTINS

CTRL<="00000000010011010";--NOP

CUFSM<=S8;

ELSIFINS="11100000"THEN--JMPINS

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S9;

ELSE--INVALIDINS

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

ENDIF;

WHENS3=>

CTRL<="00000000110010010";--R0->BUS,BUS->B

CUFSM<=S4;

WHENS4=>

CTRL<="00010010010001110";--A+B->BUS,BUS->R0

CUFSM<=S5;

WHENS5=>

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

WHENS6=>

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

WHENS7=>

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

WHENS8=>

CTRL<="00000000010011010";--NOP

CUFSM<=S8;

WHENS9=>

CTRL<="01000000000011011";--MEM->BUS,BUS->PC

CUFSM<=S10;

WHENS10=>

CTRL<="00000000011011001";--PC->AR,PC+1

CUFSM<=S1;

ENDCASE;

ENDIF;

ENDPROCESS;

ENDCONTROLLER_ARCH;

机器码验证程序:

;//*****************************************//

;////

;//带中断处理能力的模型机实验指令文件//

;////

;//ByTangDuCO.,LTD//

;////

;//*****************************************//

;//*****StartOfMainMemoryData*****//

$P0060;LDIR0,13H将立即数13装入R0

$P0113

$P0230;OUTC0H,R0将R0中的内容写入端口C0中,即写

$P03C0;ICW1,边沿触发,单片模式,需要ICW4

$P0460;LDIR0,30H将立即数30装入R0

$P0530

$P0630;OUTC1H,R0将R0中的内容写入端口C1中,即写

$P07C1;ICW2,中断向量为30-37

$P0860;LDIR0,03H将立即数03装入R0

$P0903

$P0A30;OUTC1H,R0将R0中的内容写入端口C1中,即写

$P0BC1;ICW4,非缓冲,86模式,自动EOI

$P0C60;LDIR0,FEH将立即数FE装入R0

$P0DFE

$P0E30;OUTC1H,R0将R0中的内容写入端口C1中,即写

$P0FC1;OCW1,只允许IR0请求

$P1063;LDISP,A0H初始化堆栈指针为A0

$P11A0

$P1270;STICPU开中断

$P1320;INR0,00H从端口00(IN单元)读入计数初值

$P1400

$P1541;LOOP:

MOVR1,R0移动数据,并等待中断

$P16E0;JMPLOOP跳转,并等待中断

$P1715

;以下为中断服务程序:

$P2080;CLICPU关中断

$P2161;LDIR1,01H将立即数01装入R1

$P2201

$P2304;ADDR0,R1将R0和R1相加,即计数值加1

$P2430;OUT40H,R0将计数值输出到端口40(OUT单元)

$P2540

$P2670;STICPU开中断

$P27B0;IRET中断返回

$P3020;IR0的中断入口地址20

;//*****EndOfMainMemoryData*****//

 

;//**StartOfMicroControllerData**//

$M000001C1;NOP

$M01000102;中断测试,P<4>

$M02006D43;PC->AR,PC加1

$M03107070;MEM->IR,P<1>

$M04002405;RS->B

$M0504B201;A加B->RD

$M06002407;RS->B

$M07013201;A与B->RD

$M08106009;MEM->AR

$M09183001;IO->RD

$M0A106010;MEM->AR

$M0B000001;NOP

$M0C103001;MEM->RD

$M0D200601;RD->MEM

$M0E005341;A->PC

$M0F0000CB;NOP,P<3>

$M10280401;RS->IO

$M11103001;MEM->RD

$M12200413;RS->MEM

$M13001A14;SP->A

$M1406C201;A加1->SP

$M15064216;A减1->SP

$M16006A17;SP->AR

$M17103001;MEM->RD

$M18064219;A减1->SP

$M19006A1A;SP->AR

$M1A105141;MEM->PC

$M1B005341;A->PC

$M1C10101D;MEM->A

$M1D10608C;MEM->AR,P<2>

$M1E10601F;MEM->AR

$M1F101020;MEM->A

$M2010608C;MEM->AR,P<2>

$M22406A23;INTA#,SP->AR

$M23200C24;PC->MEM

$M24001A25;SP->A

$M2506C226;A加1->SP

$M26406027;INTA#,入口->AR

$M27105142;MEM->PC

$M28101029;MEM->A

$M2900282A;RI->B

$M2A04E22B;A加B->AR

$M2B04928C;A加B->A,P<2>

$M2C10102D;MEM->A

$M2D002C2E;PC->B

$M2E04E22F;A加B->AR

$M2F04928C;A加B->A,P<2>

$M30001604;RD->A

$M31001606;RD->A

$M32006D48;PC->AR,PC加1

$M33006D4A;PC->AR,PC加1

$M34003401;RS->RD

$M35000035;NOP

$M36006D51;PC->AR,PC加1

$M37000181;STI

$M380001C1;CLI

$M39006A12;SP->AR

$M3A001A15;SP->A

$M3B001A18;SP->A

$M3C006D5C;PC->AR,PC加1

$M3D006D5E;PC->AR,PC加1

$M3E006D68;PC->AR,PC加1

$M3F006D6C;PC->AR,PC加1

;//**EndOfMicroControllerData**//

五、调试运行结果:

当中断来临时(即连续按动kk+),R0+1,并通过OUT输出;

六、所遇问题及解决方法:

本程序有以下难点:

1.对于控制信号位的确定,除要将对应控制信号翻译准确之外还需要注意控制位的高低电平有效。

2.对于VHDL程序的编写,需要注意中断触发时跳转语句的编写,此处由于之前学习了C程序的编写,尚未出现比较大的问题。

3.对于联机调试程序,需要耐心细心的设置好管脚分配等。

由于在做实验之前操作比较规范,此次试验并未遇到比较大的困难,调试程序费时较多,但最终运行正确。

七、实验总结:

1.

通过此次试验,明白了硬布线控制器的工作原理,较为深入的对计算机内部运行机制进行了理解。

2.

进一步锻炼了实践能力。

3.

更加深入理解了团队合作的重要性。

八、建议:

1.

由于试验较为综合,可对学生的完成进度进行分步检查。

2.

建议试验前从整体上给学生以引导,便于入手。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1