中断分类和Gate



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; 来自cup之外的叫中断(Interrupt):

;           *可屏蔽中断(IRQs)

;           *不可屏蔽中断(NMI)

;      可屏蔽中断(IRQs) 可以由cli/sti 指令控制.

;      两者都可以被cpu外的硬件所屏蔽.

; 来自cup内部的叫异常(Exceptions):

;    **CUP 侦测到的异常:

;        *故障(Fault): 在当前指令执行前发生. 如除0, 非法操作码,page fault.

;        *陷阱(Trap): 在执行当前指令后发生. 程序指令int 产生的异常都是陷阱.

;        *Abort: 异常位置不可确定.如 double fault, coprocessor segment overrun.

;    **程序主动产生的异常 :

;        INT instruction

;        INT3 instruction

;        INTO instruction

;        BOUND instruction

;*************************************

;Intel 保留的32 个中断/异常:

;|Number | interrupt/exception|     notes

;+-----+----------------------+------------------------------------------------

;|  0  |   divide  error      | could be overflow as well as zero denominator

;+-----+----------------------+------------------------------------------------

;|  1  |   debug exception    |

;+-----+----------------------+-------------------------------------------------
;|  2  |    NMI               |

;+-----+----------------------+-------------------------------------------------

;|  3  |   INT3 instruction   | debugger breakpoint

;+-----+----------------------+-------------------------------------------------

;|  4  |   INTO instruction   | detected overflow 

;+-----+----------------------+-------------------------------------------------

;|  5  |  BOUND instruction   | detected overrange 

;+-----+----------------------+-------------------------------------------------

;|  6  |  invalid instruction |

;+-----+----------------------+-------------------------------------------------

;|     |   opcode             |

;+-----+----------------------+-------------------------------------------------

;|  7  |   no coprocessor     | ESC, WAIT instructions

;+-----+----------------------+-------------------------------------------------

;|  8  |   double fault       | possible for 386+ in real mode

;|     |                      |  if INT vector exceeds IDT limit

;+-----+----------------------+-------------------------------------------------

;|  9  |  coprocessor segment | not in real mode

;|     |   overrun            | 

;+-----+----------------------+-------------------------------------------------

;|  10 |   invalid task state |  not in real mode

;|     |   segment (TSS)      |

;+-----+----------------------+-------------------------------------------------

;|  11 |  segment not present |  not in real mode

;+-----+----------------------+-------------------------------------------------

;|  12 |   stack fault        |  possible in real mode if stack access

;|     |                      |  straddles offset 0 or FFFFh

;+-----+----------------------+-------------------------------------------------

;|  13 |   general protection | possible in real mode if non-stack memory access
straddles

;|     |    fault (GPF)       | 0 or FFFFh, or if instruction is longer than 15
bytes,

;|     |                      | or if a 32-bit address greater than FFFFh is used

;+-----+----------------------+-------------------------------------------------

;|  14 |   page fault         |  not in real mode

;+-----+----------------------+-------------------------------------------------

;|  15 |   (reserved) 

;+-----+----------------------+-------------------------------------------------

;|  16 |   coprocessor error  |  ESC, WAIT instructions

;+-----+----------------------+-------------------------------------------------

;|  17 |   alignment check    |  not in real mode; 486+ only

;+-----+----------------------+-------------------------------------------------

;|  18 |   machine check      |  Pentium+ only

;+-----+----------------------+-------------------------------------------------

;|19-31|  (reserved)          |

;+-----+----------------------+------------------------------------------------

;*****************************************

; interrupt/exception 发生后CPU 的动作

; 1. 如果伴随 pmode 特权级切换, CPU 从当前的TSS 中加载 SS (E)SP .

; 2. 如果伴随 pmode 特权级切换, 原来的 SS 和 (E)SP 入新堆栈.

; 3. CS, (E)IP, (E)FLAGS 入新栈. 一些异常可能还把一个错误码入新栈.

; 4. 如果通过一个中断门,CPU 清 IF . 

; 5. CPU 做一个 far jump; 从门中加载 CS and (E)IP .

