广告

不用处理器控制FPGA总线的方法

2016-07-28 Noe Quintero 阅读:
许多FPGA设计使用嵌入式处理器实现控制。本设计实例使用Altera的SPI Slave to Avalon MM桥实现了一种挂接到Avalon总线的简单方法。

许多FPGA设计使用嵌入式处理器实现控制。典型的解决方案是使用Nios这样的软处理器,虽然内置硬处理器的FPGASoC也变得很流行了。图1显示的是一个典型的Altera FPGA系统,其中包含了处理器和通过Altera的Avalon内存映射(MM)总线连接的各种外设。这些处理器极大地简化了终端应用,但要求很强的编程背景和复杂的工具链知识。这将妨碍调试,特别是当硬件工程师不想求助软件工程师,只需要一种简单的方式读写外设时。HmLednc

20160726A01HmLednc

图1:使用Avalon内存映射总线连接的典型Altera FPGA系统。

HmLednc

本设计实例使用Altera的SPI Slave to Avalon MM桥实现了一种挂接到Avalon总线的简单方法。这种技术有两个优势:它不会影响原始系统设计,桥可以与嵌入式处理器共存。对于图1所示的系统来说,这种SPI桥允许工程师直接控制LTC6948小数分频锁相环的频率、设置LTC1668数模转换器的电压、读取LTC2498模数转换器的电压或读取LTC2983的温度,就像处理器那样。HmLednc

20160726A02HmLednc

20160726A03HmLednc

图2:高亮部分+例子代码+反向工程=Python脚本。

HmLednc

Altera为SPI-Avalon MM桥提供了参考设计。遗憾的是,相关文档非常少,并且将Nios处理器用作SPI主器件。这其实有违使用SPI桥的初衷,因为Nios可以直接连接Avalon MM总线。实用性的SPI主器件是凌力尔特公司的Linduino微控制器,它是Arduino处理器的的克隆版本,不过增加了连接LT演示板的接口等额外功能。其中一个额外功能是电平转换SPI端口。当连接电压低至1.2V的FPGA I/O组时这个电平转换功能特别有用。Linduino固件可以用来接受来自虚拟COM端口的命令,并将命令翻译成SPI处理内容。
在对Altera设计例子进行反向工程后(图2)就能得到一个Python库,接着创建SPI桥可以接受的数据包。这些数据包随后被翻译成Linduino命令。Python脚本随后允许硬件工程师完全控制整个项目,无需重新开发接口协议。LinearLabToolsPhython文件夹中提供了帮助LTC1668数模转换器控制数字图案发生器频率的Python脚本例子。图3显示了演示装置。HmLednc

20160726A04HmLednc

图3:插入FPGA电路板(左)的DC2459数模转换器演示板(右)。

HmLednc

图4显示了系统框图。注意,数字控制振荡器(NCO)可以由移位寄存器或PIO内核进行控制。移位寄存器用于调试,因为它可以直接控制NCO。将GPIO线置高将激活SPI-Avalon桥,进而控制Avalon总线上的32位PIO端口。PIO输出随即用于控制NCO频率。HmLednc

20160726A05HmLednc

图4:FPGA系统框图。

HmLednc

借助基本的一些系统操作,可以将额外的外设内核连接到总线上。为了帮助系统设计,Altera提供了一款名为Qsys的工具,它提供了连接各个IP的图形用户界面(GUI)。Qsys可以将GUI设计的系统(图5)翻译为HDL。外设地址是完全可配置的。在这个案例中,PIO被设为基地址0x0。HmLednc

20160726A06

图5:Qsys GUI。

HmLednc

当设计在FPGA中实现后,LinearLabTools中提供的Python库包含的两个函数就能连接到设计:HmLednc

transaction_write(dc2026, base, write_size, data)
transaction_read(dc2026, base, read_size)HmLednc

这些函数的第一个参数是Linduino的串口实例。第二个参数是Avalon总线上的外设地址。这两个函数分别用于接收和返回字节列表。当读写IP时这两个函数具有一定的灵活性。为了设置给定例子的NCO,只需要transaction_write一个函数。公式1用于确定调节字。HmLednc

20160726A07HmLednc

要将NCO设为1kHz并具有50MSPS采样率,调节字的值需要设为85899或0x00014F8B,并按4个字节一起传送。这样,将数模转换器设为1kHz的Python代码是:
transaction_write(linduino_serial_instance, 0, 0, [0x0, 0x01, 0x4F, 0x8B])HmLednc

20160726A08HmLednc

20160726A09HmLednc

图6:Python Avalon总线例子。

HmLednc

图6中的Python脚本描述了用于配置NCO的简单文本接口。值得一提的是:SPI桥使用SPI模式3。这是通过不断的试错,并通过分析Altera例子中的Nios处理器的SPI接口验证后才确定的模式。
本设计实例提供了一种无需使用嵌入式处理器就能控制系统的方法,它能帮助硬件工程师在不打扰软件工程师的情况下搞定一个项目,并且对硬件设计的影响最小。HmLednc

20160630000123HmLednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
您可能感兴趣的文章
  • Matter智能家居应用上路 无线连接是智能家居应用和Matter规范的核心。为了符合Matter标准,业界芯片供货商正通过集成802.15.4或扩展其无线产品组合,以单芯片支持多种无线协议的实力推动智能家居应用的Matter转型…
  • 发掘科技:V2X场景中的两轮车方案 日前,在AspenCore举办的“2022国际AIoT生态发展大会”的“智慧两轮车分论坛”上,发掘科技战略发展总监屈博发表了“V2X场景中的两轮车方案”主题演讲。
  • 撬开Google Wifi路由器,一窥内部设计 最近,Google悄然发布了一款价格较低的第三代设计,其中唯一值得注意的改进(至少在外观上)是将基于USB-C连接器的电源转变为基于桶形连接器的电源。在我的三件套翻新机中,有两件是第二代AC-1304型号,但第三件是第一代 NLS-1304-25,这也正是此次要拆解分析的对象。
  • 四个问题帮你确定是否需要采用有源电缆(AEC)解决方案 围绕信道长度、损耗预算和功耗最小化手段等重要问题,每个企业给出的答案都不一样。有如此多的因素推动着最终布线决策,因此在研究你的数据中心选择时,究竟需要了解些什么?
  • 2022年面向物联网的热门无线网络——第二部分:非蜂窝方 虽然蜂窝技术(主要是4G和5G)可以满足大多数无线应用的连接需求,但考虑到成本、可用性、隐私和功耗等因素,许多组织都在寻找其他可能性。
  • 2022年面向物联网的热门无线网络——第一部分 如今,对于大多数需要低功耗以及蜂窝网络的安全性和可用性的大规模物联网应用来说,NB-IoT和LTE-M是首选的解决方案。虽然两者都支持数千个连接的大规模物联网部署,但它们也存在一些差异…
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告
    向右滑动:上一篇 向左滑动:下一篇 我知道了