在执行系统初始化程序时,要对系统的控制状态寄存器、外部存储器接口控制寄存器等进行参数设置,保证系统按要求正常工作。为提高系统效率,系统通过DMA通道从外部CE2空间将数据读入片内RAM,所以初始化程序必须设置好外部存储器CE2空间的控制寄存器。在进行FFT变换子程序的设计时,因为基四算法比基二算法快,并且频率抽取算法比时间抽取算法能更好地发挥C6701的并行运算能力,所以采有基四频率抽取算法。对4096点信号进行FFT变换,所需时间≤400μs。编写的复数数组相乘通用子程序实现4096点运算所需时间≤95μs。对于反变换,可以直接得用前面的FFT算法实现,即先对输入频域序列作共轭变换,然后进行FFT运算,并对所得的时域序列再作共轭变换 ,最后除以FFT变换 数据的个数。但这样进行反变换所需要的时间较长,不能实时处理。为此按照其四频率抽取的算法编写了IFFT子程序,此IFFT子程序经过CCS优化之后,对4096点逆变换来讲,需要400μs左右。本程序和FFT子程序配合使用,可以方便地实现信号的正傅立叶变换和傅立叶变换,而不需要进行位反转操作,不仅节省了存储空间,而且加快了运算速度。为求复信号的模值,可以采用迭代等算法编写求模子程序。
系统初始化程序如下:
system_intr()
{LOAD_REG_FIELD(CSR,0,0,2);
SET_REG(ICR,0xFFF0);
REG_WRITE(EXITERNAL_INTR_POL_ADDR,0);
INTR_MAP_RESET();
SET_REG(ISTP,0);
LOAD_FIELD(EMIF_CE2_CTRL_ADDR,5,READ_SETUP,READ_SETUP_SZ);
LOAD_FIELD(EMIF_CE2_CTRL_ADDR,8,READ_STROBE,READ_STROBE_SZ);
}
|