基于FPGA的自适应波束形成算法实现
2.2 系统FPGA软件模块设计
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。
根据数字自适应波束形成的原理和数学模型,本文设计的基于FPGA数字波束形成系统结构如图2所示。8路输入信号x(n)经过前端信号处理,A/D转换后,在总控模块的控制下进入输入数据存储模块双口RAM,自适应波束形成的具体实现步骤如下:
第一步:由式(1)得,实际输入的x(n)和调整后的权值w(n)各分量相乘之后累加得到输出y(n);
第二步:由式(2)得,实际输出的y(n)与期望d(n)相减得到调整误差e(n);
第三步:由式(3)得,延时后的调整误差P(n)跟步长的2倍相乘,再和延时的输入x(n-D)相乘得到的积与延时的权值相加,得到新的权值向量。
第四步:新的权值向量再与新的输入向量循环进行第一到第三步实现自适应。
由此,我们可以将系统分为五大模块:主控模块:主要产生时钟信号,给各模块提供时序信号触发各模块的启动和初始化;双口存储模块(包括输入数据存储模块、权值存储模块、误差信号存储模块等):存储各功能模块所需的数据和参数;自适应权值计算模块,误差计算模块:这两个模块可以合在一起,用于系数更新的白适应算法;空间滤波器乘加模块:完成滤波运算,得到输出结果。
2.2.1 控制模块
输入信号和权值是8位的复数数据,通过控制模块选择乘法操作的操作数,两个复数信号相乘的4种组合00,11,01,10可以完成实部和虚部之间4个乘法运算,四种情况控制模块输出的控制信号分别为ST0,ST1,ST2,ST3。
其中,clk_regbt用来控制乘法器完成乘法,counterbt用来控制乘数的位选,clk_reg用来控制运算新数的进入、上次计算的完毕和结果的输出。
评论