欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

程序员文章站 2023-10-17 15:36:12
利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式、参数等对来对其算法模块性能进行全面的评估。最重要的是无需重新综合硬件模块。 接着上篇该系列博文,在sysGen中设计模块功能为:根据模式选择输入,来完成乘2或除2两种运算,0乘 ......

  利用zynq验证算法的一大优势在于,可以在上位机发送指令借助cpu的控制能力和c语言易开发特点,实时配置算法模块的工作模式、参数等对来对其算法模块性能进行全面的评估。最重要的是无需重新综合硬件模块。

  接着上篇该系列博文,在sysgen中设计模块功能为:根据模式选择输入,来完成乘2或除2两种运算,0乘1除。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  测试激励选用from workspace模块,从matlab工作空间导入数据。利用maltab脚本可以非常容易地生成任意数据集,极大体现了sysgen开发的优势。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  设计完成调用xilinx waveform viewer,两种运算行为仿真波形如下:

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  功能验证无误,关键的一点是让mode端口以axi总线形式传递数据。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  现在将sysgen算法子系统生成ip核,并导出到ip integrator中作为cpu外设。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  可以看到multi_div_constant模块多出一个multi_div_constant_s_axi总线接口集。这里本人有个疑问:为什么sysgen中选择mode接口服从axi-lite总线形式,而生成的接口却为axi-full形式?虽然不影响使用,也希望有看到的朋友帮忙解答这个疑惑。

  硬件系统设计完毕,导出硬件启动sdk。当新建工程后,能看到axi总线驱动自动添加进来了。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  multi_div_constant_hw.h内部为axi-lite总线寄存器地址,multi_div_constant.c内是驱动函数的具体实现。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  c代码对算法模块进行板级验证:

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

   启动debug,点击运行查看软件运行结果和axi-stream总线时序波形。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  sdk中串口打印结果及memory窗口查看ddr接收缓存绝对地址。

利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统

  正确启动了两次dma环回传输,第一次算法模块工作在乘2模式,第二次则除2.c代码中测试返回数据与生成测试数据关系无误,ddr绝对地址数据也别正确更新。