中断控制器实验报告.docx
- 文档编号:7929159
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:19
- 大小:114.85KB
中断控制器实验报告.docx
《中断控制器实验报告.docx》由会员分享,可在线阅读,更多相关《中断控制器实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
中断控制器实验报告
江苏技术师范学院
计算机学科实验基地
实验报告
评分:
学分:
实验类型:
必修√选修实验日期:
06年06月28日
实验名称:
中断控制器逻辑设计
实验地点:
实验基地
学生姓名:
指导教师:
班级:
评阅教师:
同组学生:
计算机科学与工程学院制
实验报告内容:
一、实验目的
理解中断控制器的结构及功能,掌握中断控制器的设计过程,并学会如何采用VHDL语言对硬件逻辑进行描述并下载到FPGA芯片中,从而设计完成一个具有中断控制功能的芯片。
二、实验方案与计划(对硬件和项目设计)
模块结构和功能设计
顶层模块的功能描述:
接受CPU的送来的初始化命令字,根据中断接口的请求,经屏蔽,判优后,提出中断请求,并接受中断响应,提供操作类型码,接受操作命令字;控制整个中断控制器的运行。
中断控制器控制器内部框图:
输入:
nMRST:
复位信号,低电平有效
CLK:
时钟信号
nCS:
片选信号
nWR:
写信号
nRD:
读信号
A0:
端口选择信号,A0与地址总线的最低一位地址线相连。
nINTA:
中断请求输入,接CPU的中断响应输出信号INTA。
IR1—IR0:
2个中断请求输入信号,IR0优先级高。
DIN:
数据输入
输出:
INT:
中断请求输出,接CPU的可屏蔽中断输入端INTR。
DOUT:
数据输出。
1中断请求寄存器IRR
1)输入:
nMRST:
复位信号,低电平有效
CLK:
时钟信号
Init:
初始化完成信号
Freeze:
FreezeIRinput
Ltim:
中断请求触发方式
isr_set_stb:
ISR置位
isr_set:
ISR置位向量
ir_mask:
IR中断屏蔽
ir:
中断请求
输出:
irr:
用于数据读的IRR输出
masked_irr:
用于优先权分析的IRR输出
2)功能:
IRR是一个8位的寄存器,专门用于记录中断申请。
IRR的输入端接中断源,只要有中断请求则IRR相应位置1(IRR(i)=1),直到中断服务寄存器相应位置1,IRR相应位才复位。
为了以后扩展方便,IRR设计为8位。
2优先权分辨器PR
1)输入:
irr:
MaskedIRRfromIRR
isr:
ISRdataformISR
输出:
int:
Interruptoutput
set_isr:
SetISRvector
2)功能:
PR用来确定存放在IRR中中断请求信号对应中断源的优先级,并选出当前最高优先中断源的中断申请通知控制逻辑,以便控制逻辑发送中断请求信号INT。
3中断服务寄存器ISR
1)输入:
mrst_n:
Asynchronoussystemreset
clk:
Clockinput(positiveedge)
aeoi_stb:
AutoEOIstrobe(activehigh)
sw_eoi_cmd:
SoftwareEOIcommandstrobe(activehigh)
isr_set_stb:
ISRSetStrobe(activehigh)
isr_set:
ISRsetvector(activehigh)
isr_clr:
ISRclearvector(activelow)
输出:
poll_vector:
threeLSBsareencodedinterruptcurrentlyinservice
isr:
In-ServiceRegisteroutput
2)功能:
ISR用于记录正在被CPU处理的中断。
当有中断请求并被CPU响应时,即在CPU响应中断后发来第一个中断响应脉冲时,将相应的中断服务寄存器相应位置1,直到结束中断或有中断结束命令才复位。
4)中断锁逻辑
1)输入:
mrst_n:
Systemreset(activelow)
clk:
Clockinput(positiveedge)
init:
SWreset(activehigh)
freeze:
FreezeIRRsignal(activehigh)
im:
Interruptmask-OCW1
ir:
Interruptrequests
isr_clr:
ISRclearvector(activehigh)
aeoi_stb:
AutoEOIstrobe
sw_eoi_cmd:
SWEOIcommandstrobe
isr_set_stb:
ISRsetpulse
ltim:
Level/Edgesensitiveintflag
输出:
irr:
IRRoutputfordatareads
isr:
ISRoutputfordatareads
int:
InterruptsignaltouP
poll_vector:
Pollvectorfordatareads
2)功能:
接受中断源的请求,经屏蔽,判优,后送出中断请求信号
5初始化控制逻辑
1)输入:
mrst_n:
Asynchsystemreset
clk:
Clocksignal
wr_n:
Write
cs_n:
ChipSelectsignal
a0:
Address0signal
d4:
Data4signal
输出:
sel_icw1:
ActivehighsynchronousloadICW1
sel_icw2:
ActivehighsynchronousloadICW2
init:
Activehighsynchronousclearforotherregisters
init_done:
ActivehighInitializationDoneflag
2)功能:
接受写信号,并根据a0,d4进行相应的判断,对ICW1,ICW2进行初始化,同时对其他寄存器发出同步清零信号,初始化完成后发送init_done信号,表示初始化完成。
6通用寄存器(ICW1,ICW2,OCW1)
1)输入:
clk:
Clockinput(positiveedge)
clr:
Asynchclearinput(activelow)
ceSynchloadinput(activehigh)
sclr:
Synchclearinput(activehigh)
d:
Datainput
输出:
q:
Dataoutput
2)功能:
同步输入,可以同步,异步清零。
7操作命令字译码
1)输入:
cs_n:
ChipSelectinput
wr_n:
WriteEnableinput
init_done:
InitailizationDoneflag(activehigh)
a0:
Address0input
d3:
Data3input
d4:
Data4input
输出:
sel_ocw1:
SynchloadforOCW1(activehigh)
sel_ocw2:
SynchloadforOCW2(activehigh)
sel_ocw3:
SynchloadforOCW3(activehigh)
2)功能:
在初始化完成之后,根据a0,d3,d4的不同写入,选择输入OCW1,OCW2,OCW3
8OCW2
1)输入:
sclr:
Synchronousreset(activehigh)
aeoi_stb:
AutoEOIstrobe(activehigh)
sel_ocw2:
OCW2ClockEnableinput(activehigh)
d:
Datainputbus
vect_in:
Encodedinterruptcurrentlybeingserviced
输出:
sw_eoi_cmd:
SoftwareEOICommandstrobe(activehigh)
is_clr:
ISRclearvector
2)功能:
OCW2用于控制中断结束。
根据输入,发出一般结束中断命令和is_clr向量清除ISR相应位。
9OCW3
1)输入:
clk:
Clockinput(positiveedge)
clr:
Asynchclearinput(activelow)
sclr:
Synchclear(activehigh)
ce:
Synchloadenable(activehigh)
d:
Datainput
输出:
rd_ir_is:
ReadRegisterCommandoutput(IRR/ISR)
2)功能:
可以用该命令字读取中断控制器状态寄存器中的内容。
rd_ir_is为0时,读IRR;为1时,读ISR。
10读数据选择器
1)输入:
ir_data:
IRRdataoutputbus
is_data:
ISRdataoutputbus
ocw1:
InterruptMaskdataoutputbus
vect_data:
Vectordataoutputbus
a0:
Address0input
rd_ir_is:
IRR/ISRreadflag(0=IRR)
en_vect:
Selectsthevect_databus(duringINTA)
rd_n:
Readstrobeinput(activelow)
cs_n:
ChipSelectinput(activelow)
输出:
data_out:
DataOutputbus
2)功能:
数据输出选择器。
en_vect为1,则送出中断类型码。
rd_n有效且cs_n有效,rd_ir_is为0时,输出IRR;为1时,输出ISR。
11读写控制逻辑
1)输入:
clk:
Clockinput(positiveedge)
wr_n:
Writeinput(activelow)
rd_n:
Readinput(activelow)
cs_n:
ChipSelectinput(activelow)
mrst_n:
Systemreset(activelow)
a0:
Address0input
aeoi_stb:
AEOIstrobe
en_vect:
Interruptvectorenable
vect_in:
EncodedvectorfromISR
vect_data:
Vectorfordataoutputbus
is_data:
ISRdatabus
ir_data:
RRdatabus
din:
Datainputbus
输出:
isr_clr:
ISRclearvector
init:
SWinitializationreset(activehigh)
init_done:
SWinitializationdoneflag(activehigh)
sw_eoi_cmd:
SWEOIcommandstrobe
icw1:
InitializationCommandWord1
icw2:
InitializationCommandWord2
ocw1:
OperationCommandWord1
dout:
Dataoutputbus
2)功能:
读/写控制逻辑是接受CPU送来的读/写控制信号,端口选择信号,片选信号的逻辑电路,通过它使来自CPU的各种控制命令字存放在a8259内部相应寄存器中,以确定其工作方式,它可将a8259内部的状态信息传送到数据总线上,供CPU读取。
12中断响应顺序状态逻辑
1)输入:
mrst_n:
Systemresetinput(activelow)
clk:
Clockinput(positiveedge)
inta_n:
InterruptAcknowledge(activelow)
init_done:
InitializationDoneflag(activehigh)
aeoi:
Auto/NormalEOImode-ICW1(0)
输出:
aeoi_stb:
InAEOImode,thisistheEOIstrobe
isr_set_stb:
ISRSetStrobe(setsISR,clearsIRR)
data_sel:
Selectvectorbus
en_data:
Enablevectordatasignal
freeze:
FreezeIRRsignal(activehigh)
2)功能:
初始化完成后,接受CPU中断响应信号,并发出相应的信号。
根据编程设定的工作方式产生内部控制信号。
13类型码输出选择器
1)输入:
I0:
查询向量
I1:
中断请求类型码
sel:
选择信号
en:
使能信号
输出:
o:
输出
2)功能:
选择输出I0,I1.
14中断顺序控制逻辑
1)输入:
mrst_n:
Asynchronoussystemreset(activelow)
clk:
Clockinput(positiveedge)
inta_n:
InterruptAcknowledgeinput(activelow)
init_done:
InitializationDoneflag(activehigh)
icw1:
ICW1databus
icw2:
ICW2databus
vect_out:
Pollvectordatabus
输出:
aeoi_stb:
AutoEOIstrobe(activehigh)
isr_set_stb:
ISRsetstrobe(activehigh)
en_vector:
Enablevectorsignal(activehigh)
freeze:
FreezeIRRsignal(activehigh)
int_vector:
Vectordatasenttodataoutputbus
2)功能:
―根据编程设定的工作方式来产生内部控制信号。
―接受CPU送来的中断相应信号,并允许中断服务寄存器ISR的相应位置位。
-控制发出相应的中断类型号,通过数据总线输出到系统总线上。
三、实验过程理解与描述
●经过整理的数据及表格
1、设计输入(用MODELSIM5.6仿真软件)
2、模块的功能仿真(用MODELSIM5.6仿真软件)
(1)输入信号激励
(2)启动仿真程序
(3)输出结果(波形图):
3、编译(用MAX+PLUS29.5)
目标器件为EPF10K10LC84-4
编译后产生一个SRAM目标文件(.sof)
4、时序仿真(用MAX+PLUS29.5)
(1)传播延迟分析
(2)时序逻辑电路性能分析
(3)建立和保持时间分析
5、器件编程(用MAX+PLUS29.5)
编程电缆是ByteBlaster;
编程文件是编译后产生一个SRAM目标文件
编程器件是EPF10K10LC84-4
●实验记录的分析、讨论与结论
●实验小结
本次实验基本能满足预定要求,时序、逻辑功能正确,文档健全。
四、对指定问题的回答
●需要学生回答的问题
中断控制器的工作过程?
1.中断源通过IR0—IR1向A8259发中断请求,使得IRR对应位置1。
2.IRR中经过中断屏蔽寄存器IMR允许后的置位进入PR,PR将其中高优选权的中断请求从INT输出,送到CPU的INTR
3.若CPU处于开中断状态,则在当前指令执行完后,启动中断响应总线操作,发出两个INTA负脉冲作为中断响应信号。
4.收到第一个中断响应INTA负脉冲,完成如下工作:
1.使ISR响应位置1,表示CPU已为该中断请求服务。
2.使IRR响应位清零。
5.收到第二个中断响应INTA负脉冲,完成如下工作:
1.将中断类型号送到数据总线(CPU读取中断类型号,经过响应过程后,进入中断服务程序,直到服务结束)。
2.若8259工作在自动结束中断方式AEOI,则8259清除ISR的响应位,否则直到中断服务结束,发出EOI命令,才能使ISR中的相应位清零。
●实验前对学生的特殊要求
深刻理解组合逻辑控制器结构功能,熟悉VHDL语言,能熟练运用相关开发工具。
五、对实验的评价和建议
本实验能让学生加深对中断控制器组织结构及功能的理解,以及学会如何在具体的应用环境中综合运用VHDL语言进行硬件描述及功能模拟,但所描述的对象结构简化无实际应用意义,建议增加实验的实际应用性。
六、实验附件(程序清单,限于篇幅,本报告只提供顶层程序清单)
--------------------------------------------------------
--
--FILENAME:
a8259.vhd
--USEDIN:
a8259top.vhd(A8259testbench)
--PROJECT:
AlteraSynchronousA8259
--PURPOSE:
Thisistheentityandarchitectureofthe
--toplevelA8259
--------------------------------------------------------
LIBRARYIEEE;
USEIEEE.std_logic_1164.ALL;
-----------------------------------------------------------------
--EntityDefinition
-----------------------------------------------------------------
ENTITYa8259IS
PORT(
nMRST:
INstd_logic;--MasterResetinput
CLK:
INstd_logic;--Clockinput
nCS:
INstd_logic;--ChipSelectinput
nWR:
INstd_logic;--WriteEnableinput
nRD:
INstd_logic;--ReadEnableinput
A0:
INstd_logic;--A0Addressinput
nINTA:
INstd_logic;--InterruptAcknowledgeinput
IR:
INstd_logic_vector(7DOWNTO0);--InterruptRequestsinputbus
DIN:
INstd_logic_vector(7DOWNTO0);--Datainputbus
INT:
OUTstd_logic;--Interruptoutput
DOUT:
OUTstd_logic_vector(7DOWNTO0)--Dataoutputbus
);
END;
-----------------------------------------------------------------
--ARCHITECTUREDefinition
-----------------------------------------------------------------
ARCHITECTUREstrucOFa8259IS
-----------------------------------------------------------------
--COMPONENTDeclarations
-----------------------------------------------------------------
COMPONENTrw_cntl
PORT(
clk:
INstd_logic;
wr_n:
INstd_logic;
rd_n:
INstd_logic;
cs_n:
INstd_logic;
mrst_n:
INstd_logic;
a0:
INstd_logic;
aeoi_stb:
INstd_logic;
en_vect:
INstd_logic;
vect_in:
INstd_logic_vector(2DOWNTO0);
vect_data:
INstd_logic_vector(7DOWNTO0);
is_data:
INstd_logic_vector(7DOWNTO0);
ir_data:
INstd_logic_vector(7DOWNTO0);
din:
INstd_logic_vector(7DOWNTO0);
isr_clr:
OUTstd_logic_vector(7DOWNTO0);
init:
OUTstd_logic;
init_done:
OUTstd_logic;
sw_eoi_cmd:
OUTstd_logic;
icw1:
OUTstd_logic_vector(7DOWNTO0);
icw2:
OUTstd_logic_vector(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 控制器 实验 报告