一种可动态扩展点数的FFT实现结构
文献发布时间:2024-04-18 20:00:50
技术领域
本发明属于数字信号处理技术领域,尤其涉及一种可动态扩展点数的FFT实现结构。
背景技术
在SOC(System on Chip,片上系统)中,FFT的实现方式通常是封装在一个专用的FFT IP core(Intellectual Property,知识产权核心)中,所能实现的FFT点数由其所占用的SRAM(Static Random-Access Memory,静态随机存储器)资源决定,由于SOC芯片在设计完成后,FFT IP core占用的SRAM资源已经被固化,无法针对系统需求和资源使用情况进行扩展,当系统内未被使用的SRAM资源较多,同时需要进行更多点数FFT的运算时,这种FFT实现结构显然不满足这种需求。
基于此,本发明设计了一种可动态扩展点数的FFT实现结构,以解决上述问题。
发明内容
本发明的目的在于:为了解决SOC芯片在设计完成后,FFT IP core占用的SRAM资源已经被固化,无法针对系统需求和资源使用情况进行扩展,当系统内未被使用的SRAM资源较多,同时需要进行更多点数FFT的运算时,这种FFT实现结构显然不满足这种需求的问题,而提出的一种可动态扩展点数的FFT实现结构。
为了实现上述目的,本发明采用了如下技术方案:
一种可动态扩展点数的FFT实现结构,包括系统总线、N点FFT计算单元、扩展控制单元和DMA控制器;
所述DMA控制器与系统总线连接,所述系统总线与N点FFT计算单元对应连接,以N点为单位,由DMA控制器通过系统总线向N点FFT计算单元写入数据,并完成N点的FFT计算;
所述系统总线连接系统共享存储单元,经系统总线,依次将多个N点的FFT计算结果存储到系统共享存储单元SRAM0,SRAM1,…,SRAM M-1,每块SRAM存储N点FFT计算值;
所述N点FFT计算单元与扩展控制单元连接,扩展控制单元分别从SRAM0,SRAM1,…,SRAM M-1中读取数据,根据M个N点FFT计算值,通过FFT计算引擎中的基-M蝶形运算单元,得出M×N点的FFT输出值,存储到SRAM0,SRAM1,…,SRAM M-1中。
作为上述技术方案的进一步描述:
所述系统软件配置FFT相关参数中,配置扩展控制单元,将FFT点数设为N×M点,且M取值为大于0的正整数,配置DMA控制器,每次向FFT计算单元写入N点数据,分M次完成数据写入。
作为上述技术方案的进一步描述:
所述系统共享存储单元中,在SOC共享内存空间中划分出M个存储单元SRAM0,SRAM1,…,SRAM M-1,每个存储单元长度为N。
作为上述技术方案的进一步描述:
所述FFT计算单元通过从接口接收DMA写入数据,并根据N点FFT的计算顺序,进行地址映射后,写入FFT内部SRAM中。
作为上述技术方案的进一步描述:
所述FFT计算单元接收到N点数据后,将DMA控制器的写请求信号拉低,暂停DMA的数据写入动作,并启动N点的FFT计算。
作为上述技术方案的进一步描述:
所述FFT计算单元完成N点的FFT计算后,将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM0。
作为上述技术方案的进一步描述:
所述系统软件配置FFT相关参数中,若M=1,则表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPU N×M点FFT计算已经完成;若M>1,则再次接受DMA写入数据,再次启动N点的FFT计算,并将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM1,重复这一步,直到当SRAM0,SRAM1,…,SRAM M-1都被写满后,进入下一步。
作为上述技术方案的进一步描述:
所述系统软件配置FFT相关参数中,设置SRAM0,…,SRAM M-1的地址指针为i,并令i=0,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAMM-1地址i。
作为上述技术方案的进一步描述:
所述系统软件配置FFT相关参数中,令地址指针加1,即i=i+1,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i+1读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAM M-1地址i,直到i=N-1,表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPU N×M点FFT计算已经完成。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明中,以N点FFT IP硬核为基础,根据SOC共享内存空间的容量,可实现N×M点的FFT运算,其中M为大于0的正整数,上限值取决于SOC共享内存空间的大小,实现了FFT点数的动态可配,提高了SOC存储资源的使用效率。
附图说明
图1为本发明提出的一种可动态扩展点数的FFT实现结构的模块框图;
图2为本发明提出的一种可动态扩展点数的FFT实现结构中基-M蝶形运算单元的示意图;
图3为本发明提出的一种可动态扩展点数的FFT实现结构中i=0和i=i+1的处理流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1-图3,本发明提供一种技术方案:一种可动态扩展点数的FFT实现结构,包括系统总线、N点FFT计算单元、扩展控制单元和DMA控制器;
所述DMA控制器与系统总线连接,所述系统总线与N点FFT计算单元对应连接,以N点为单位,由DMA控制器通过系统总线向N点FFT计算单元写入数据,并完成N点的FFT计算;
所述系统总线连接系统共享存储单元,经系统总线,依次将多个N点的FFT计算结果存储到系统共享存储单元SRAM0,SRAM1,…,SRAM M-1,每块SRAM存储N点FFT计算值;
所述N点FFT计算单元与扩展控制单元连接,扩展控制单元分别从SRAM0,SRAM1,…,SRAM M-1中读取数据,根据M个N点FFT计算值,通过FFT计算引擎中的基-M蝶形运算单元,得出M×N点的FFT输出值,存储到SRAM0,SRAM1,…,SRAM M-1中。
具体的,所述系统软件配置FFT相关参数中,配置扩展控制单元,将FFT点数设为N×M点,且M取值为大于0的正整数,配置DMA控制器,每次向FFT计算单元写入N点数据,分M次完成数据写入。
具体的,所述系统共享存储单元中,在SOC共享内存空间中划分出M个存储单元SRAM0,SRAM1,…,SRAM M-1,每个存储单元长度为N。
具体的,所述FFT计算单元通过从接口接收DMA写入数据,并根据N点FFT的计算顺序,进行地址映射后,写入FFT内部SRAM中。
具体的,所述FFT计算单元接收到N点数据后,将DMA控制器的写请求信号拉低,暂停DMA的数据写入动作,并启动N点的FFT计算。
具体的,所述FFT计算单元完成N点的FFT计算后,将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM0。
具体的,所述系统软件配置FFT相关参数中,若M=1,则表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPU N×M点FFT计算已经完成;若M>1,则再次接受DMA写入数据,再次启动N点的FFT计算,并将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM1,重复这一步,直到当SRAM0,SRAM1,…,SRAM M-1都被写满后,进入下一步。
具体的,所述系统软件配置FFT相关参数中,设置SRAM0,…,SRAM M-1的地址指针为i,并令i=0,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAM M-1地址i。
具体的,所述系统软件配置FFT相关参数中,令地址指针加1,即i=i+1,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i+1读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAM M-1地址i,直到i=N-1,表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPUN×M点FFT计算已经完成。
工作原理,使用时:
第一步,系统软件配置FFT相关参数中,配置扩展控制单元,将FFT点数设为N×M点,且M取值为大于0的正整数,配置DMA控制器,每次向FFT计算单元写入N点数据,分M次完成数据写入,在SOC共享内存空间中划分出M个存储单元SRAM0,SRAM1,…,SRAM M-1,每个存储单元长度为N;
第二步,FFT计算单元通过从接口接收DMA写入数据,并根据N点FFT的计算顺序,进行地址映射后,写入FFT内部SRAM中,FFT计算单元接收到N点数据后,将DMA控制器的写请求信号拉低,暂停DMA的数据写入动作,并启动N点的FFT计算;
第三部,FFT计算单元完成N点的FFT计算后,将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM0;
第四部,若M=1,则表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPU N×M点FFT计算已经完成;若M>1,则再次接受DMA写入数据,再次启动N点的FFT计算,并将N点的FFT输出值通过主接口,经系统总线写入共享内存空间SRAM1,当SRAM0,SRAM1,…,SRAM M-1都被写满后,进入第五步;
第五步,设置SRAM0,…,SRAM M-1的地址指针为i,并令i=0,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAM M-1地址i;
第六步,令地址指针加1,即i=i+1,FFT扩展控制单元通过FFT计算单元内置的主接口,分别从SRAM0,…,SRAM M-1地址i+1读取M个数据,并存入扩展控制单元内置的缓存中,通过计算单元内置的FFT计算引擎,完成一次基-M蝶形运算,得到M个计算值,并通过计算单元内置的主接口,分别写回SRAM0,…,SRAM M-1地址i,直到i=N-1,表示已经完成了N×M点的FFT计算,FFT扩展控制单元向CPU发送中断,告知CPU N×M点FFT计算已经完成。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
- 一种用于电动汽车动力电池托盘的铝合金材料及其制备方法
- 一种汽车配件用铝合金材料及其制备方法
- 一种太阳能铝合金支架及铝合金材料制备方法
- 一种铝合金材料及其制备方法以及复合材料
- 一种高导热铝合金材料及废铝回收制备该材料的方法
- 汽车用铝合金耐磨材料及制备Al-Si-Cu-Mg系合金的汽车零部件的方法
- 汽车用铝合金耐磨材料及制备Al-Si-Cu-Mg系合金的汽车零部件的方法