这学期一直在忙项目的事情,没什么时间写博客,最近过年闲下来,会把之前欠的内容补上。
目录
(本文的基础是FPGA能向DSP发送doorbell类型的包。)
从上一节FPGA+DSP SRIO通信(三)——基于LSU的数据传输我们已经了解到了如何将数据通过SRIO,以LSU的方式传输。而现实的数据传输任务中除了传输数据,还需要传输中断。例如,使用FPGA将一段视频传输给DSP,除了需要传输数据,还需要在传输一帧数据之后,向DSP发送中断,以告知CPU—— “DSP的存储空间中数据已经存在,请及时读取”。这便是中断最常用的场景。
1、6678的中断系统
1.1、系统事件
在谈SRIO的中断系统之前,先说一说6678DSP中断系统。
C6678的CPU中断是由C66x CorePac Interrupt Controller配置的。该中断控制器(C66x CorePac Interrupt Controller),下文直接称66x中断控制器。
66x中断控制器允许将最多128个系统事件映射到12个CPU中断上(CPUINT4 - CPUINT15),或映射到CPU异常,或映射到高级仿真逻辑上。。
上面说的CPU异常和高级仿真逻辑都不是今天的重点,我们最重要的,要理解的概念是——系统事件,系统事件包括核上产生的事件以及片级事件(也就是 外设产生的中断事件)。
额外的系统事件被路由到每个C66x CorePac,以提供额外的芯片级事件,因为CPU中断/异常作为仿真事件被路由到中断控制器,所以额外的系统事件也可以走这条路 。此外,错误类事件或不常使用的事件也通过系统事件路由器路由,以减轻C66x CorePac中断选择器的负担。 这是通过芯片级中断控制器(CIC)块完成的,CIC使用的时钟是CPU主频的六分之一。
事件控制器由简单的组合逻辑组成,为每个C66x CorePac提供附加事件,加上EDMA3CC,CIC0和CIC1为每个C66x CorePac提供17个附加事件和8个广播事件,CIC2提供26个和24