;

; 中断/异常发生后可能形成10 种栈布局. 3 个16-bit 保护模式; 2个virtual 8086 模式.

; 还有一个16 bit 实模式. 对我们比较有意义的4个32位保护模式下的栈格式是:

;+--------------------------------+----------------------------------+

;|          无特权级切换          |           伴随特权级切换         |

;+----------------+---------------+-----------------+----------------+

;|  <- 32 bits -> | <- 32 bits -> |  <- 32 bits ->  |<- 32 bits
->   |

;|    ... ...     |   ... ...     |    ... ...      |   ...  ...     |

;|    ... ...     |   ... ...     |    ... ...      |   ... user SS  |

;|    ... ...     |   ... ...     |    ... user SS  |    user ESP    |

;|    ... ...     |   EFLAGS      |    user ESP     |    EFLAGS      |

;|    EFLAGS      |   ... CS      |     EFLAGS      |    ... CS      |

;|    ... CS      |    EIP        |    ... CS       |     EIP        |

;|      EIP       |  error code   |      EIP        |   error code   |

;+----------------+---------------+-----------------+----------------+

;|    无错误码    |   有错误码    |     无错误码    |   有错误码     |

;+----------------+---------------+-----------------+----------------+

;****************************************************************

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;中断门描述符格式 

;+31-----------------16|15 |14 13|12------8|7----------0-+ 

;|   Offset 31..16     | P   DPL   0 D 110   0000 0000   | 1 dword

;+---------------------+-------------------+-------------+

;+31-----------------16|15-----------------------------0-+

;|      Selector       |   Offset 15..0                  | 0 dword

;+---------------------+---------------------------------+

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Trap Gate

;+31-----------------16|15 |14 13|12------8|7----------0-+ 

;|   Offset 31..16     | P   DPL   0 D 111   0000 0000   | 1 dword

;+---------------------+-------------------+-------------+

;+31-----------------16|15-----------------------------0-+

;|      Selector       |   Offset 15..0                  | 0 dword

;+---------------------+---------------------------------+ align 3

;***********************

;DPL-------Descriptor Privilege Level

;Offset----Offset to procedure entry point

;P---------Segment Present flag

;Selector--Segment Selector for destination code segment

;D---------Size :1 = 32 bits; 0 = 16 bits

;***********************

; 1 dword 8---15bits 的典型值

; Interupt Gate (clear IF):8Eh or 0EEh (kernel/user)(32 bit)(用于中断或异常)

; Trap Gate(keep IF):      8Fh or 0EFh (kernel/user)(32 bit)(用于trap ?)

;***********************

;GATE     STRUC      ;门结构类型定义

;    OFFSETL  DW      0  ;32位偏移的低16位

;    SELECTOR DW      0  ;选择子

;    Reserve  DB      0 

;    GTYPE    DB      0  ;类型

;    OFFSETH  DW      0  ;32位偏移的高16位

;    GATE     ENDS

 

