利用fpga在环加速通信系统仿真
本例使用fpga -in- loop (FIL)模拟来加速通信系统的一部分。该应用程序使用维特比算法解码经过BPSK调制的卷积编码随机流,通过AWGN信道发送,然后解调。使用逐个样本的方法会比普通的Simulink®模拟有适度的加速,而使用“Process as Frames”选项会进一步加速。金宝app
本例将通信工具箱™与HDL Coder™和HDL Verifier™结合使用,以显示使用fpga在环加速模拟的设计工作流。
要求和前提条件
运行此示例所需的工具:
FPGA设计软件
支持的FPGA开发板之金宝app一。有关支持金宝app的硬件,请参见金宝app支持的FPGA器件用于FPGA校验.
使用以太网连接:主机上安装千兆以太网适配器,千兆以太网交叉电缆
用于连接使用JTAG: USB Blaster I或II电缆和驱动器的英特尔FPGA板。用于Xilinx FPGA板的Digilent®JTAG电缆和驱动器。
使用PCI Express®连接:将FPGA板安装在上位机的PCI Express插槽中。
要求:MATLAB®和FPGA设计软件可以本地安装在您的计算机或网络可访问的设备上。如果使用来自网络的软件,则需要在计算机中安装第二个网络适配器,以便为FPGA开发板提供专用网络。要了解如何安装网络适配器,请参阅计算机的硬件和网络指南。
1.打开并执行Simulink模型金宝app
打开模型。由于要处理的数据量很大,在没有FIL的情况下,模拟大约需要9秒。我们将在以下步骤中使用fpga in- loop来提高模拟速度。
2.生成HDL代码
这一步需要HDL Coder。如果您没有HDL Coder,您可以在当前目录中使用预生成的HDL文件。
如果您打算使用这些复制的文件,请直接执行步骤3。
通过执行以下步骤为Viterbi块子系统生成HDL代码:
一个。右键单击已标记的现有的FIL块viterbi_block1
.单击Delete以删除此代码生成块。
b。在建模选项卡上,单击模型设置.
d。按一下HDL代码生成窗格,并确保hdlcoderviterbi_for_fil / viterbi_block被选中。
e。点击生成.
或者,您可以通过在MATLAB提示符中输入以下命令来生成HDL代码:
makehdl (“hdlcoderviterbi_for_fil / viterbi_block”)
3.设置FPGA设计软件环境
在使用FPGA-in- loop之前,请确保您的系统环境已正确设置以访问FPGA设计软件。您可以使用该函数hdlsetuptoolpath将FPGA设计软件添加到当前MATLAB会话的系统路径。
4.运行fpga -in- loop Wizard
要启动FIL向导,在MATLAB提示符中输入以下命令:
filWizard;
4.1硬件选择
在单板列表中选择单板。单击Next继续。
4.2源文件
一个。的所有先前生成的HDL源文件维特比块
子系统。
b。选择文件viterbi_block.vhd
作为顶层文件。为了查看这些选项,您可能需要将fpga -in- loop Wizard窗口调宽。
c。注意viterbi_block
已为您输入作为默认的顶级模块名。单击Next继续。
4.3 DUT I/O端口
注意,顶级模块的端口已经被正确标识。单击Next继续。
4.4构建选项
一个。选择输出文件夹。
b。单击Build构建FIL块和编程文件。
在构建过程中,会发生以下操作:
一个名为viterbi_block的FIL块将在一个新的模型中生成。
在新模型生成后,FIL Wizard打开一个命令窗口,FPGA设计软件在其中执行合成、映射、位置和路由、时序分析和FPGA编程文件生成。对于这个区块,这些步骤大约需要20分钟。
当FPGA设计软件过程完成时,命令窗口中的一条消息告诉您可以关闭窗口。
5.打开并完成FIL的Simulink模型金宝app
一个。打开hdlcoderviterbi_for_fil.mdl
b。将之前生成的FIL块复制到其中,并将其与viterbi_block并行连接或连接到viterbi_block的位置。注意,原始块的输入在右边。要使FIL块的输入位于右侧,请右键单击该块,然后选择格式> Flip Block.
6.配置FIL块
一个。双击模型中的FIL块以打开块掩码。
b。点击负载.
c。点击好吧关闭块掩码。
7.运行FIL模拟
运行模拟20480秒并观察性能。
FrameSize = 1;抽搐;sim卡(“hdlcoderviterbi_for_fil”);Fs1 = toc
您可以尝试将帧大小设置为更大的数字。对于本例,帧大小设置为1024字节。
FrameSize = 1024;抽搐;sim卡(“hdlcoderviterbi_for_fil”);Fs2 = toc
在我们的测试中,当FrameSize = 1时,模拟时间约为16秒,这与在没有FIL的Simulink中模拟时间大致相同,但当使用Xilinx Spartan-6 SP605板将帧大小增加到1024时,模拟时间减少到约12秒。金宝app这个特殊的电路板和系统提供了大约1.7倍的整体速度,但其他电路板和通信系统可能更快。
Speedup = fs1 / fs2
通过删除Simulink块版本,金宝app只模拟FIL版本,通过在设计的FIL部分添加更多块,并尽可能地删除Simulink作用域和显示,甚至可以实现更大的加速。
这就结束了使用fpga在环加速通信系统仿真的例子。