[size=13.333333969116211px] 图3 程序层次结构和模块划分 5.1软件模块划分
软件层次结构和模块划分如图3所示。DSP软件的主要部分是底层的四个功能模块,这四个功能模块分别完成以下操作:1. 从输入FIFO中读取两条方位线数据(每条方位线2048点,每点数据类型为短整型)到DSP内存中;2. 将读入的数据按顺序存储到SDRAM中;3. 把SDRAM中的数据沿距离线顺序读到DSP内存中,即完成转置操作;4. 把转置后的数据送至输出FIFO。
5.2软件各模块间关系
l 上电初始化模块:在DSP上电后,完成与硬件工作有关的各控制寄存器的初始化,以及与软件工作有关的各内部变量和存储区的初始化;
l 主处理模块:调用其它功能模块,完成整个逆存储转置流程;
l 数据输入模块:受主处理模块调用,利用EDMA完成数据输入;
l 写SDRAM模块:受主处理模块调用,利用EDMA完成数据写操作;
l 读SDRAM模块:受主处理模块调用,利用EDMA完成数据读操作;
l 数据输出模块:受主处理模块调用,利用EDMA完成数据输出。
5.3 C6415的EDMA控制寄存器
EDMA是C621x/671x/641x特有的数据存取方式。在C621x/671x/641x中,EDMA控制寄存器负责片内二级存储器与其它外设之间的数据传输。EDMA控制寄存器和DMA控制寄存器在结构上有很大不同。其增强之处包括:
l 提供了64个传输通道;
l 通道间优先级可设置;
l 支持不同结构数据传输的链接。
EDMA控制寄存器主要由事件(中断)处理寄存器、事件编码器、参数RAM以及硬件地址发生器构成。其中,事件(中断)处理寄存器负责对EDMA事件进行捕获。一个事件相当于一个同步信号,由它触发一个EDMA通道开始数据传输。如果多个事件同时发生,则由事件编码器对它们进行分辨,将同时发生的事件进行排序,并决定事件的处理顺序。EDMA的参数RAM中存放了有关的传输参数,这些参数会被送往硬件地址发生器,进而产生读写操作所需的地址。
5.4 ICTM软件设计流程
<p>if(EDMA_intTest(22))</p><p>{</p><p>*ifoeoff=0;</p><p>EDMA_intClear(22);</p><p>EDMA_setChannel(hEdmaCha25);// trigger EDMA to reading data from SDRAM</p><p>#pragma MUST_ITERATE(32,,8);</p><p>for(i=0;i<64;i++)</p><p>{</p><p>headwriteaddr=inputa;</p><p>}</p><p>WORD_ALIGNED(inputb);</p><p>WORD_ALIGNED(inputc);</p><p>WORD_ALIGNED(inputa);</p><p>#pragma MUST_ITERATE(64,,8);</p><p>for(i=0;i<4096;i++)</p><p>{</p><p>inputb=inputa[2*i+64];</p><p>inputc=inputa[2*i+65];</p><p>}</p><p>}</p>
一周热门 更多>