当前位置: 首页 > 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。

http://www.xdnf.cn/news/35857.html

相关文章:

  • 从数据处理方式,系统可扩展性和处理性能三方面比较管道过滤器风格和仓储风格
  • Python Requests 库:从安装到精通
  • Dijkstra 算法
  • 蓝桥杯练习题2
  • 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
  • 计算机网络八股——HTTP协议与HTTPS协议
  • Python爬虫-爬取猫眼演出数据
  • DataWhale AI春训营 问题汇总
  • 3. 在 2节的基础上 ,实现launch文件简单编写
  • MySql Innodb存储引擎下sql优化
  • 【leetcode刷题日记】lc.322-零钱兑换
  • 自动驾驶---决策规划之导航增强端到端
  • [CPP6] string模拟实现
  • 【Ubuntu】Ubuntu20.04安装搜狗输入法的详细步骤
  • STL之vector基本操作
  • JVM虚拟机--JVM的组成
  • 自动化测试 VS 测试开发
  • xgboost原理及参数分析
  • 2025年Q1数据安全政策、规范、标准以及报告汇总共92份(附下载)
  • 最新得物小程序sign签名加密,请求参数解密,响应数据解密逆向分析
  • Java读取JSON文件并将其中元素转为JSON对象输出
  • C++ 数学算法全解析(二):解方程与三角函数实用指南
  • 【62期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情API接口之沪深A股派现与募资对比数据及接口API说明文档
  • Linux进程控制
  • 点灯大师(第一步)
  • 【RL系列】ReTool: Reinforcement Learning for Strategic Tool Use in LLMs
  • LeetCode --- 154双周赛
  • 在串口通信中使用共享指针(`std::shared_ptr`)
  • 【HDFS入门】HDFS数据冗余与容错机制解析:如何保障大数据高可靠存储?
  • Ubuntu Linux 中文输入法默认使用英文标点