detect:检测对端是否在位。前提知识:对端在位,电容变大;发送端发出脉冲,如果脉冲发生变形、幅值降低说明电路总电容大,表明存在对端。
信号名 | 对ip 来看的方向 | 含义 |
---|---|---|
cfg_interrupt | ipcore input | 中断请求信号 |
cfg_interrupt_rdy | ipcore output | 中断响应,与cfg_interrupt同时为1,表示握手,中断被接收。 |
cfg_interrupt_assert | ipcore input | 配置传统中断INTX是否置位1:置位;在MSI情况下,此信号无效 |
cfg_interrupt_di[7:0] | ipcore input | 配置中断数据输入(中断向量号)。如果启用了多向量中断, EP必须驱动的消息数据部分,以指示MSI向量号。 |
cfg_pciecap_interrupt_msgnum[4:0] | ipcore input | Capability register的Message Number field域。msi=5,msi-x=11 |
cfg_interrupt_stat | ipcore input | 没看懂,设置为:0即可 |
cfg_interrupt_mmenable[2:0] | ipcore output | 显示配置空间Multiple Message Enable域的值。 内容指示cfg_interrupt_di[7:0]中断向量号中有效的bit个数 • 000: 0 bits • 001: 1 bit • 010: 2 bits • 011: 3 bits • 100: 4 bits • 101: 5 bits 剩下的高bit没使用 对于只使用1个中断向量的情况下000,cfg_interrupt_di[7:0]不使用。 |
cfg_interrupt_msienable | ipcore output | 0: Only Legacy (INTX) interrupts or MSI-X Interrupts can be sent. 1: Only MSI Interrupts should be sent |
cfg_interrupt_msixenable | ipcore output | • 0: Only Legacy (INTX) interrupts or MSI Interrupts can be sent. • 1: Only MSI-X Interrupts should be sent. |
cfg_interrupt_do[7:0] | ipcore output | EP的配置空间的Message Data field的最低8bit;此值用于提供信息和向后兼容。 |
cfg_interrupt_msixfm | ipcore output | Configuration Interrupt MSI-X Function Mask. 1:所有中断屏蔽,不管mask bit 0:由mask bit来决定中断屏蔽 |
时序图
MSI Capability的ID为5
PCIE配置空间格式(非报文格式)
next pointer: 指向下一个新的Capability寄存器的地址.
Message Control Register: 存放当前PCIe设备使用MSI机制进行中断请求的状态和控制信息
Message Address Register: 当MSI enable时,保存中断控制器种接收MSI消息的地址。
Message Data Register: 当MSI enable时,保存MSI报文的数据。
Mask Bits: 可选,Mask Bits字段由32位组成,其中每一位对应一种MSI中断请求。
Pending Bits: 可选,需要与Mask bits配合使用, 可以防止中断丢失。当Mask bits为1的时候,设备发送的MSI中断请求并不会发出,会将pending bits置为1,当mask bits变为0时,MSI会成功发出,pending位会被清除。
msi报文格式:
PCIe系列第八讲、MSI和MSI-X中断机制
http://xilinx.eetrend.com/blog/2020/100050998.html
https://blog.csdn.net/kunkliu/article/details/108950991
https://blog.csdn.net/wordwarwordwar/article/details/81182910
http://xilinx.eetrend.com/blog/2020/100050998.html