发明名称 一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法
摘要 一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法,它包括时分复用模块、时序控制模块、地址控制模块、双口RAM存储模块、运算系数配置模块、滤波运算模块和解时分复用模块,该滤波器需要使用所在的FPGA内的乘法器的个数E=[[M/2]/D],同时令P=[M/D],Q=[P/2]。本发明有效地避免了读写冲突造成的误操作、容易在FPGA内实现、节省了FPGA内数量很有限的高速硬核乘法器、方便后续滤波运算的实现、在FPGA内实现的数字电路具有很高的时序性能。采用本设计的读写策略方案使滤波方法在FPGA内的实现变得十分容易,数据流都是直接送给下级运算单元,降低了方法实现的复杂度。
申请公布号 CN102412808B 申请公布日期 2015.01.21
申请号 CN201110380551.1 申请日期 2011.11.25
申请人 南京中新赛克科技有限责任公司 发明人 杨进
分类号 H03H17/02(2006.01)I;G06F9/34(2006.01)I 主分类号 H03H17/02(2006.01)I
代理机构 南京天华专利代理有限责任公司 32218 代理人 夏平
主权项 一种基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,基于FPGA的高性能多路FIR数字抽取滤波器,所述的滤波器它包括时分复用模块、时序控制模块、地址控制模块、双口RAM存储模块、运算系数配置模块、滤波运算模块和解时分复用模块,该滤波器的倍抽取为D,具有N个通道、M个滤波系数和L位数据宽度,该滤波器需要使用所在的FPGA内的乘法器的个数E=[[M/2]/D],同时令P = [M/D],Q = [P/2]:时分复用模块TDM:通过N个通道采集N个L位的待滤波数据,将各通道的并行数据输入转化为1个通道的L位串行数据输出,并产生同步信号Sync_in;时序控制模块TIME_CTRL:根据同步信号Sync_in产生其它模块的控制信号和同步后的串行数据; 地址控制模块ADDR_CTRL:根据时序控制模块的控制信号产生双口RAM存储模块的2E个读地址信号、1个写地址信号和1个写使能信号; 双口RAM存储模块DPRAM:用于存储时序控制模块同步后的待滤波数据,将串行数据按照写地址写入以后,再按照读地址读出,转换为符合滤波运算方法结构的串行数据,数据读出后对无效数据进行过滤,再通过2E个L位寄存器输出至滤波运算模块;运算系数配置模块COMP_COEF:用于产生滤波运算的M个相关系数,根据控制信号,配置滤波运算需要的M个系数;滤波运算模块COMP_OPE:通过2E个L位寄存器从双口RAM存储模块中读取2E个L位串行数据,配合运算系数配置模块的M个相关系数完成数据的滤波运算,模块内包括了FPGA内的E个乘法器;解时分复用模块TDDM:完成N个通道滤波输出数据的解复用;其特征是该读写方法包括分配RAM的大小步骤;在双口RAM存储模块中根据写使能信号和写地址信号对待滤波数据进行写数据的步骤,根据读地址信号进行读数据的步骤,数据读出以后对无效数据进行过滤的步骤和在滤波运算模块中进行滤波运算步骤;所述的根据读地址信号进行读数据的步骤包括: 产生[P/2]个读地址的首地址的临时信号:读地址1的首地址的临时信号变化规律:第1个地址赋值为(D‑1)N;之后每隔DN个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+ DN;读地址3的首地址的临时信号变化规律:第1个地址赋值为(M‑1)N;之后每隔DN个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+DN;…读地址P‑1的首地址的临时信号变化规律:第1个地址赋值为[M‑1‑(Q‑2)D]N;之后每隔DN个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+DN;中间省略的信号变化规律依此类推;    产生P个读地址的首地址信号:读地址0的首地址变化规律:第1个地址赋值为(D‑1)N;之后每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+N;读地址1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址1的首地址的临时地址;之后的连续D‑1个地址每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次‑N;读地址2的首地址变化规律:第1个地址赋值为(2D‑1)N;之后每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+N;读地址3的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址3的首地址的临时地址;之后的连续D‑1个地址每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次‑N;…读地址P‑2的首地址变化规律:第1个地址赋值为(QD‑1)N;之后每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次+N;读地址P‑1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址P‑1的首地址的临时地址;之后的连续D‑1个地址每隔N个时钟周期进行1次0~MN‑1的模MN计数,计数值每次‑N;中间省略的信号变化规律依此类推; 产生P个读地址信号:读地址0的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址0的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;读地址1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址1的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;读地址2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址2的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;读地址3的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址3的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;…读地址P‑2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P‑2的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;读地址P‑1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P‑1的首地址,之后的连续N‑1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;中间省略的信号变化规律依此类推; 进行读操作:根据读地址信号从RAM存储单元中相应的位置读出数据,每隔1个时钟周期依次读出1个数据。
地址 210012 江苏省南京市雨花台区紫荆花路68号