记述Xilinx,V9.0 Ifft Core,C模型仿真平台搭建之旅
近期由于项目开发的需要,对于K7160t的Ifft Core做算法仿真,验证链路处理的正确性.很长时间没有做过FPGA项目的算法仿真了,所以也把困难想得多了一些,想从模型的搭建上入手,把算法先验证正确.可没有想到这个搭建的过程还真不容易.
1. EDA工具是Vivado 2017.4, 新建一个工程,然后选择器件为 xc7k160tfbg676-2,然后再打开 IP-catalog,选择了 FFT Core 进行例化,然后找到了生成的CModel(这个直接在工程目录下找,很不好找,要在 IDE-IP Source-C Simulation, 查看仿真模型包所在的目录.)。
2. 选择生成的 C Model, 有 xfft_v9_0_bitacc_cmodel_lin64.zip 和 xfft_v9_0_bitacc_cmodel_nt64.zip,因为在 Windows 上做事, 所以就选择 xfft_v9_0_bitacc_cmodel_nt64.zip 解压打开.打开后文件清单如下
gmp.h
libgmp.dll libgmp.lib
libIp_xfft_v9_0_bitacc_cmodel.dll libIp_xfft_v9_0_bitacc_cmodel.lib
make_xfft_v9_0_mex.m run_bitacc_cmodel.c
run_xfft_v9_0_mex.m xfft_v9_0_bitacc_cmodel.h
xfft_v9_0_bitacc_mex.cpp
3. 文件中有 mex 文件,明显是可以在 matlab 上进行模型的仿真运行了,由于当前项目要用一些新的工具组件,所以就用了 MatLab 2020(结果没想到,走了很多弯路),
4. 在 matlab 的命令窗口中,执行 make_xfft_v9_0_mex.m ,马上报错,显示没有 mexw64 文件, 找了资料大致看了一下,才知道,这个是要编译的.要装 C/C++ 编译器, 于是上 Matlab 的网页上看了兼容的 MinGW64 编译器,然后开始了漫长的下载,结果 download 不下来.
5. 通过万能的度娘, 终于找到了一个 MATLAB Support for MinGW-w64 CC++ Compiler.rar, 打开压缩包后,又看见一个压缩包 和 一个 mingw.mlpkginstall 文件, 不知道何为. 然后想通过 MatLab 附加功能管理 安装 MinGW-w64 编译器, 各种尝试都宣告失败.
6. 然后还是通过万能的度娘,终于找到了tdm64-gcc-9.2.0.exe, 按照网上先行者们的建议, 直接 C:/TDM-GCC-64 路径进行编译器安装, 然后,在系统信息中,添加 环境变量 MW_MINGW64_LOC=c:/TDM-GCC-64,
7. 在 matlab 的命令窗口中,执行 mex -setup , 终于看到编译器安装成功(虽然显示编译器不是兼容版本, 不管它,只要能编译就先往下进行)
8. 后面发现,其实在 windows 上还是选 VS2017 之类的编译器吧, 这样少折腾很多时间.
9. 在 matlab 的命令窗口中,执行 make_xfft_v9_0_mex.m ,显示成功, 执行 run_xfft_v9_0_mex.m, 显示 demo 例程执行成功,数据比对正确. 好难啊, 走了这么多弯路.
10. 宜将余勇追穷寇, 那继续把 VC 调用 matlab 库的仿真平台也搭建了吧, 没想到,这里又是一连串的坑
11. 在VS2017中新建工程, 然后把 matlab/extern/include matlab/extern/lib/win64/microsoft 导入目录都添加进工程, 然后开始编译, 死活报 mxGetPi 找不到, 上网搜,发现是 matlab 的 C库变化了, 想改写代码适应新的库, 尝试了一天后主动放弃了.
12. 做事情还是慢慢来吧, 重新安装了一个 matlab 2017, 再重新建工程,重新添加 matlab/extern/include matlab/extern/lib/win64/microsoft, 添加动态链接库, 执行编译, 啊!终于编译通过了.
13. 在VS2017 中开始执行 F5, 马上显示,找不到 dll, 网上搜了一下, 都说添加 /matlab/2017a/bin/win64 路径在 环境变量里就行了, 我加了, 结果一样报找不到. 如果手动拷 dll , 差不多是要把 /matlab/2017a/bin/win64 下的 dll 全部拷贝完了. 难道就这样了?
14. 在当前登陆的用户 Adminstrator 用户的环境变量中,再次添加 /matlab/2017a/bin/win64 ,再执行. 啊! 通过! 世界终于清静了.