CN102306142B - 一种fft倒序操作存储器数据调度方法及电路 - Google Patents
一种fft倒序操作存储器数据调度方法及电路 Download PDFInfo
- Publication number
- CN102306142B CN102306142B CN201110231430.0A CN201110231430A CN102306142B CN 102306142 B CN102306142 B CN 102306142B CN 201110231430 A CN201110231430 A CN 201110231430A CN 102306142 B CN102306142 B CN 102306142B
- Authority
- CN
- China
- Prior art keywords
- address
- read
- write
- port memory
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims abstract description 299
- 238000000034 method Methods 0.000 title claims abstract description 28
- 241001269238 Data Species 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 21
- 238000012546 transfer Methods 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 101100328518 Caenorhabditis elegans cnt-1 gene Proteins 0.000 claims description 9
- 101100328519 Caenorhabditis elegans cnt-2 gene Proteins 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 19
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000001514 detection method Methods 0.000 abstract description 3
- 230000001934 delay Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 12
- 230000014759 maintenance of location Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000005039 memory span Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002407 reforming Methods 0.000 description 2
- 101100063435 Caenorhabditis elegans din-1 gene Proteins 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Static Random-Access Memory (AREA)
- Dram (AREA)
Abstract
本发明公开了一种FFT倒序操作存储器数据调度方法及电路,使用两块N/2深度单端口存储器进行数据调度,充分发挥单端口存储器的面积和功耗优势,有效减少了片上存储器面积;采用统一的数据暂停信号和读后便写的读写策略,使得该设计能够等待外部数据的暂停,而不丢失数据和影响读写时序;采用固定规则的N个时钟数据延迟,有效避免了使用较大FIFO存储器实现最短延迟时间的检测逻辑。本发明具有灵活的可配置性和可扩展性,最大程度地避免了不同点数对于存储器容量和控制逻辑的依赖;与现有的倒序操作方法相比,本发明占用的资源少,可配置灵活性好,能够处理带中断暂停的连续数据流。
Description
技术领域
本发明属于超大规模集成电路(VLSI,Very Large Scale IntegratedCircuit)领域,具体涉及到一种快速傅立叶变换(FFT,Fast FourierTransform)倒序操作的存储器数据调度方法和电路结构。
背景技术
随着雷达、卫星和消费电子等应用需求的不断增长,FFT处理器设计的点数和精度需求不断增加,流水线结构具有灵活可配置的特点,并且作为提升计算速度的重要手段,因而被广泛采用。在大点数的浮点数据格式的FFT计算中,倒序模块的面积和性能对于整个FFT处理器的性能具有至关重要的影响,因而有必要研究出能够高效完成倒序操作并具有较低面积开销的倒序模块存储器调度方法和结构。
FFT的VLSI结构分为存储器迭代结构和单路径/多路径流水线结构两类,存储器迭代结构在处理单元较少的设计中,可以有效减少面积开销,但同时计算速度非常慢,严重影响系统处理的实时性要求;而采用多路并行处理的方式,提高速度和增加面积开销同时,对于外部带宽的要求非常大。单路径延迟反馈(SDF,Single-path Delay Feedback)或多路径延迟切换(MDC,Multiple-path Delay Commutator)等流水线结构具有较高的处理单路或多路数据的效率,具有较高的计算单元利用率和速度,并具有较少的存储器面积开销。
无论是单路径或多路径流水线结构,并基于此采用高基数或混合基算法,其数据输入和输出均具有与Cooley-Tukey算法(Radix-2DIT,Decimation-In-Time)或Sande-Tuey算法(Radix-2DIF,Decimation-In-Frequency)相同的自然序或倒位序输入和输出特点。
而对于FFT处理器的主控器件数字信号处理器(DSP,Digital SignalProcessor)或其它微控制器(MCU,Micro Control Unit)而言,对数据的调度往往是通过直接存储器访问(DMA,Direct Memory Access)控制器以连续地址的方式完成写入或读取,并且外部的SDR/DDR/DDRIISDRAM(Single Data Rate/Double Data Rate/Double Data Rate IISynchronous Dynamic Random Access Memory)等动态存储器件也要求数据以连续地址方式读写,才能获得较高的读写效率,因而设计高效的FFT倒序电路对于整体系统处理性能的提高非常重要。
自然序输入、倒位序输出的FFT计算核心得到一组序列,长度为N=2m,每个数据的输出的索引序号可以表示为m位的二进制:
index=(bob1…bm-1)B (i=0,1,…,m-1) (1)
其中bi为1或0,bm-1为最高位,b0为最低位。倒序操作就是将该index索引号的数据重新调整到no_index索引号的位置,之后可以按照该顺序依次输出,得到FFT计算的顺序结果,其中no_index满足以下关系:
no_index=(bm-1bm-2…b0)B (i=0,1,…,m-1) (2)
倒位序输出的相邻两个连续数据成一组,X(index2k)和X(index2k+1)表示在一组N=2m个数据中第2k和2k+1个数据,其中k=0~2m-1-1,那么
index2k+1-index2k=2m-1 (3)
而对于相邻的X(index2k)和X(index2k+1)的索引号分别有如下表达式:
index2k=(0b1…bm-1)B (4)
index2k+1=(1b1…bm-1)B (5)
因而在X(index2k)和X(index2k+1)两组序列中其索引号具有m-1bits倒位序的特点。对于自然序结果转换为倒位序的结果具有上述类似的特点,本发明倒序操作存储器数据调度方法和结构正是基于这样的倒位序特点。
非连续数据倒序操作很简单,仅需要一块N深度的单口存储器。但实际应用中几乎均为连续处理的情况,以满足数字图像等领域的二维、甚至多维处理和相关计算,并且对于实时性要求很高。对于VLSI设计中的连续倒序操作,传统设计方法包括两种:使用两块N深度的单口存储器和使用一块N深度的双口存储器。
Wen-Zen Shen于1994年在“On The Reduction of Reorder Buffer Size forDiscrete Fourier Transform Processor Design”(IEEE InternationalSymposium on Circuits and Systems,1994,171-174)一文中采用一块双口存储器实现基于504=7×8×9点素因子算法(PFA,Prime Factor Algorithm)的数据重整序,但其算法和数据调度非常复杂,并且不易于扩展应用于各种可配置FFT点数的数据重整序中。Fredrik Kristensen于2004年在“Reduced Transceiver-Delay for OFDM Systems”(IEEE VehicularTechnology Conference,2004,1242-1245)一文中采用了两块N深度的单口存储器来实现FFT的数据重新整序,其中一块存储器用于数据缓存,另一块存储器用于读出,之后两块存储器做乒乓切换,从而避免了数据读写访问的冲突。Tuhin Subhra Chakraborty于2008年在“On Output ReorderBuffer Design of Bit Reversed Pipelined Continuous Data FFT Architecture”(IEEE Asia Pacific Conference on Circuits and Systems,2008,1132-1135)一文中采用一块N深度的双口存储器,并寻求最快的数据输出时间,事实上这增加了FIFO存储器的开销并为可配置模式带来困难,并且数据提前输出的时间并不明显,不妨将此延迟定为N个时钟,这样更便于实现相关读写控制和不同点数模式配置逻辑,也可避免大量的FIFO资源开销。
无论是使用两块N深度的单口存储器,还是使用一块N深度的双口存储器的倒序操作,在大点数和高精度FFT计算中面积都是巨大的,因此如何在保证N个时钟延迟和数据吞吐率为1时钟/数据条件下,有效降低倒序操作的面积开销和实现存储器数据无冲突读写成为VLSI结构设计的重点。
发明内容
本发明针对FFT处理器计算结果顺序与DMA和SDR/DDR/DDRIISDRAM等器件数据读写特点的矛盾,以及现有方法存储器面积开销过大和不同点数配置不够灵活的特点,提出了一种倒序操作存储器数据调度电路,该电路基于两块N/2深度的单口存储器,充分发挥单口存储器的面积和功耗优势,具有1时钟/数据的吞吐率和N个时钟的数据延迟特性,显著降低了芯片面积和成本。
一种FFT倒序操作存储器数据调度方法,涉及第一和第二单端口存储器,具体为:
定义待写入数据序列的数据个数为N=2m,第一单端口存储器的读地址和写地址分别为raddr1和waddr1,第二单端口存储器的读地址和写地址分别为raddr2和waddr2,inv_M()为m-1位比特地址信号倒置操作,cnt1()和cnt2()为两个m bits的计数器,记当前数据序号为c_num,第一组待写入数据序列直接进入初始只写模式,
初始只写模式:将第一组待写入数据序列分两路并行写入第一和第二单端口存储器,两单端口存储器的写地址waddr1=waddr2=inv_M(cnt1[m-1:1]),写至当前点数长度模式下存储器地址最高限值时,若还有待写入的数据序列,则转至第一种交替读写模式,否则,转至清空只读模式;
第一种交替读写模式:读取第一和第二单端口存储器的数据,第一和第二单端口存储器的读地址分别为
k=0,1,2,…,m-1
将待写入数据序列分两路并行写入第一和第二单端口存储器,第一和第二单端口存储器的写地址分别为waddr1=raddr1_pre,waddr2=raddr2_pre,raddr1_pre为第一单端口存储器前一时钟的读地址,raddr2_pre为第二单端口存储器前一时钟的读地址;写至当前点数长度模式下存储器地址最高限值时,若还有待写入数据序列,则转移第二种交替读写模式,否则,转至清空只读模式;
第二种交替读写模式:读取第一和第二单端口存储器的数据,第一和第二单端口存储器的读地址raddr1=raddr2=inv_M(cnt1[M:1]),将待写入数据序列分两路并行写入第一和第二单端口存储器,第一和第二单端口存储器的写地址waddr1=waddr2=raddr1_pre=raddr2_pre;写至当前点数长度模式下存储器地址最高限值时,若还有待写入数据序列,则转移第一种交替读写模式,否则,转至清空只读模式;
清空只读模式:若是从初始只写模式转移到清空只读模式,则按照第一种交替读写模式产生读地址进行只读操作;若是从第一种交替读写模式转移到清空只读模式,则按照第二种交替读写模式产生读地址进行只读操作;若是从第二种交替读写模式转移到清空只读模式,则按照第一种交替读写模式产生读地址进行只读操作。
一种FFT倒序操作存储器数据调度电路,包括
中心控制器1,接收外部的数据有效指示信号、点数配置模式和序列组数信号,将序列组数信号作为剩余序列组数指示寄存器的初值,接收来自读写地址产生器2的读和写地址,其中包括单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址,接收来自可配置读写状态控制器3的读使能信号;在连续接收到数据有效指示信号两次后向输入接口单元6发送串并转换控制信号以及向读写地址产生器2发送启动信号;若单端口存储器a4的写地址与地址最高限值相等,则向读写地址产生器2和输入接口单元6发送写满最高地址指示信号,并将剩余序列组数指示寄存器减1;若单端口存储器a4的写地址与单端口存储器b5的写地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的写地址大于单端口存储器a4的写地址且单端口存储器a5的写地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输入接口单元6发送写满最高地址一半指示信号,所述当前点数长度模式下地址最高限值为当前点数配置模式对应的点数长度减1,所述当前点数长度模式下地址最高限值一半为当前点数配置模式对应的点数长度的一半减1;若单端口存储器a4的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输出缓冲单元7发送读空最高地址指示信号;若单端口存储器a4的读地址与单端口存储器b5的读地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的读地址大于单端口存储器a4的读地址且单端口存储器a5的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输出缓冲单元7发送读空最高地址一半指示信号;在数据有效指示信号的触发下产生数据准备好信号并传送至可配置读写状态控制器3;若接收到读使能信号,则向输出缓冲单元7发送并串转换控制信号;还将当前剩余序列组数指示寄存器值发送给读写地址产生器2;
读写地址产生器2,接收来自中心控制器1的启动信号、剩余序列组数指示寄存器值、写满最高地址指示信号、写满最高地址一半指示信号、读空最高地址指示信号、读空最高地址一半指示信号,来自可配置读写状态控制器3的读使能或写使能信号,接收外部的点数配置模式,以及外部的数据有效指示信号;读写地址产生器2将读写地址产生模式信息发送至可配置读写状态控制器3;在读使能或写使能信号触发下选择生成的读或写地址,并分别传送给单端口存储器a4和单端口存储器b5;读写地址产生器2根据剩余序列组数指示寄存器值,写满最高地址指示信号或写满最高地址一半指示信号,读空最高地址指示信号或读空最高地址一半指示信号来控制不同的读写地址产生模式切换生成两存储器的读、写地址,读写地址产生器2将生成的单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址信息发送至中心控制器1;读写地址产生器2在工作中根据外部的数据有效指示信号,在数据暂停时保持读写地址产生模式信息不变;
可配置读写状态控制器3,接受来自中心控制器1的数据准备好信号和读写地址产生器2的读写地址产生模式;根据数据准备好信号和读写地址产生模式产生对于单端口存储器a4和单端口存储器b5的当前读使能或写使能信号;可配置读写状态控制器3将读使能信号发送至中心控制器1,将读使能或写使能信号发送至读写地址产生器2;
单端口存储器a4和单端口存储器b5,作为数据的暂存单元,接受来自读写地址产生器2的读或写地址信息,接受来自可配置读写状态控制器3的读使能或写使能信号,在写使能的控制下接受来自于输入接口单元6的数据,在读使能的驱动下读出数据发送至输出缓冲单元7;
输入接口单元6,接受来自外部的输入数据和来自中心控制器1的串并转换控制信号、写满最高地址指示信号和写满最高地址一半指示信号,收到串并转换控制信号后将先后连续的两个有效输入数据转换为上下两路并行数据,首先接收到的数据作为上路数据,其次接收到的数据作为下路数据;若收到写满最高地址指示信号,则将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;若收到写满最高地址一半指示信号,则将上下两路并行数据分别写入至单端口存储器b5和单端口存储器a4;在输入接口单元6首次向存储器写入数据时,默认将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;
输出缓冲单元7接受来自单端口存储器a4和单端口存储器b5的两路并行数据,来自中心控制器1的并串转换控制信号、读空最高地址指示信号、读空最高地址一半指示信号;若收到读空最高地址指示信号,则分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据;若收到读空最高地址一半指示信号,则分别从单端口存储器b5和单端口存储器a4同时读出上下两路并行数据;对上下两路并行数据作并串转换,实现先输出上路数据再输出下路数据;首次接收到并串转换控制信号后,默认分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据。
输入接口单元6和输出缓冲单元7包括相接的两级缓冲寄存器和数据切换开关。
读写地址产生器2包括计数器a21、计数器b22、位倒置和移位单元23、延迟单元24、地址交换选择逻辑25、读写地址产生模式状态机26、多路选址器a27和多路选址器b28;
计数器a21和计数器b22为具有最大的m bits位宽,能够处理最大可配置2m长度的数据序列;计数器a21和计数器b22若接收到来自中心控制器1的启动信号,并且接受到来自可配置读写状态控制器3的读使能或写使能信号,则计数器a21和计数器b22开始计数产生地址,否则按照数据暂停情况处理,保持原有值不变;计数器a21将产生的m bits位宽的地址信号发送至位倒置和移位单元23;计数器b22将产生的m bits位宽的地址信号发送至延迟单元24,并作为地址A21发送至交换判决逻辑25;
位倒置和移位单元23接受来自外部的可配置点数模式信息和来自计数器a21的m bits的地址;位倒置和移位单元23首先将m bits的地址按比特颠倒位置,得到新的m bits地址;位倒置和移位单元23根据可配置点数模式信息确定新的m bits地址的移位次数从而得到输出地址A1,将其发送至地址交换选择逻辑25;
延迟单元24接受来自计数器b22的m bits地址,并将该地址用寄存器延迟一个时钟发送得到地址A22,并将地址A22发送至交换判决逻辑25;
地址交换选择逻辑25接受来自位倒置和移位单元23的地址A1,来自计数器b22的地址A21,来自延迟单元24的地址A22,来自读写地址产生模式状态机26的读写模式状态信息,以及来自中心控制器1的写满最高地址一半指示信号、读空最高地址一半指示信号;若读写模式状态信息表示正处于初始只写模式,则选择地址A1作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2;若读写模式状态信息表示正处于第一种交替读写模式,则首先选择地址A21和A22分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并且地址A21和A22延迟一个时钟分别作为单端口存储器a4的写地址waddr1和单端口存储器b5的读地址waddr2;若接受到写满最高地址一半指示信号,则选择地址A22和A21分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并且地址A22和A21延迟一个时钟分别作为单端口存储器a4的写地址waddr1和单端口存储器b5的读地址waddr2,直至读写模式状态信息变为第二种交替读写模式或清空只读模式;若读写模式状态信息表示正处于第二种交替读写模式,则选择地址A1作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并将地址A1延迟一个时钟作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2;若读写模式状态信息表示正处于清空只读模式,若该清空只读模式是由初始只读模式转来,则按照第一种读写交替模式产生读地址,即将地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,若该清空只读模式是由第一种读写交替模式转来,则按照第二种读写交替模式产生读地址,即首先将地址A21和A22分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,当接收到读空最高地址一半指示信号,则转为将地址A22和A21分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,若该清空只读模式是由第二种读写交替模式转来,则按照第一种读写交替模式产生读地址,即将地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2;地址交换选择逻辑25将产生的单端口存储器a4的读地址raddr1和写地址waddr1发送至多路选择器a27,将产生的单端口存储器b5的读地址raddr2和写地址waddr2发送至多路选择器b28;
读写地址产生模式状态机26接受来自中心控制器1的启动信号、剩余组数指示信号、写满最高地址指示信号、读空最高地址指示信号和外部的数据有效指示信号,以及外部数据有效指示信号;读写地址产生模式状态机26完成不同的读写地址产生模式的切换,并将当前读写地址产生模式信息发送至地址交换选择逻辑25和可配置读写状态控制器3;
多路选择器a27接受来自地址交换选择逻辑25发送的单端口存储器a4的读地址raddr1和写地址waddr1,多路选择器b28接受来自地址交换选择逻辑25发送的单端口存储器b5的读地址raddr2和写地址waddr2,多路选择器a27和多路选择器b28均接受来自可配置读写状态器3的读使能或写使能信号;在读使能信号下,同时选择raddr1和raddr2分别作为addr1和addr2发送至单端口存储器a4和单端口存储器b5的地址线端口,在写使能信号下,同时选择waddr1和waddr2分别作为addr1和addr2发送至单端口存储器a4和单端口存储器b5的地址线端口。
与现有的调度方法和结构相比,本发明有效降低了片上存储器容量,减少了硬件资源的开销,保证了较高的处理速度,最大程度避免了不同点数对于存储器容量和控制逻辑的依赖,对于不同点数具有很高的可配置灵活性,使得本发明倒序数据调度方法和电路在存储器容量和寻址控制可配置逻辑方面有较大的优势。具体而言,本发明具有以下技术效果:
(1)通过采用两块N/2深度单口存储器减少了片上存储器面积随着需要的存储器深度和位宽的不断增加,一块N深度双口存储器或两块N深度单口存储器的面积都具有相当大的VLSI设计成本,而两块N/2深度单口存储器具有更低的存储器面积,且单口存储器在面积和功耗开销方面较双口存储器具有显著优势。根据式(3),(4),(5)所示,数据序号的排列规律连续性地整理为自然序的序号较为复杂,引入两块存储器具有较好的数据切换和分别产生存储器读出和写入地址的能力,便于实现倒位序连续数据的自然序输出。
(2)采用固定规则N个时钟数据延迟,有效避免效果不明显但具有较大FIFO存储器开销的最短时间输出检测逻辑
Tuhin Subhra Chakraborty采用基于FIFO存储器的检测逻辑,实现最短无冲突连续读出的时间,虽然稍微减短了数据流输出时间,但对于不同点数模式的处理缺乏配置灵活性,在输出数据延迟时间上不规则且FIFO控制检测电路的可配置性差。对于8192点的浮点处理器设计而言,将增加约8k*13bits大小的额外FIFO存储器开销,大大增加了设计复杂度和成本。本发明对于不同可配置点采用统一的N个时钟数据延迟,无需增加额外的控制检测逻辑和FIFO存储器,为可配置点数的FFT处理器设计减少了设计成本。
(3)采用统一的流水线暂停策略,读后便写的方式有效避免了数据丢失和冲突
当外部数据由于带宽需求或中断等情况出现暂时无效时,应当将流水线暂停,停止数据的计算和读写,并将有效的中间数据保存,本发明采用与FFT处理器统一的流水线暂停信号,确保中间数据不丢失。另外,在两块存储器的同时读写条件下,采用读一次,紧跟其后写一次的方式,避免地址信号的时序错位和数据的丢失,保证流水线暂停后的读写时序不冲突。
本发明采用两块N/2深度的单口存储器同时读或写的方式,完成带暂停的连续数据流的倒位序顺序调整;以8k点的浮点格式FFT设计为例,本发明与一块N深度双口存储器和两块N深度单口存储器的方案比较,存储器面积分别减少了67.8%和46.1%,显著降低的存储器的面积开销,降低了器件功耗和设计成本;该设计方案采用固定规则的时钟数据延迟,降低了可配置倒序操作的设计复杂度,避免了大量FIFO存储器的使用,8192点的浮点设计大约节省约8k*13bits的FIFO存储器;本发明还采用统一的流水线暂停策略,保存中间数据,满足外部带宽和控制环境的可变性,并且以读后便写的方式有效避免的暂停后的数据丢失和读写时序冲突。
附图说明
图1为基于N/2深度单口存储器的倒序操作总体结构示意图。
图2为16点数据倒序操作初始化写操作示意图。
图3为16点数据倒序操作第一种同时读写操作示意图。
图4为16点数据倒序操作第二种同时读写操作示意图。
图5为存储器读写地址和使能信号的产生电路示意图。
图6为读写地址产生器的读写状态转移示意图。
图7为输入和输出数据的串-并转换示意图。
具体实施方式
下面结合附图和实例对本发明作进一步详细的说明。
本发明提出的基于N/2深度单口存储器的倒序操作的VLSI结构是基于存储器数据调度和有限状态机的控制方式。如图1所示,本发明的VLSI结构包括中心控制器1,读写地址产生器2,可配置读写状态控制器3,单端口存储器a4,单端口存储器b5,输入接口单元6,输出缓冲单元7。
中心控制器1负责系统中各个模块的状态控制和数据调度。中心控制器1接收外部的数据有效指示信号、点数配置模式和序列组数信号,将序列组数信号作为剩余序列组数指示寄存器的初值,接收来自读写地址产生器2的读和写地址,其中包括单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址,接收来自可配置读写状态控制器3的读使能信号;在连续接收到数据有效指示信号两次后向输入接口单元6发送串并转换控制信号以及向读写地址产生器2发送启动信号;若单端口存储器a4的写地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输入接口单元6发送写满最高地址指示信号,并将剩余序列组数指示寄存器减1;若单端口存储器a4的写地址与单端口存储器b5的写地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的写地址大于单端口存储器a4的写地址且单端口存储器a5的写地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输入接口单元6发送写满最高地址一半指示信号,所述当前点数长度模式下地址最高限值为当前点数配置模式对应的点数长度减1,所述当前点数长度模式下地址最高限值一半为当前点数配置模式对应的点数长度的一半减1;若单端口存储器a4的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输出缓冲单元7发送读空最高地址指示信号;若单端口存储器a4的读地址与单端口存储器b5的读地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的读地址大于单端口存储器a4的读地址且单端口存储器a5的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器2和输出缓冲单元7发送读空最高地址一半指示信号;在数据有效指示信号的触发下产生数据准备好信号并传送至可配置读写状态控制器3;若接收到读使能信号,则向输出缓冲单元7发送并串转换控制信号;将当前剩余序列组数指示寄存器值发送给读写地址产生器2。
读写地址产生器2接收来自中心控制器1的启动信号、剩余序列组数指示寄存器值、写满最高地址指示信号或写满最高地址一半指示信号、读空最高地址指示信号或读空最高地址一半指示信号,来自可配置读写状态控制器3的读使能或写使能信号,接收外部的点数配置模式,以及外部的数据有效指示信号;读写地址产生器2将读写地址产生模式发送至可配置读写状态控制器3;在读使能或写使能信号触发下选择生成的读或写地址,并分别传送给单端口存储器a4和单端口存储器b5;读写地址产生器2将生成的单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址信息发送至中心控制器1;读写地址产生器2在工作中根据外部的数据有效指示信号,在数据暂停时保持读写地址产生模式信息不变;读写地址产生器2根据剩余序列组数指示寄存器值,写满最高地址指示信号或写满最高地址一半指示信号,读空最高地址指示信号或读空最高地址一半指示信号来控制不同的读写地址产生模式的切换。
可配置读写状态控制器3接受来自中心控制器1的数据准备好信号和读写地址产生器2的读写地址产生模式信息;可配置读写状态控制器3根据数据准备好信号和读写地址产生模式信息产生对于单端口存储器a4和单端口存储器b5的读使能或写使能信号;可配置读写状态控制器3将读使能信号发送至中心控制器1,将读使能或写使能信号发送至读写地址产生器2;
单端口存储器a4和单端口存储器b5作为数据的暂存单元,接受来自读写地址产生器2的读或写地址信息,接受来自可配置读写状态控制器3的读使能或写使能信号,在地址和读写使能的控制下,接受来自于输入接口单元6的双路并行数据,并读出双路数据发送至输出缓冲单元7;
输入接口单元6接受来自外部的输入数据和来自中心控制器1的串并转换控制信号和写满最高地址指示信号、写满最高地址一半指示信号,根据串并转换控制信号将连续的两个有效输入数据转换为上下两路并行数据,首先接收到的数据作为上路数据,其次接收到的数据作为下路数据;
若收到写满最高地址指示信号,则将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;若收到写满最高地址一半指示信号,则将上下两路并行数据分别写入至单端口存储器a5和单端口存储器b4;
在输入接口单元6首次向存储器写入数据时,默认将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;
输出缓冲单元7接受来自单端口存储器a4和单端口存储器b5的两路并行数据,来自中心控制器1的并串转换控制信号、读空最高地址指示信号、读空最高地址一半指示信号;若收到读空最高地址指示信号,则分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据;若收到读空最高地址一半指示信号,则分别从单端口存储器a5和单端口存储器b4同时读出上下两路并行数据;对上下两路并行数据作并串转换,实现先输出上路数据再输出下路数据;
在输出缓冲单元7首次接收到并串转换控制信号后,默认分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据。
本发明基于两块N/2深度的单端口存储器实现FFT倒序操作,存储器数据调度方法是本发明的重点,读写地址产生器2用以实现数据读写调度,以不同的读写模式产生读写地址,具体的地址产生模式和控制流程如下:
定义一组序列的长度为N=2m,N为点数配置模式对应的点数长度;
初始化只写模式:将第一组序列全部两路并行写入单端口存储器a4和单端口存储器b5中,在输入接口单元6每接收到两个有效数据后,读写地址产生器2对初始值为0的m-1位二进制数不断增1再做倒位序操作,即按照下述规律产生写地址:
单端口存储器a4和单端口存储器b5写地址相同,由于数据以两两并行的方式写入存储器,写操作仅在新输入的两个数据转备好之后进行一次。当写地址达到后,判断剩余序列组数指示寄存器值是否为0,若是,则转移至清空只读模式,否则,执行第一种交替读写模式;
如图2所示,是以16点的倒序处理为例,0~T2时间完成第一次数据初始化存储,按照3bits的倒位序地址写入,并在写入一半数据后,将数据交换存储。
第一种交替读写模式:考虑数据暂停对于数据保持和读写时序的影响,将写操作紧跟在读操作的下一个时钟周期;写地址信号是上一个时钟的读地址信号;在完成前一半的N/2数据的读写时,单端口存储器a4和单端口存储器b5的读写地址产生方式分别具有如下规律:
当结束N/2数据的读写后,会依次接受到来自中心控制器1的读空最高地址一半指示信号和写满最高地址一半指示信号,读写地址产生器2将转移读写模式处理后一半的N/2数据,此时单端口存储器a4和单端口存储器b5的读写地址产生方式分别具有如下规律:
当结束后一半的N/2数据的读写后,会依次接受到来自中心控制器1的读空最高地址指示信号和写满最高地址指示信号,判断剩余序列组数指示寄存器值是否为0,若是,则转移至清空只读模式,否则,执行第二种交替读写模式;
如图3所示,16点长度的第一组数据已经全部写入,可以进行交替读写,在T2~T3时间段,完成前一组前一半数据的读出和下一组前一半数据的写入,单端口存储器a4和单端口存储器b5的读写地址分别依次为000和001、010和011、100和101、110和111;一个时钟读,相邻下一个时钟写,写按照上一个时钟的读地址来写;同样在T3~T4时间段,完成下一半数据的读出和写入,单端口存储器a4和单端口存储器b5的读写地址分别依次为001和000、011和010、101和100、111和110;这样读出的数据是按照X(0)、X(1)、…X(N-1)自然序顺序读出,写入数据按照倒位序顺序写入;
第二种交替读写模式:类似于第一种交替读写模式,同样将写操作紧跟在读操作的下一个时钟周期;写地址信号是上一个时钟的读地址信号;读写地址产生器2对初始值为0的m-1位二进制数不断增1再做倒位序操作,即按照下述规律产生读和写地址信号:
单端口存储器a4和单端口存储器b5写地址信号相同,当结束N/2数据的读写后,会依次接受到来自中心控制器1的读空最高地址一半指示信号和写满最高地址一半指示信号,当读写完一组N个数据后,会依次接受到来自中心控制器1的读空最高地址指示信号和写满最高地址指示信号,判断剩余序列组数指示寄存器值是否为0,若是,则转移至清空只读模式,否则,执行第一种交替读写模式;
根据倒位序特点,按照图3中那样的读规律写,造成的数据存储状态是X(index2k)和X(index2k+1)相邻数据序列,按照m-1bits倒位序地址规律在两块单端口存储器中同地址存储,并且后一半数据的存储交换存储器位置,在图3中,X(0)和X(1)存在000地址,X(2)和X(3)存在100地址,X(8)和X(9)则交换位置存在001地址;这样在下次读操作中,只需按照m-1bits倒位序地址读即可,并且后一半的N/2数据需要交换读出;
如图4所示,对于按照第一种交替读写模式处理完后的存储状态按照第二种交替读写模式交替读写;在T4~T5时间段,完成前一组前一半数据的读出和下一组前一半数据的写入,一个时钟读,相邻下一个时钟写,在T5~T6时间段,完成下一半数据的读出和写入;读出的数据同样是按照X(0)、X(1)、…X(N-1)自然序顺序读出,写入数据按照倒位序顺序写入;
清空只读模式:若是从初始化只写模式转移到清空只读模式,则其按照第一种交替读写模式中读地址的产生方式产生只读操作的读地址信号;若是从第一种交替读写模式转移到清空只读模式,则其按照第二种交替读写模式中读地址的产生方式产生只读操作的读地址信号;若是从第二种交替读写模式转移到清空只读模式,则其按照第一种交替读写模式中读地址的产生方式产生只读操作的读地址信号。
本发明提出的存储器数据调度策略具有很好的可扩展性,可灵活实现2的幂次方的可配置长度的数据倒位序处理;
定义一组数据个数为N=2m,共有GP_NUM组序列,该信号由外部作为序列组数信号输入,并将其赋初值于中心控制器1中待处理序列组数寄存器Group,有两个m bits的计数器cnt1[m-1:0]和cnt2[m-1:0]与数据有效输入同步增1,其位宽相同且能够计数最高配置点数,两块存储器读和写地址分别定义为raddr1和waddr1、raddr2和waddr2,定义有随m变化而不同的m-1位比特地址信号倒置操作inv_M,其中M=m-1,完成M bits地址信号的倒置,且记当前数据序号为c_num,在不同读写模式下的地址产生规律如下:
(1)初始只写模式:该模式将N个数据全部写入两块存储器中,两个写地址相同且为:waddr1=waddr2=inv_M(cnt1[M:1]) (6)
写至最高地址时,在中心控制器1中将Group减1再赋值于Group,若结果不为0,则转移至下述第一种交替读写模式,若结果为0,则转移至下述清空只读模式;
(2)第一种交替读写模式:由于数据可能出现暂停的情况,先启动读,之后紧跟着启动写,读写地址计算公式为(其中raddr1_pre和raddr2_pre分别前一个时钟的表示raddr1和raddr2):
waddr1=raddr1_pre (9)
waddr2=raddr2_pre (10)
c_num∈[1+kN,N/2+kN]表示当前读出的数据为第c_num个读出的输出,若有m组数据序列,即总共有mN个数据需要按照完成倒位序的整序处理,则其中k的取值按照0,1,2,...,m-1变化,表示处理的数据序列的变化。
写至最高地址时,在中心控制器1中将Group减1再赋值于Group,若结果不为0,则转移至下述第二种交替读写模式,若结果为0,则转移至下述清空只读模式;
(3)第二种交替读写模式:同样由于数据可能出现暂停的情况,先启动读,后紧跟着启动写,读写地址计算公式为(其中raddr1_pre和raddr2_pre分别前一个时钟的表示raddr1和raddr2):
raddr1=raddr2=inv_M(cnt1[M:1]) (11)
waddr1=waddr2=raddr1_pre=raddr2_pre (12)
写至最高地址时,在中心控制器1中将Group减1再赋值于Group,若结果不为0,则转移至第一种交替读写模式,若结果为0,则转移至下述清空只读模式;
(4)清空只读模式:若是从第一种交替读写模式转移到清空只读模式,则按照第二种交替读写模式产生读地址,不用产生写地址;若是从第二种交替读写模式转移到清空只读模式,则按照第一种交替读写模式产生读地址,不用产生写地址;
第二种交替读写模式得到的数据存储结果可以按照第一种交替读写模式中读地址方式读出,若有多组连续数据,则按照第一种交替读写模式和第二种交替读写模式不断循环,直至最后以第一种或第二种交替读写模式中只读操作结束;以上操作在每写入N/2数据或每读出N/2数据后,均需要将两块存储器数据接口切换,该操作在输入接口单元和输出缓冲单元分别做写入和读出数据的调整处理;按照这种数据调度方法得到的结果数据就是按照X(0)、X(1)、…X(N-1)自然序的计算结果,并且对于任意N=2m大小的点数的倒序处理都是通用可行的;
如图5所示,是两块存储器的读写地址和读写使能信号的产生电路,包含读写地址产生器2和可配置读写状态控制器3的具体实现方式。读写地址产生器2包括计数器a21、计数器b22、位倒置和移位单元23、延迟单元24、地址交换选择逻辑25、读写地址产生模式状态机26、MUXa27和MUXb28的多路选址器;
计数器a21和计数器b22设计为具有最大的m bits位宽,能够处理最大可配置2m长度的数据序列;计数器a21和计数器b22若接收到来自中心控制器1的启动信号,并且接受到来自可配置读写状态控制器3的读使能或写使能信号,则计数器a21和计数器b22开始计数产生地址,否则,保持原有值不变;计数器a21将产生的m bits位宽的地址信号发送至位倒置和移位单元23;计数器b22将产生的m bits位宽的地址信号延迟单元24,并作为地址A21发送至交换判决逻辑25;结合上述四种读写地址产生模式的描述,计数器a21产生的地址用以进一步产生初始化只写模式和第二种读写交替模式的地址,计数器b22产生的地址用以进一步产生第一种读写交替模式的地址;
位倒置和移位单元23接受来自外部的可配置点数模式信息和来自计数器a21的m bits的地址;位倒置和移位单元23首先将m bits的地址按比特颠倒位置,得到新的m bits地址;位倒置和移位单元23根据可配置点数模式信息确定新的m bits地址的移位次数,如配置的点数长度为N=2n,则保留新的m bits地址的最高n bits作为输出地址A1;位倒置和移位单元23将产生的地址A1发送至地址交换选择逻辑25;
延迟单元24接受来自计数器b22的m bits地址;并将该地址用寄存器延迟一个时钟发送得到地址A22,并将地址A22发送至交换判决逻辑25;
地址交换选择逻辑25接受来自位倒置和移位单元23发送来的地址A1,来自计数器b22发送来的地址A21,来自延迟单元24发送来的地址A22,来自读写地址产生模式状态机26的读写模式状态信息,以及来自中心控制器1的写满最高地址一半指示信号、读空最高地址一半指示信号;若读写模式状态信息表示正处于初始化只写模式,则选择地址A1作为单端口存储器a4写地址信号waddr1和单端口存储器b5的写地址信号waddr2;若读写模式状态信息表示正处于第一种交替读写模式,则首先选择地址A21和A22分别作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,并且地址A21和A22延迟一个时钟分别作为单端口存储器a4写地址信号waddr1和单端口存储器b5的读地址信号waddr2,若接受到写满最高地址一半指示信号,则选择地址A22和A21分别作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,并且地址A22和A21延迟一个时钟分别作为单端口存储器a4写地址信号waddr1和单端口存储器b5的读地址信号waddr2,直至读写模式状态信息变为第二种交替读写模式或清空只读模式;若读写模式状态信息表示正处于第二种交替读写模式,则选择地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5读地址信号raddr2,并将地址A1延迟一个时钟作为单端口存储器a4写地址信号waddr1和单端口存储器b5的写地址信号waddr2;若读写模式状态信息表示正处于清空只读模式,若该清空只读模式是由第一种读写交替模式转来,则按照第二种读写交替模式产生读地址,即首先将地址A21和A22分别作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,若接收到读空最高地址一半指示信号,则转为将地址A22和A21分别作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,若该清空只读模式是由第二种读写交替模式转来,则按照第一种读写交替模式产生读地址,即将地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2;地址交换选择逻辑25将产生的单端口存储器a4的读地址raddr1和写地址waddr1发送至多路选择器MUXa27,将产生的单端口存储器b5的读地址raddr2和写地址waddr2发送至多路选择器MUXb28;
读写地址产生模式状态机26接受来自中心控制器1的启动信号、剩余组数指示信号、写满最高地址指示信号、读空最高地址指示信号和外部的数据有效指示信号,以及外部数据有效指示信号;读写地址产生模式状态机26主要完成不同的读写地址产生模式的切换,并将读写地址产生模式信息发送至地址交换选择逻辑25和可配置读写状态控制器3,其具体的产生控制模式状态转移如图6所示:
按照初始化只写模式产生写地址的方式,记为wr_state;按照第一种交替读写模式产生读写地址的方式,记为rd_wr_state_1;按照第二种交替读写模式产生读写地址的方式,记为rd_wr_state_2;按照第一种交替读写模式产生清空只读模式中读地址的方式,记为rd_state_1;按照第二种交替读写模式产生清空只读模式中读地址的方式,记为rd_state_2;定义中心控制器1发送的剩余组数指示信号,即剩余组数寄存器值若为零,则gp_none为真,否则为假;
首先在倒序操作开始前,通过异步复位将相应的寄存器的清零,进入等待状态idle。当接收到中心控制器1的启动信号start后,读写地址产生模式状态机26进入初始化只写模式状态wr_state,wr_state定义为与上述初始化只写模式相同的地址产生模式,若外部输入的数据有效指示信号无效或未收到写满最高地址指示信号,即!di_val|!wr_ful为真,则保持原读写模式不变,若收到写满最高地址指示信号,即wr_ful为真时,则判断来自中心控制器1的剩余组数指示信号,即中心控制器1中的剩余组数寄存器值,是否为零,若为零,则转至按照第一种交替读写模式rd_wr_state_1产生读地址的清空只读模式rd_state_1,否则,转至第一种交替读写模式rd_wr_state_1;
当处于第一种交替读写模式rd_wr_state_1时,若外部输入的数据有效指示信号无效或未收到写满最高地址指示信号,即!di_val|!wr_ful为真,则保持原读写模式不变,若收到写满最高地址指示信号,即wr_ful为真时,则判断来自中心控制器1的剩余组数指示信号,若gp_none同时为真,则转至按照第二种交替读写模式rd_wr_state_2产生读地址的清空只读模式rd_state_2,否则,转至第二种交替读写模式rd_wr_state_2;
当处于第一种交替读写模式rd_wr_state_2时,若外部输入的数据有效指示信号无效或未收到写满最高地址指示信号,即!di_val|!wr_ful为真,则保持原读写模式不变,若收到写满最高地址指示信号,即wr_ful为真时,则判断来自中心控制器1的剩余组数指示信号,若gp_none同时为真,则转至按照第一种交替读写模式rd_wr_state_1产生读地址的清空只读模式rd_state_1,否则,转至第一种交替读写模式rd_wr_state_1;
当处于按照第一种交替读写模式产生读地址的清空只读模式rd_state_1或是按照第二种交替读写模式产生读地址的清空只读模式rd_state_2,若外部输入的数据有效指示信号无效或未收到读空最高地址指示信号,即!di_val|!rd_ful为真,则保持原读写模式不变,若收到读空最高地址指示信号,即rd_ful为真时,则结束所有操作,进入空闲等待状态idle;
多路选择器MUXa27和MUXb28接受来自地址交换选择逻辑25发送的单端口存储器a4读地址raddr1和写地址waddr1,单端口存储器b5读地址raddr2和写地址waddr2,接受来自可配置读写状态器3的读使能或写使能信号;根据读使能或写使能信号的变换选择与读写操作对应的单端口存储器a4和单端口存储器b5的同时写地址waddr1和waddr2,或同时读地址raddr1和raddr2,分别作为addr1和addr2发送至单端口存储器a4和单端口存储器b5的地址线端口;
可配置读写状态器3接受来自中心控制器1的数据准备好信号,来自读写地址产生模式状态机26的读写地址产生模式信息;在有效数据的产生数据准备好的条件下,结合读写地址产生模式信息产生为一组准备好数据产生写使能信号;根据读写地址产生模式信息,配合写使能信号,产生交替的读使能和写使能信号;
如图7所示,是对应的输入接口单元6和输出缓冲单元7;对于输入接口单元6而言,采用一个输入切换开关61和两路输入缓冲寄存器组62的方式,将先后两个时钟的数据转为并行的两路,经过输入数据切换单元63得到din1和din2同时分别送入单端口存储器a4和单端口存储器b5中;并且注意到在第一种交替读写模式或第二种交替读写模式写状态下,若写地址达到配置点数设置的最大1/2深度或为最大配置地址值,即wr_haf或wr_ful信号有效时,需要将写地址和写入的两个数据分别切换,该功能由输入数据切换单元63完成;同样对于输出缓冲单元7而言,单端口存储器a4和单端口存储器b5并行输出的两路数据dout1和dout2,可以类似地采用输出缓冲寄存器组72和一个输出切换开关73的方式实现单路的数据输出。在读地址达到配置点数设置的最大1/2深度或为最大配置地址值,即rd_haf或rd_ful信号有效时,由输出数据切换单元71切换两路读地址和读出的两路数据。在每两个时钟进行两路数据的一次读和一次写操作的机制下,配合数据路数的变换,特别是上述存储器数据调度方法,就可以实现基于两块单端口存储器的倒序操作,实现连续数据的无冲突读写。
以上所示仅是以倒序操作实现倒位序输入的自然序输出为例,应当指出的是,由于倒位序的倒位序即为自然序的特点,上述针对FFT倒序操作设计的存储器数据调度方法,同样适用于自然序输入倒位序输出的情况,并且本算法和结构具有对于任意N=2m长度数据的通用可行性,具有良好的可配置性和可扩展性。因此,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还有可能做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种FFT倒序操作存储器数据调度方法,涉及第一和第二单端口存储器,具体为:
定义待写入数据序列的数据个数为N=2m,m为二进制的位数,第一单端口存储器的读地址和写地址分别为raddr1和waddr1,第二单端口存储器的读地址和写地址分别为raddr2和waddr2,inv_M()为m-1位比特地址信号倒置操作,cnt1()和cnt2()为两个m bits的计数器,记当前读的数据序号为c_num,第一组待写入数据序列直接进入初始只写模式,
初始只写模式:将第一组待写入数据序列分两路并行写入第一和第二单端口存储器,两单端口存储器的写地址waddr1=waddr2=inv_M(cnt1[m-1:1]),写至当前点数长度模式下存储器地址最高限值时,若还有待写入的数据序列,则转至第一种交替读写模式,否则,转至清空只读模式;
第一种交替读写模式:读取第一和第二单端口存储器的数据,第一和第二单端口存储器的读地址分别为
k=0,1,2,…,m-1,c_num为当前读的数据序号,M=m-1,
将待写入数据序列分两路并行写入第一和第二单端口存储器,第一和第二单端口存储器的写地址分别为waddr1=raddr1_pre,
waddr2=raddr2_pre,raddr1_pre为第一单端口存储器前一时钟的读地址,raddr2_pre为第二单端口存储器前一时钟的读地址;写至当前点数长度模式下存储器地址最高限值时,若还有待写入数据序列,则转移至第二种交替读写模式,否则,转至清空只读模式;
第二种交替读写模式:读取第一和第二单端口存储器的数据,第一和第二单端口存储器的读地址raddr1=raddr2=inv_M(cnt1[M:1]),将待写入数据序列分两路并行写入第一和第二单端口存储器,第一和第二单端口存储器的写地址waddr1=waddr2=raddr1_pre=raddr2_pre;写至当前点数长度模式下存储器地址最高限值时,若还有待写入数据序列,则转移至第一种交替读写模式,否则,转至清空只读模式;
清空只读模式:若是从初始只写模式转移到清空只读模式,则按照第一种交替读写模式产生读地址进行只读操作;若是从第一种交替读写模式转移到清空只读模式,则按照第二种交替读写模式产生读地址进行只读操作;若是从第二种交替读写模式转移到清空只读模式,则按照第一种交替读写模式产生读地址进行只读操作。
2.一种FFT倒序操作存储器数据调度电路,包括
中心控制器(1),接收外部的数据有效指示信号、点数配置模式和序列组数信号,将序列组数信号作为剩余序列组数指示寄存器的初值,接收来自读写地址产生器(2)的读和写地址,其中包括单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址,接收来自可配置读写状态控制器(3)的读使能信号;在连续接收到数据有效指示信号两次后向输入接口单元(6)发送串并转换控制信号以及向读写地址产生器(2)发送启动信号;若单端口存储器a4的写地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器(2)和输入接口单元(6)发送写满最高地址指示信号,并将剩余序列组数指示寄存器减1;若单端口存储器a4的写地址与单端口存储器b5的写地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的写地址大于单端口存储器a4的写地址且单端口存储器a5的写地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器(2)和输入接口单元(6)发送写满最高地址一半指示信号,所述当前点数长度模式下地址最高限值为当前点数配置模式对应的点数长度减1,所述地址最高限值一半为当前点数配置模式对应的点数长度的一半减1;若单端口存储器a4的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器(2)和输出缓冲单元(7)发送读空最高地址指示信号;若单端口存储器a4的读地址与单端口存储器b5的读地址相同且均与当前点数长度模式下地址最高限值一半相等,或单端口存储器a5的读地址大于单端口存储器a4的读地址且单端口存储器a5的读地址与当前点数长度模式下地址最高限值相等,则向读写地址产生器(2)和输出缓冲单元(7)发送读空最高地址一半指示信号;在数据有效指示信号的触发下产生数据准备好信号并传送至可配置读写状态控制器(3);若接收到读使能信号,则向输出缓冲单元(7)发送并串转换控制信号;还将当前剩余序列组数指示寄存器值发送给读写地址产生器(2);
读写地址产生器(2),接收来自中心控制器(1)的启动信号、剩余序列组数指示寄存器值、写满最高地址指示信号、写满最高地址一半指示信号、读空最高地址指示信号、读空最高地址一半指示信号,来自可配置读写状态控制器(3)的读使能或写使能信号,接收外部的点数配置模式,以及外部的数据有效指示信号;读写地址产生器(2)将读写地址产生模式信息发送至可配置读写状态控制器(3);在读使能或写使能信号触发下选择生成的读或写地址,并分别传送给单端口存储器a4和单端口存储器b5;读写地址产生器(2)根据剩余序列组数指示寄存器值,写满最高地址指示信号或写满最高地址一半指示信号,读空最高地址指示信号或读空最高地址一半指示信号来控制不同的读写地址产生模式切换生成两存储器的读、写地址,读写地址产生器(2)将生成的单端口存储器a4的读地址、单端口存储器a4的写地址、单端口存储器b5的读地址、单端口存储器b5的写地址信息发送至中心控制器(1);读写地址产生器(2)在工作中根据外部的数据有效指示信号,在数据暂停时保持读写地址产生模式信息不变;
可配置读写状态控制器(3),接受来自中心控制器(1)的数据准备好信号和读写地址产生器(2)的读写地址产生模式;根据数据准备好信号和读写地址产生模式产生对于单端口存储器a4和单端口存储器b5的当前读使能或写使能信号;可配置读写状态控制器(3)将读使能信号发送至中心控制器(1),将读使能或写使能信号发送至读写地址产生器(2);
单端口存储器a4和单端口存储器b5,作为数据的暂存单元,接受来自读写地址产生器(2)的读或写地址信息,接受来自可配置读写状态控制器(3)的读使能或写使能信号,在写使能的控制下接受来自于输入接口单元(6)的数据,在读使能的驱动下读出数据发送至输出缓冲单元(7);
输入接口单元(6),接受来自外部的输入数据和来自中心控制器(1)的串并转换控制信号、写满最高地址指示信号和写满最高地址一半指示信号,收到串并转换控制信号后将先后连续的两个有效输入数据转换为上下两路并行数据,首先接收到的数据作为上路数据,其次接收到的数据作为下路数据;若收到写满最高地址指示信号,则将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;若收到写满最高地址一半指示信号,则将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;在输入接口单元(6)首次向存储器写入数据时,默认将上下两路并行数据分别写入至单端口存储器a4和单端口存储器b5;
输出缓冲单元(7),接受来自单端口存储器a4和单端口存储器b5的两路并行数据,来自中心控制器(1)的并串转换控制信号、读空最高地址指示信号、读空最高地址一半指示信号;若收到读空最高地址指示信号,则分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据;若收到读空最高地址一半指示信号,则分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据;对上下两路并行数据作并串转换,实现先输出上路数据再输出下路数据;首次接收到并串转换控制信号后,默认分别从单端口存储器a4和单端口存储器b5同时读出上下两路并行数据。
3.根据权利要求2所述的FFT倒序操作存储器数据调度电路,其特征在于:输入接口单元(6)和输出缓冲单元(7)包括相接的两级缓冲寄存器和数据切换开关。
4.根据权利要求2所述的FFT倒序操作存储器数据调度电路,其特征在于:读写地址产生器(2)包括计数器a21、计数器b22、位倒置和移位单元(23)、延迟单元(24)、地址交换选择逻辑(25)、读写地址产生模式状态机(26)、多路选择器a27和多路选择器b28;
计数器a21和计数器b22为具有最大的m bits位宽,能够处理最大可配置2m长度的数据序列;计数器a21和计数器b22若接收到来自中心控制器(1)的启动信号,并且接受到来自可配置读写状态控制器(3)的读使能或写使能信号,则计数器a21和计数器b22开始计数产生地址,否则,保持原有值不变;计数器a21将产生的m bits位宽的地址信号发送至位倒置和移位单元(23);计数器b22将产生的m bits位宽的地址信号发送至延迟单元(24),并作为地址A21发送至地址交换选择逻辑(25);
位倒置和移位单元(23)接受来自外部的可配置点数模式信息和来自计数器a21的m bits的地址;位倒置和移位单元(23)首先将m bits的地址按比特颠倒位置,得到新的m bits地址;位倒置和移位单元(23)根据可配置点数模式信息确定新的m bits地址的移位次数从而得到输出地址A1,将其发送至地址交换选择逻辑(25);
延迟单元(24)接受来自计数器b22的m bits地址,并将该地址用寄存器延迟一个时钟发送得到地址A22,并将地址A22发送至地址交换选择逻辑(25);
地址交换选择逻辑(25)接受来自位倒置和移位单元(23)的地址A1,来自计数器b22的地址A21,来自延迟单元(24)的地址A22,来自读写地址产生模式状态机(26)的读写模式状态信息,以及来自中心控制器(1)的写满最高地址一半指示信号、读空最高地址一半指示信号;若读写模式状态信息表示正处于初始只写模式,则选择地址A1作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2;若读写模式状态信息表示正处于第一种交替读写模式,则首先选择地址A21和A22分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并且地址A21和A22延迟一个时钟分别作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2;若接受到写满最高地址一半指示信号,则选择地址A22和A21分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并且地址A22和A21延迟一个时钟分别作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2,直至读写模式状态信息变为第二种交替读写模式或清空只读模式;若读写模式状态信息表示正处于第二种交替读写模式,则选择地址A1作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,并将地址A1延迟一个时钟作为单端口存储器a4的写地址waddr1和单端口存储器b5的写地址waddr2;若读写模式状态信息表示正处于清空只读模式,若该清空只读模式是由初始只读模式转来,则按照第一种读写交替模式产生读地址,即将地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2,若该清空只读模式是由第一种读写交替模式转来,则按照第二种读写交替模式产生读地址,即首先将地址A21和A22分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,当接收到读空最高地址一半指示信号,则转为将地址A22和A21分别作为单端口存储器a4的读地址raddr1和单端口存储器b5的读地址raddr2,若该清空只读模式是由第二种读写交替模式转来,则按照第一种读写交替模式产生读地址,即将地址A1作为单端口存储器a4读地址信号raddr1和单端口存储器b5的读地址信号raddr2;地址交换选择逻辑(25)将产生的单端口存储器a4的读地址raddr1和写地址waddr1发送至多路选择器a27,将产生的单端口存储器b5的读地址raddr2和写地址waddr2发送至多路选择器b28;
读写地址产生模式状态机(26)接受来自中心控制器(1)的启动信号、剩余组数指示信号、写满最高地址指示信号、读空最高地址指示信号和外部的数据有效指示信号,以及外部数据有效指示信号;读写地址产生模式状态机(26)完成不同的读写地址产生模式的切换,并将当前读写地址产生模式信息发送至地址交换选择逻辑(25)和可配置读写状态控制器(3);
多路选择器a27接受来自地址交换选择逻辑(25)发送的单端口存储器a4的读地址raddr1和写地址waddr1,多路选择器b28接受来自地址交换选择逻辑(25)发送的单端口存储器b(5)的读地址raddr2和写地址waddr2,多路选择器a27和多路选择器b28均接受来自可配置读写状态控制器(3)的读使能或写使能信号;在读使能信号下,同时选择raddr1和raddr2分别发送至单端口存储器a4和单端口存储器b5的地址线端口,在写使能信号下,同时选择waddr1和waddr2分别发送至单端口存储器a4和单端口存储器b5的地址线端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110231430.0A CN102306142B (zh) | 2011-08-11 | 2011-08-11 | 一种fft倒序操作存储器数据调度方法及电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110231430.0A CN102306142B (zh) | 2011-08-11 | 2011-08-11 | 一种fft倒序操作存储器数据调度方法及电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306142A CN102306142A (zh) | 2012-01-04 |
CN102306142B true CN102306142B (zh) | 2014-05-07 |
Family
ID=45380006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110231430.0A Expired - Fee Related CN102306142B (zh) | 2011-08-11 | 2011-08-11 | 一种fft倒序操作存储器数据调度方法及电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306142B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203342B (zh) * | 2017-05-25 | 2020-08-04 | 郑州云海信息技术有限公司 | 一种存储系统配置方法及配置系统 |
CN107391440B (zh) * | 2017-07-31 | 2020-07-17 | 苏州浪潮智能科技有限公司 | 一种快速傅里叶变换算法输出数据的处理装置及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010076755A (ko) * | 2000-01-28 | 2001-08-16 | 오길록 | 병렬 입출력 구조를 갖는 병렬 셔플 메모리회로 |
CN101082906A (zh) * | 2006-05-31 | 2007-12-05 | 中国科学院微电子研究所 | 一种低存储器开销的固定基fft处理器及其方法 |
CN101083643A (zh) * | 2006-05-31 | 2007-12-05 | 中国科学院微电子研究所 | 一种低存储器开销的混合基fft处理器及其方法 |
CN101290613A (zh) * | 2007-04-16 | 2008-10-22 | 卓胜微电子(上海)有限公司 | Fft处理器的数据存储系统和方法 |
CN101788974A (zh) * | 2010-03-12 | 2010-07-28 | 华为技术有限公司 | 可变点fft/ifft运算方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100762281B1 (ko) * | 2005-12-08 | 2007-10-01 | 한국전자통신연구원 | 고속 푸리에 변환 시스템의 메모리 주소 생성 방법 및 그를이용한 트위들 팩터 생성 장치 |
-
2011
- 2011-08-11 CN CN201110231430.0A patent/CN102306142B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010076755A (ko) * | 2000-01-28 | 2001-08-16 | 오길록 | 병렬 입출력 구조를 갖는 병렬 셔플 메모리회로 |
CN101082906A (zh) * | 2006-05-31 | 2007-12-05 | 中国科学院微电子研究所 | 一种低存储器开销的固定基fft处理器及其方法 |
CN101083643A (zh) * | 2006-05-31 | 2007-12-05 | 中国科学院微电子研究所 | 一种低存储器开销的混合基fft处理器及其方法 |
CN101290613A (zh) * | 2007-04-16 | 2008-10-22 | 卓胜微电子(上海)有限公司 | Fft处理器的数据存储系统和方法 |
CN101788974A (zh) * | 2010-03-12 | 2010-07-28 | 华为技术有限公司 | 可变点fft/ifft运算方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
基于存储技术的高速嵌入式处理器的设计与实现;张钦 等;《计算机学报》;20070531;第30卷(第5期);831-837 * |
张钦 等.基于存储技术的高速嵌入式处理器的设计与实现.《计算机学报》.2007,第30卷(第5期),831-837. |
Also Published As
Publication number | Publication date |
---|---|
CN102306142A (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
CN103026349B (zh) | 数据接口电路 | |
CN109711533B (zh) | 基于fpga的卷积神经网络加速系统 | |
CN101620524B (zh) | 支持矩阵整体读写操作的矩阵寄存器文件 | |
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
CN111832240A (zh) | Fifo数据传输方法及fifo存储装置 | |
KR20130142941A (ko) | 선형 어드레스 리맵핑 로직을 포함하는 메모리 시스템 및 시스템 온 칩 | |
CN100559362C (zh) | 一种外部存储器接口 | |
CN104268122A (zh) | 一种可变点数的浮点fft处理器 | |
CN102306142B (zh) | 一种fft倒序操作存储器数据调度方法及电路 | |
CN103853524A (zh) | 一种乘法器装置和实现乘法运算的方法 | |
CN100557584C (zh) | 用于对网络和存储器进行耦合的存储器控制器和方法 | |
CN111260043B (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
CN1297899C (zh) | 数字图像匹配芯片 | |
CN101267459B (zh) | 采用异步fifo寄存器输出数据的方法及寄存器 | |
CN209765494U (zh) | 一种异步fifo装置 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN111078625B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111078624B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111078623B (zh) | 片上网络处理系统和片上网络数据处理方法 | |
CN111368986B (zh) | 一种神经网络计算装置和方法 | |
CN102238348B (zh) | 一种可变数据个数的fft/ifft处理器的基4模块 | |
CN111368990B (zh) | 一种神经网络计算装置和方法 | |
CN101794276A (zh) | 适用于soc的dct_idct协处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140507 |
|
CF01 | Termination of patent right due to non-payment of annual fee |