问题描述
我在哪里可以找到有关中断的信息?
解决/修复方法
Q1。 DMARead()和DMAReadToLockedMem()有什么区别,FUSE C ++ API文档没有解释它们的区别?
A1。如果您可以锁定内存并重新使用数据传输,则最好使用DMAReadToLockedMem()。有效地,DMARead()只是锁定内存,然后调用DMAReadToLockedMem()然后解锁内存。 DMAReadToLockedMem()可以更高效,但它取决于您存储数据的位置和方式。
Q2。 FUSE软件是否为卡安装了实际的中断服务程序(ISR),因此用户无需提供该功能?
A2。是的,FUSE软件安装提供ISR。
Q3。 FPGA生成ISR以检测DIME_InterruptStatus生成中断的事件流程是多少?
A3。用户FPGA应在其中断引脚上产生一个低脉冲。当PCI FPGA以40 MHz运行时,脉冲应该持续几个时钟周期,通常用户FPGA运行得更快;因此,用户需要确保中断保持足够长的时间,以便PCI FPGA锁存它。发生此脉冲时,PCI FPGA会在中断状态寄存器中设置一个位,并且PCI总线上的中断线被驱动为低电平。这会导致软件中的ISR被调用。 ISR读取状态寄存器,清除中断线并唤醒任何等待的线程。
Q4。此外,在应用笔记“NT302-0000_Spartan_to_Virtex_Interface”中,INT中断线上的唯一文档位于信号描述表的一个线性中。该线路是边沿还是电平敏感中断线?
A4。来自用户FPGA的中断锁存在信号的上升沿。基本上,顺序是当来自用户FPGA的中断线上有一个上升沿时,接口FPGA将其锁存并向PCI总线发出基于电平的中断,然后当相应的寄存器被读取时清除。中断处理程序
Q5。我需要多长时间断言(INT =’1’)才能在PC上产生中断?
A5。 PCI FPGA以40 MHz运行,因此INT应至少断言3个时钟周期。
Q6。如果不使用dintBLOCKING,DIME_InterruptControl()是否使用dintWait轮询?如果是这样,那么轮询是什么?
A6。我们目前只支持dintWAIT命令的dintBLOCKING。
Q7。是否有使用DMA中断的任何其他示例?
A7。遗憾的是,除了使用带有中断的DMA接口之外,我们没有其他信息或示例而不是CD或安装区域中提供的信息或示例。
有关API中FUSE差异的更多信息,请参阅(Xilinx答复31062) 。
有关DMA接口和可用信息的更多信息,请参阅(Xilinx答复31534) 。
没有回复内容