拉高usr_irq_req 1bit或者多bit,当legacy_interrups被使用,引起DMA发生legacy_interrupt给PCIE.多bit也许被连续拉高,但是每一个bit必须保持拉高,直到usr_irq_ack被拉高。usr_irq_req拉高,必须保持拉高,直到usr_irq_ack拉高,并且interrupt中断被驱动处理后,然后主机清中断。 这个中断,当user_irq_req和usr_irq_ack是...
该用来配合驱动处理中断,uixdmairq提供了AXI-LITE接口,上位机通过访问user空间地址读写uixdmairq的寄存器。该IP在user_irq_req_i输入的中断位,寄存中断位号,并且输出给XDMA IP ,当上位机的驱动响应中断的时候,在中断里面写uixdmairq 的寄存器,清除已经处理的中断。 另外本方案中通过AXI-BRAM来演示用户user空间的读...
1.legacy_interrupts传统中断 这个中断,当user_irq_req和usr_irq_ack是一对握手,当usr_irq_ack第一次拉高的时候,usr_irq_req可以清0, 当user_irq_ack第二次拉高的时候,才可以进行新一轮usr_irq_req中断发起。 注意:irq_req和irq_ack handshake握手,上层应用程序也许不会立即进行清中断或者不会立即进行中断服...
MSI发出usr_irq_req中断请求后,user_irq_ack为1只是说明中断已经北主机接收了,但是不代表已经处理,软件或者驱动层可以去清零usr_irq_req。 MSI中断和MSI-X都是往配置的CPU中断寄存器里进行memory写操作,来产生中断,效率比INTx是共享式高,其中MSI最多支持32个中断向量,而MSI-X最多支持2048个中断向量。...
module xdma_multi_interrupt ( input wire clk, // 时钟信号 input wire rst_n, // 复位信号,低电平有效 input wire [15:0] event_trigger, // 16 位事件信号,触发多个中断 output reg [15:0] usr_irq_req, // 用户中断请求信号(16 个中断) ...
对于Legacy Interrupts中断,当user_irq_ack 第一次为1的时候usr_irq_req可以清0,当user_irq_ack 第二次为1的时候,可以重新设置usr_irq_req发起中断。 在PCI总线里面INTx中断是由四条可选的中断线决定的,这种中断方式是共享式的,所有的pci设备把中断信号在一条中短线上相与,再上报给cpu,cpu收到中断以后再查...
当usr_irq_req 中断请求后,只要user_irq_ack为1 就可以清零usr_irq_req,但是没说明扫码时候可以置1,重启下次中断。 经过以上所有中断方式测试,发目前使用Legacy和MSI已经够用,而且相对稳定,上位机驱动通过访问用户bar地址空间和米联客编写的Uixdmairq ip-core一起管理接收的中断。