原创 三种信号处理器的CPLD设计

2006-10-25 00:01 3238 5 6 分类: 处理器与DSP

  自从跨入九十年代以来,可编程逻辑器件CPLD/FPGA得到了飞速发展,向高集成度、
高速度和低价位方向不断迈进,其应用领域不断扩大,在信号处理领域的应用也活跃起来
,这主要是由于CPLD/FPGA以下技术的不断发展:
?             讨论区 [EEdepartment
  (1)集成度越来越高,如Altera公司的10K系列已在25万门以上,具有1万个以上寄存
器,40Kbit嵌入式存储器,使得集成复杂信号处理算法成为可能。Raphael系列已到100万
门以上,集中了FLEX10K、FLEX6000、MAX7000的所有优点,可进行系统单片设计。
  (2)在系统编程(ISP)/在线路重配置(ICR)技术,使得CPLD/FPGA具有开发周期短,设
计方案变更容易,无风险投资等优点。
  (3)嵌入式存储器技术,在CPLD/FPGA内部嵌入一定数量的存储器,存储器类型有双口
SRAM、ROM、FIFO,可用于存储信号处理的系数、中间结果等。
  (4)时钟锁定和倍频技术,Altera的10K系列采用了时钟锁定和倍频技术,解决了时钟
脉冲延迟和偏斜问题,并使PLD内部时钟更高。单个16bit乘法器速度可达100MHz以上,这
正是大带宽高速实时信号处理的需要。
  (5)电子设计自动化EDA工具。EDA工具使得用户对设计的输入、综合、仿真非常方便
。Altera的Max+Plus II给用户提供丰富的宏库和LPM(参数模块库Library of Parameter
ized
Modules)。EDA环境正在由Unix系统主导型向Unix/Windows共存开发环境转换,使得EDA的
使用更为广泛和方便。
  由于CPLD/FPGA以上的诸多优点,CPLD/FPGA应用逐渐扩大,渗透到ASIC市场,性能价
格比优于低档ASIC。目前ACTEL公司开发了一种新可编程器件——系统可编程门阵列(SPG
A,System Programmable Gate
Array),它是将现场可编程门阵列与专用集成电路结合在同一个芯片中而得到的一类新型
的专用集成电路。显然SPGA具有CPLD和ASIC的双重优点。CPLD/FPGA与ASIC相比具有开发
周期短、灵活、无风险、开发成本低等优点;与DSP芯片相比具有处理速度高等优点。例
如某信号处理需10次乘法
如某信号处理需10次乘法A以下技术的不断发展:版              讨论区 [EEdepartment
累加运算,若采用30MHz工作频率的DSP来完成,其实际执行数据的速度将降低到3MHz(不
考虑DSP的并行处理),但是采用并行/流水控制的CPLD/FPGA则可以用30MHz的时钟频率串
、并行重叠执行10次操作,即保持30MHz数据速度。可见,CPLD/FPGA比DSP有更高的处理
速度。利用CPLD/FPGA在系
统编程及高速度的特点,可把CPLD/FPGA作为DSP的协同处理器来应用,实现虚拟计算机。
本文把Altera的FLEX系列应用于雷达的几种经典信号处理中,完成了有限冲激响应FIR滤
波、求模运算、恒虚警检测等处理。

1 参数化的FIR滤波模块设计
  参数化的FIR滤波模块设计采用了自顶而下的层次设计的思想,其结构框图如图1。在
本设计中,x[n]的线宽和FIR的阶数实现了参数化。在调用该模块时,数据的宽度和FI
R的阶数在参数文件中输入。xin[n]是数据的移位输入端,xout[n]是数据的移位输出
端,可以作为下一级FIR
的输入,实现FIR的级联。此FIR的实现用了六个模块(如图2所示)。






  FIR模块包含SHIFT和MUL-ADD两个模块:其中SHIFT完成数据的延迟存储,MUL-ADD完
成数据的累加求和的操作。MUL-ADD由M-ROM,EXPAND和ADD三个模块组成:M-ROM模块中放

置FIR的参数,EXPAND模块完成符号数的扩展,ADD模块完成移位相加的操作。在此设计中
要着重说明的就是乘法
的实现。完成乘法的方法隙啵缌礁鍪陌次灰莆幌嗉樱饣岬贾滤俾实慕档秃妥?源的浪费。FIR的系数相对数据来说是预先给定的,所以可以采用查表的方法来实现。现
举例说明:设FIR阶数为4,数据的位宽是4,系数为C1、C2、C3、C4。我们可以用矩阵的
形式来表示数据各位和系
数的相乘,如式1所示。
    
表2 FIR仿真结果

阶数 4 8阶(两个4阶级联成) 12(三个4阶级联成)
位宽 8 16 8 16 8 16
所用器件 EPF8636 EPF81500 EPF81188 EPF10K40 EPF10K30 EPF10K70
所用单元数
(LC) 458 1156 913 2220 1399 3338
最高工作频率
(MHz) 5.21 2.93 5.21 2.67 5.08 2.41

  式中Dij是第i个数据的第j位的值,它们为0或1(i="1",2…4,j="0",1…3),Yj是滤波结
果的部分和,即各数据第j位与系数相乘加的和。对应部分和我们可以列出如表1所示的真
值表(先考虑数据的最低位即D10、D20、D30、D40的情况,高位同理)。
表1 部分和真值表
表1 部分和真值表 操作。MUL-ADD由M-ROM,EXPAND和ADD三个模块组成:M-ROM模块中放t

D10 D20 D30 D40 Y0
0 0 0 0 0
1 0 0 0 C1
0 1 0 0 C2
1 1 0 0 C1+C2
0 0 1 0 C3
1 0 1 0 C3+C1
0 1 1 0 C3+C2
1 1 1 0 C3+C2+C1
0 0 0 1 C4
1 0 0 1 C4+C1
0 1 0 1 C4+C2
1 1 0 1 C4+C1+C2
0 0 1 1 C4+C3
1 0 1 1 C4+C3+C1
0 1 1 1 C4+C3+C2
1 1 1 1 C4+C3+C2+C1

  表中的系数是以补码的格式存放的,并且都按符号数作了扩展。从这张表中我们可以
看出,若把系数根据所给定的阶数生成如表右侧的排列并将其放于一ROM中,以各数据的
相同位的值组成的地址去ROM中取数,取出的结果即为部分和Y0~Y3。由于输入的数据有
t
正有负,所以我们在对部
分和进行相加之前要对取出的系数按以下方法进行处理:首先按部分和相加所能达到位数
对取出的系数做符号扩展,并且对各数据的最高位组成的地址取出的系数和(如Y3)先求补
再扩展。将处理后的Y0、Y1、Y2、Y3相加所得结果即为数据和系数相乘的结果。用这种方
法可以获得较高的速率
,较少的硬件资源。要实现高阶的FIR滤波器即可以用输入参数的方法实现,也可以用级
联的方法实现。级联对,xout[n]作为下一级数据的输入,将各级的输出Y[n]先扩展
再相加则实现了高阶FIR。表2是仿真的结果(Max+Plus II 7.1,器件速度级-4)。
表2 FIR仿真结果

阶数 4 8阶(两个4阶级联成) 12(三个4阶级联成)
位宽 8 16 8 16 8 16
所用器件 EPF8636 EPF81500 EPF81188 EPF10K40 EPF10K30 EPF10K70
所用单元数
(LC) 458 1156 913 2220 1399 3338
最高工作频率(MHz) 5.21 2.93 5.21 2.67 5.08 2.41

2 求模运算实现
  求一个复数A+Bj的模一般都采用线性逼近的方法进行近似运算。一种方法如下:设T
L="MAX"{A,B},TS="MIN"{A,B},则A,B的模近似为MAX{(TL+1/8×TS),(27/32×TL+9/
16×TS)}。根据此式求A,B的近似模值流程框图如图3所示。

相同位的值组成的地址去ROM中取数,取出的结果即为部趾蚘0~Y3。由于输入的数据有舤



  根据框图可以看出,用CPLD实现求模运算的关键在于分数乘法,分数乘法可以通过分
解成移位(错位)和加法来实现,即将27/32分解为1/32+1/16+1/4+1/2,9/16分解为1/16+
1/2,采用组合逻辑直接错位相加。框图中TL="TA"+TB/8可以用如下语句实现:
  TL[16..0]=(B“0”,TA[15..0])+(B“0”,
TB[15..3]);框图中TS="TA"*27/32+TB*9/16实现语句如下:
TS[20..0]=(B“000000”,TA[15..1])+(B“00000”,TA[15..3])
  +(B“000”,TA[15..0],B“00”)+(B“00”,TA[15..0],B“0000”)
  +(B“00000”,TB[15..0])+(B“0”,TB[15..0],B“0000”);
  为了防止溢出,TL,TS均向前扩展一位。为了减少误差,TS向后扩展4位。在输出时
,若TL〉TS则RES[15..0]=TL[16..1],若TL〈TS则RES[15..0]=TS[20..5]。用这
种方法求模误差〈1.9%。软件仿真结果:采用FLEX8452,字宽为16bit时,求模运算占用
资源260个LC,速度为10M
Hz。
3 参数化恒虚警判决逻辑电路设计
   恒虚警处理的一种方法是自适应门限处理,其实现方法较多,此设计中采用的是单
元平均选大恒虚警(GO-CFAR),其实现框图如图4所示。



相同位的值组成的地址去ROM中取数,取出的结果即为部分和Y0~Y3。由于输入的数据有舤

  根据输入数据的个数和数据有效信号把整个处理过程分为五个状态,在处理过程中用
两个计数器COUNT1[]、COUNT2[]和数据有效信号DE来表示状态及转换,COUNT1[]用
来记录数据有效信号DE为有效高后时钟的个数(即移入的数据个数),COUNT2[]用来记录
数据有效信号DE为无效
低后时钟的个数。当DE为低且COUNT1[]为0时状态为S1,当DE为高且COUNT1[]小于N+
1时状态为S2,S1、S2这两个状态CFAR不进行处理,当DE为高且COUNT1[]大于N+1小于2
N+3时状态为S3,在此状态取前N个单元的数据的平均值乘以T与Y单元的数据作比较。当D
E为高且COUNT1[]大于2N
+3时状态为S4,在此状态取前N个单元的数据的平均值和后N个单元的数据的平均值中的大
值乘以T与Y单元的数据作比较。当DE为低且COUNT2[]小于N时为状态S5,在此状态取后
N个单元数据的平均值乘以T与Y单元的数据作比较。当DE为低且COUNT2[]大于N时状态转
回至S1。这五个状态之
间的转换如图5所示。



  在实现中,同样采用自顶而下的层次设计的思想,其乘法的实现采用了和FIR中相似
的方法,唯一的区别是由于参加相乘的数是正数,所以少了符号扩展这一环节。其具体模
块组成如图6所示。
  PACFAR模块由CFAR和VECMUL两个模块组成:CFAR模块完成前N个单元数据的平均值和
后N个单元数据的平均值的选大处理:VECMUL模块完成平均值与T的相乘运算,并用乘积和

Y单元作比较以判断目标的有无,它又分为CF-ROM和CFAR-ADD两个模块:CF-ROM中存放T,
CFAR-ADD完成数的累加
求和。表3是软件仿真的结果。
表3 恒虚警处理模块仿真结果

位宽 8 16
所用器件 EPF8636 EPF81188
所用单元数(LC) 487 989
最高工作频率(MHZ) 10 7.14

  本文采用单片CPLD完成了以往需要电路板才能完成的FIR滤波、求模、恒虚警检测信
号处理功能。设计的CPLD已在某雷达信号处理机中应用,应用结果表明:应用CPLD简化了
系统结构,减少了处理机体积,提高了系统可靠性。
作者单位:北京理工大学电子工程系(100081)
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户992653 2006-12-28 18:12

长知识了.....

顶啊~!~

相关推荐阅读
我要评论
1
5
关闭 站长推荐上一条 /3 下一条