在FPGA 平台上实现实时波束形成器 - Xilinx
在FPGA 平台上实现实时波束形成器 - Xilinx
在FPGA 平台上实现实时波束形成器 - Xilinx
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
技 术 长 廊<br />
共享存储器库模块和相关的应用程<br />
序员界面根据 MATLAB(或 C)中的<br />
名称/空间引用将 FPGA 和 PC 主机之<br />
间的数据传输转换成简单的赋值语句。<br />
例如,新的权重矢量 w(驻留在 MAT-<br />
LAB 工作区中)随新的波束形成器系数<br />
(FPGAWeights) 而更新,其计算通过<br />
FPGA QRD 过程利用简单的赋值语句<br />
w = FPGAWeights 完成。 (FPGAWeights<br />
是在 System Generator 对 QRD 引擎的<br />
描述中赋给一个共享缓冲器的名字。)<br />
这种由 System Generator 框架管<br />
理的主处理器/FPGA 交互作用使异构<br />
应用的开发变得直接、迅速、较少出错,<br />
并使 FPGA 加速引擎(正如此设计中<br />
的 QRD 模块)能在不同的硬件平台间<br />
轻松地实现端 口 连 接,而不必修改<br />
FPGA 源代码(System Generator<br />
模块本身)。<br />
这种接口抽 象 层 支持主应用和<br />
System Generator 资源模块之间的事<br />
务,也支持主应用和 FPGA 平台上运行<br />
的最终设计之间的事务。后一因素对系<br />
统软件和硬件 (FPGA) 维数的验证过程<br />
贡献甚巨,因为这两个组件都可以利用<br />
共享存储器的抽象层实现快速上线。<br />
System<br />
Generator<br />
design flow<br />
insulates<br />
the host<br />
program from<br />
the details of the<br />
FPGA platform<br />
Input<br />
Memory<br />
Buffer<br />
“foo”<br />
FPGA<br />
结论<br />
Matlab or C Application<br />
Matlab or C API<br />
Processing<br />
Kernel<br />
Shared<br />
Memory<br />
Object<br />
在本文中,我们描述了灵活的 QRD<br />
处理器在 FPGA 上的应用,从而实现了<br />
运行时对输入矩阵维数的定义。该设计<br />
采用了基于 CORDIC 的处理(阵列边<br />
界单元)和基于 MAC(阵列内部单 元)<br />
的算法之间的混合体,可与 FPGA(如<br />
<strong>Xilinx</strong> Virtex-4 系列)的计算资源良好<br />
匹配。<br />
所有的边界单元和内部单元处理都<br />
被设置在一个边界单元功能模块和内部<br />
单元功能模块上;然而,值得一提的是,<br />
如果目标应用的处理量要求极高的性能<br />
时,FPGA 平台丰富的资源能支持全并<br />
行紧缩阵列的实现。<br />
System Generator 编程环境使<br />
异构系统(处理器和 FPGA)的快速开<br />
发成为可能,同时使编程人员避免了与<br />
硬件/软件的分配有关的复杂而容易出错<br />
的编程过程。<br />
本文由以下 各方协作完成:<strong>Xilinx</strong><br />
高级系统技术小组 (ASTG)、<strong>Xilinx</strong> DSP 部门<br />
的研发小组、以及我们的合作伙伴 Signum<br />
Concepts 和圣地亚哥州立大学。<br />
Output<br />
Memory<br />
Buffer<br />
“bar”<br />
API is autogenerated<br />
by<br />
System<br />
Generator<br />
图 5 - 通过 System Generator<br />
共享存储器库元件实现的硬件/软件抽象。主应用利用简单的名称/空间引用实现了和 FPGA<br />
存储元件之间的事务(此处所引用的是名称为“foo”和“bar”的存储器)<br />
赛灵思中国通讯 25 期