### 回答1: 《基于Xilinx FPGA的中断处理》是一本介绍基于Xilinx FPGA的中断处理的PDF文档。中断是一种硬件机制,用于实现多任务并发处理,通过中断处理,系统能够及时响应设备的请求,并及时处理,提高系统的响应速度和效率。 该PDF首先介绍了FPGA(Field-Programmable Gate Array)的基本概念和原理。FPGA是一种可编程逻辑门阵列,通过在芯片上配置逻辑门的连接,可以实现不同的电路功能。因此,FPGA具有可重构和高度并行的特点,非常适合用于实现中断处理的硬件。 接下来,PDF详细介绍了中断的概念和原理。中断可以分为硬件中断和软件中断,硬件中断由外部信号触发,而软件中断由程序控制。PDF对中断的触发机制、中断分类中断的处理过程进行了深入讲解。 在此基础上,PDF介绍了如何在Xilinx FPGA上实现中断处理。Xilinx FPGA提供了丰富的资源和工具,可以方便地实现中断处理电路。PDF详细介绍了如何使用Xilinx FPGA的开发工具进行中断处理电路设计和编程,并给出了实例演示。 最后,PDF总结了基于Xilinx FPGA的中断处理的优势和应用场景。基于Xilinx FPGA的中断处理可以提高系统的响应速度和效率,特别适用于需要实时响应和并发处理的应用领域,如数字信号处理、通信系统等。 《基于Xilinx FPGA的中断处理》PDF通过深入浅出的方式,详细介绍了基于Xilinx FPGA的中断处理的原理、方法和应用。对于学习和研究FPGA中断处理的人员来说,具有很高的参考价值。 ### 回答2: 《基于 Xilinx FPGA 的中断处理》是一本介绍在 Xilinx FPGA 系统中实现中断处理的指南。本书详细讲解了中断的概念、中断请求和中断响应的原理、中断向量表和中断优先级的设置,以及如何在 Xilinx FPGA 中建立中断处理机制。 首先,本书简要介绍了中断的概念和基本原理。中断是一种计算机硬件或软件的机制,用于打断正在执行的程序,以处理紧急事件。中断可以分为外部中断和内部中断,并且可以根据优先级进行处理。读者将了解到中断请求(IRQ)和中断响应(ISR)的基本原理。 接下来,本书详细讲解了在 Xilinx FPGA 中实现中断处理的步骤。首先,读者将学习如何设置中断请求源(Interrupt Request Source),通过配置和连接中断控制器(Interrupt Controller)和处理器(Processor)进行响应。然后,读者将了解如何建立中断向量表,其中包含了中断服务程序的地址信息。此外,本书还介绍了如何通过设置中断优先级来处理同时发生的多个中断请求。 最后,本书通过实例和代码示例展示了如何实现具体的中断处理功能。读者将通过参考实例代码了解如何在 Xilinx FPGA 中编写和编译中断服务程序。同时,本书还介绍了如何使用 Xilinx 提供的工具和资源,如 Vivado 开发环境和 AXI 中断控制器 IP 核等。 总之,这本《基于 Xilinx FPGA 的中断处理》通过详细的解释和实例演示,为读者提供了在 Xilinx FPGA 系统中实现中断处理的指南。读者可以通过阅读本书,了解中断的基本原理和实现步骤,掌握在 Xilinx FPGA 上开发中断处理功能的技巧和方法。 ### 回答3: 《基于Xilinx FPGA的中断处理》PDF 是介绍在Xilinx FPGA上如何进行中断处理的文档。中断处理是一种处理器与外设之间通信的重要机制,通过中断处理可以提高系统性能和响应速度。 在Xilinx FPGA上,中断处理的流程一般包括以下几个步骤: 1. 硬件配置:首先需要对FPGA进行硬件配置,将中断控制器模块(如AXI Interrupt Controller)添加到设计中,并配置中断通道、中断触发条件等参数。 2. 中断源设置:接下来需要确定哪些外设会触发中断,并配置相关的中断源。可以在设计中增加适当的中断源模块,或者在设计中使用已有的外设模块,如串口通信模块、以太网模块等。 3. 中断处理程序编写:针对每个中断源,需要编写相应的中断处理程序。中断处理程序一般包括中断服务程序和中断服务例程。中断服务程序是用来处理中断请求的,而中断服务例程则是在中断服务程序的基础上进行更加复杂的操作,如数据处理、状态更新等。 4. 中断配置和启用:在硬件配置好并编写好相应中断处理程序后,需要对中断进行配置和启用。通过编程方式,将中断配置信息写入到中断控制器的寄存器中,然后使能中断使能位,使系统能够正常响应中断。 通过以上步骤,可以在Xilinx FPGA上实现中断的处理。中断处理的好处是能够实现异步通信,提高系统的并发性,减少对处理器的轮询,节约系统资源和功耗。同时,中断处理也能提高系统的实时性,使系统能够更加及时地响应外设的事件。 总而言之,《基于Xilinx FPGA的中断处理》PDF提供了在Xilinx FPGA上实现中断处理的详细方法和步骤,对于需要在FPGA中实现中断的开发者和工程师来说,是一份非常有价值的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值