当前位置: 首页 > news >正文

纯FPGA实现驱动AD9361配置的思路和实现之一 概述

我们在做ZYNQ系统开发时候做的IP基本都是AXI_LITE_SLAVE,是SLAVE,从设备。就是提供了若干寄存器接口供MASTER进行读写。SLAVE里面的逻辑通过读写动作或者读写的数据进行响应的动作。这种方式的好处是硬件层面可以访问寄存器,软件层面是可以实现用指针访问,实现了硬件和软件的统一。

比如ZEDBOARD+FMCS3的官方DEMO,ADI官方提供了基于这套硬件组合的VIVADO项目以及PS的驱动项目。其中HDL部分对应PL部分实现系带数据的收发,而PS部分运行C语言实现一些计算并通过SPI读写AD9361。这种方式对于具备ZYNQ架构的硬件再合适不过了。但是在很多情况下,我们可能只使用纯的FPGA,还想使用上这套如此完美的架构,那我们就开始琢磨了。

首先我们考虑PS部分运行的那堆C代码,是可移植的,我们可以移植到PC机里面跑,最终那堆C跟AD9361进行控制交互的是SPI口以及AD9361的那几个AXI的IP核。如果有一个AXI MASTER 直接能控制这些SLAVE,并且能被PC控制。简单说就是PC通过某个手段方式控制一个AXI MASTER,就可以实现对ADI官方提供的AXi_9361等核进行配置。我们首先想到了UART。这样就可以做一些基于UART的握手协议,在PC机电脑层面控制一个SLAVE MASTER。这样下来这个UART串口因为速度比较慢会导致配置时间延长很大,但是这不重要了,因为AD9361使用后几乎不再需要很多配置,收发开始之后数据主要还是交由FPGA的逻辑处理,那已经跟UART这个控制接口无关了。

在ZEDBOARD+FMCOMMS3中,AD9361的SPI口是接在PL的引脚上,但是使用PS的SPI核通过EMIO进行引出控制,这就要求我们另外单独提供做一个符合AD9361的SPI时序的AXI_LITE_SLAVE的IP。还好不是接在PS的专用MIO上,否则我们就没有办法使用纯PL实现对AD9361的SPI总线的读写。

上述就是做好的这样一个去掉PS的AD9361配置的设计。我们还可以看到这个MASTER其实可以通过一个INTERCONNECT模块连接控制很多AXI_LITE_SLAVE。

下一篇我们分析和实现这个用串口实现的AXI_MASTER。

相关文章:

  • 代码随想录打卡|Day21(复原ip地址、子集、子集2)
  • Unity游戏开发实战:从PlayerPrefs到JSON,精通游戏存档与加载机制
  • Python 跨平台系统资源监控实践
  • RS232实现主单从多通讯
  • 健身会员管理系统(ssh+jsp+mysql8.x)含运行文档
  • Python实现的智能商品推荐系统分享+核心代码
  • 基于SFC的windows修复程序,修复绝大部分系统损坏
  • 通过Xshell上传文件到Linux
  • OrbisGIS:基于Java开发的开源GIS软件
  • 大型旋转机械声信号分析处理与故障诊断模块SoundAgent
  • 软件架构分层策略对比及Go项目实践
  • 历史文化探险,梧州旅游景点推荐
  • DNS主从同步
  • 【人工智能】控制专业的职业发展方向
  • 指针----------C语言经典题目(2)
  • STM32单片机入门学习——第43节: [12-3] 读写备份寄存器实时时钟
  • 无需训练的具身导航探索!TRAVEL:零样本视觉语言导航中的检索与对齐
  • 山东科技大学人工智能原理考试回忆复习资料
  • python基础知识点(1)
  • 猫咪如厕检测与分类识别系统系列【十二】猫咪进出事件逻辑及日志优化
  • 南部战区海军新闻发言人发表谈话
  • 长三角主流媒体将走进“来电”宜昌,探寻高质量发展密码
  • 语言天才、魔方大师,击败王楚钦前他豪言:我能比中国球员强
  • 观察|智驾监管升级挤掉宣传水分,行业或加速驶入安全快车道
  • 再现逆转!蒯曼击败伊藤美诚晋级澳门世界杯女单决赛
  • 经济日报:从三个变化看外贸破局之道