0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不用处理器就可以控制FPGA总线的方法你知道吗?

GReq_mcu168 来源:未知 作者:胡薇 2018-05-02 17:38 次阅读

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

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

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

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

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显示了演示装置。

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

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

图4:FPGA系统框图。

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

图5:Qsys GUI。

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

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

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

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

图6:Python Avalon总线例子。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18039

    浏览量

    221549
  • FPGA
    +关注

    关注

    1593

    文章

    21211

    浏览量

    592195

原文标题:不用处理器控制FPGA总线的方法

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADXL362加速度计的SPI接口可以不用处理器将其转换为CAN信号发出吗?

    您好,我想问一下ADXL362加速度计的SPI接口可以不用处理器将其转换为CAN信号发出吗? 比如用集成的模块将SPI接口输出信号转换为CAN信号,还是必须用开发板中间做一个收发转接才可以。 期待您的回复,谢谢!
    发表于 12-27 07:37

    调节多核处理器硬件适应软件设计方法

    。  假设要用6个处理器构成一个两级流水线。那么现在就需要计算出每一级所需的处理器的数量;先通过分析来确定每个划分的周期数,如后再用它去除以周期预算,
    发表于 09-25 17:17

    数字处理器使用步骤

    ,如果有不是0的,先把它们都调到0位置上,这个电平控制一般在GAIN功能里,DBX的处理器电平是在分频里面的,用G表示。5、现在就可以接通信号让系统先发出声音了,然后用极性相位仪检查
    发表于 01-07 10:24

    【每日一贴日志】亲爱的,知道吗

    不用为家务而烦恼。亲爱的,知道吗?如果是两个人的生活,我能不做家务吗?亲爱的,也许会说,愿意。可是
    发表于 09-29 15:18

    FPGA干货分享六】基于FPGA处理器的算法加速的实现

    PowerPC)。大量的逻辑单元使可以实现数据处理单元,这些单元与处理器系统一起工作,由处理器对其进行
    发表于 02-02 14:18

    教你如何灵活使用飞思卡尔i.MX应用处理器的GPIO

    (open-drain)开漏(OD)是针对场效应管而言的,类似于三极管的集电极开路(OC)。I2C总线就是OD门电路的典型应用。飞思卡尔i.MX应用处理器的大部分GPIO都支持开漏模式,这使得设计上可以
    发表于 03-06 11:05

    用处理器,未来电机驱动的主流

    需要设计者对于旋转电机本体和控制算法都有非常深刻的理解,并且常常被大量的外围电路如霍尔整形电路、电源系统、无传感方式比较网络等所困扰,而基于专用处理器的电机驱动方案可以完美的解决这些
    发表于 12-31 17:57

    采用专用处理器实现电机驱动方案

    比较网络等所困扰,而基于专用处理器的电机驱动方案可以完美的解决这些问题,首先在硬件上,处理器本身就考虑到了大量电机驱动本身的实际问题,在集成控制MCU内核以及一些外设的同时,将一些必不
    发表于 07-26 08:05

    如何正确使用处理器参数?

    使用处理器参数。前一步是“目标64”,我认为选择了正确的处理器。我已经尝试在多台计算机上执行此操作,并且我已经尝试了ISE 14.1,14.2和14.3,每个都有各自的u-boot文件。他们都没有工作
    发表于 09-03 09:08

    什么是总线处理器

    第一章复习要点①微处理器 p12②微型计算机p13③总线处理器:一般也称中央处理器(CPU),是本身具有运算能力和控制功能,是微型计算机的
    发表于 07-22 06:48

    DSP处理器与通用处理器的比较

    DSP处理器与通用处理器的比较1 对密集的乘法运算的支持GPP不是设计来做密集乘法任务的,即使是一些现代的GPP,也要求多个指令周期来做一次乘法。而DSP处理器使用专门的硬件来实现单周期乘法。DSP
    发表于 09-03 08:12

    6 LX9 FPGA就可以实现开源的“J Core”处理器

    “J Core”。 我们可以非常容易的在FPGA上实现一个“J Core”的实例,这使得FPGA就像一个J2处理器,并且兼容
    发表于 02-08 14:14 385次阅读

    基于FPGA和多DSP的多总线并行处理器设计

    基于FPGA和多DSP的多总线并行处理器设计
    发表于 10-19 13:40 4次下载
    基于<b class='flag-5'>FPGA</b>和多DSP的多<b class='flag-5'>总线</b>并行<b class='flag-5'>处理器</b>设计

    不使用处理器控制FPGA总线

    许多 FPGA 设计使用嵌入式处理器进行控制。一个典型的解决方案涉及使用 Nios 等软处理器,尽管带有内置硬处理器
    的头像 发表于 04-08 11:08 725次阅读

    了解这些就可以搞懂 IGBT

    了解这些就可以搞懂 IGBT
    的头像 发表于 11-24 15:47 325次阅读
    了解这些<b class='flag-5'>就可以</b>搞懂 IGBT