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

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

3天内不再提示

基于Fpga的Pmod与Arduino接口映射

电子工程师 来源:网络整理 作者:佚名 2018-06-05 16:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引言

多年以来,一直存在标准泛滥的现象,而我们电子业尤其严重。您是否曾经想过,为什么我们对有些奇怪的数字或测量计的东西建立标准?关于航天飞机的固体燃料火箭推进器的直径是否真的源自于马屁股的宽度的讨论非常激烈。2相当的稀奇和有趣。但是,接受事实会更有成效:总是会有很多标准,我们必须找到使其很好配合的途径。工程师和制造商均涉及到一个共同领域,其中标准的不兼容特别麻烦:原型平台。幸运的是,有些方法可以缓解这些不兼容性。下文中我们将进一步分析讨论。

开发板扩展标准

多年来,元件制造商一直提供开发系统,帮助其客户采用其元件设计应用。对于可编程器件,例如FPGA微控制器,始终存在与其它元件的接口,以便能够与硬件同步或者早于硬件进行软件开发。随着时间推移,涌现出了关于这些“扩展接口”的非常松散的伪标准,其中有些标准的一致性相对较好。Xilinx等FPGA厂商推动这些标准,例如FMC,使客户尽可能简单地迁移到最新平台。Xilinx也采用第三方标准,例如Digilent制定的Pmod标准,用于该接口的外围设备选择较广。微控制器制造商的标准化略慢,许多采用自身的专用接口。然而,制造商动向和Arduino平台普及等市场力量正驱使其也向伪标准靠拢。

Pmod非常适合FPGA

Pmod接口是将外设与FPGA开发板进行组合和匹配的很好方式,可利用方便、可手工焊接的连接器连接八个引脚以及电源和地。FPGA的灵活性允许将其八个信号引脚用于几乎所有功能。尽管这提高了其对于FPGA的实用性,但也造成该接口难以配合那些外设功能分配给特定引脚的微控制器。为解决这一问题,Digilent定义了多种不同的Pmod引脚排列类型,不同的功能分配给特定的引脚(图1)。

基于Fpga的Pmod与Arduino接口映射


图1. Pmod引脚排列类型将不同的功能分配给特定引脚。

类型定义使得微控制器板较容易使用Pmod接口标准,但仍然存在挑战。利用许多微控制器有限的引脚复用能力,难以实现真正的通用接口,已被废弃的Type 3 UART接口就是很好的例子。然而,即使存在局限性,对于原型或教育目的,Pmod接口是一种非常有用的扩展端口

Arduino伪标准

Arduino伪标准是一个完全不同的老顽固,是出于各种原因为不同群体开发的不同平台。最初的Arduino开发板仅提供简单微控制器引脚,然后增加足够的支持器件,从而使编程变得简单,并且爱好者仍然可承受。由于其简单性,原始引脚排列按照微控制器的性能定义。

随着平台发展到支持功能更多的处理器,该伪标准逐渐碎片化,具有各种引脚复用组合,可以说是例外多于规则。有些问题,例如支持不同的I/O电压以及I2C信号的不一致性,在第3版的UNO板中得到了解决。然而,在将扩展板与Arduino开发板(或任何Arduino衍生产品)配对使用时,必须仔细检查兼容性。并且可供选择的Arduino衍生产品很多(图2),即使仅限于Arduino网站提供的官方开发板,引脚兼容性也并不简单。但是,一般而言,每个具有特殊功能的Arduino引脚也可用作通用I/O (即GPIO)。

基于Fpga的Pmod与Arduino接口映射


图2 .Arduino开发板配置为多种衍生产品,以支持不同的设计和应用。

与Pmod接口中一个引脚可用作多种特殊功能不同,大多数Arduino引脚通常执行单一的特殊功能。从根源上讲,Arduino伪规范比Pmod接口更适合于微控制器。所以,这就是Arduino规格的微控制器板比Pmod连接器的微控制器板更容易找到的原因。

Pmod与Arduino接口之间的映射

我们可以采用Pmod接口和Arduino伪标准,两者各有众多来源可供使用。是否能够使某个平台的外设与另一平台的控制器进行通信呢?当然,一切皆有可能,但有时候治疗比疾病本身更糟糕。

如果将Arduino UNO第3版引脚排列与Pmod规范进行比较,您马上会发现Arduino板上有22个信号引脚,而Pmod连接器上只有8个引脚。从技术上讲,有可能将全部22个引脚串行化,使其通过Pmod提供的8个引脚,然后在另一侧对其进行解串,但我们将这一工作留给读者。将22个Arduino信号自适应映射到Pmod规范定义的不同类型(见图1),是可以做到的,但仍不轻松。以上图1所示为5种不同类型的Pmod接口。许多信号采用电平触发,可由软件通过GPIO引脚控制。然而,有些信号采用时间触发协议,利用微控制器内部的外设更容易控制。所以,困难在于将微控制器的所有专用引脚映射到Pmod规范定义的引脚。

建议方案:使用串行控制交叉点开关

解决映射问题的一种途径是在电路板上安装配置跳线阵列。这种方法尽管很简单明了,但既不美观也不人性化。适合Arduino板尺寸的说明文字字体会非常模糊难辨。许多引脚可能是双向的,所以简单的逻辑门不是信号连接的好选择。模拟开关能起作用,但没有足够的附加引脚来对其进行独立控制。利用I2C端口扩展器,可解决引脚短缺的问题。诚然,这种方法不比跳线更巧妙,但可通过软件配置。

如果没有串行控制16:2多路复用器,MAX14661,这种方法似乎毫无希望。咋一看,支持所有不同类型的Pmod好像需要四片器件,那么这种方法很难说比端口扩展器方案好多少。实际情况真的会是这样,除非...MAX14661具有特殊功能。该器件允许同时激活任意开关组合,所以可用作8:8交叉点开关。

至此为止,一切顺利。但是,不可否认,8:8交叉点配置有一个局限性:同时只能传输两路独立信号,每个COM引脚一路。但同时两路信号有什么好处?如上所述,大多数信号可由GPIO驱动,只有少数信号要求内部外设控制器。如果每个引脚分配一路GPIO,只有时间触发的串行线路需要通过复用器连接。UART和I2C为2线总线,所以不适合通过复用器的唯一串行总线是SPI。SPI只有一种接口定义,所以将SPI信号直接连接至连接器,作为这些接口的GPIO连接。当其中某个引脚需要用作时间触发功能时,只需将GPIO置于三态。

信号电平怎么样呢?最初的Arduino设计及许多后来者使用5V信号电平,但现在5V信号没有以前那么常见。为解决这一问题,后来的Arduino版增加了IOREF引脚,以表示基于较低电压微控制器的衍生品。Pmod连接器没有IOREF引脚,但其绝大多数模块支持3.3V信号。幸运的是,MAX14611等双向电平转化器解决了这一问题。只需将Arduino信号连接至由IOREF供电的电平转换器的一侧。然后将另一侧连接至由Arduino板上专用3.3V电平供电的Pmod连接器。MAX14661多路复用器采用1.8V至5V的电源供电时可承受及传输-5V至+5V的任何信号,所以可安装在电平转换器的任何一侧。由于至多路复用器的Arduino连接多于Pmod连接,所以将MAX14611安装在电平转换器的Arduino很有意义。按照这种方式,Pmod连接器处只需要两片4通道器件(图3)。

基于Fpga的Pmod与Arduino接口映射


图3. 建议方案的逻辑图。

方案评估

该方案的关键是每个通道支持同时多个连接。COM引脚不连接,但在复用器内部用于选择连接。MAX14661的16个复用连接中的8个专用于Pmod连接器,也连接至4路支持SPI的信号和4路其它GPIO(图3)。其它8个复用连接绑定至2线串行总线和其它时间关键信号,例如PWM或定时器引脚。例如,为实施I2C类型,只需配置复用器,在通道A上使能SDA引脚和Pmod引脚4,在通道B上使能SCL和Pmod引脚3。通道A和B是任意选择的,可随意交换。实际上,甚至可以使能Pmod连接器上第二排的引脚3和4,以访问另外的6引脚I2C Pmod。如果I2C器件的地址不同,甚至可使两个端口保持工作状态,或者动态激活,以支持相同地址的两个器件。使用跳线方法,根本不可能在两个具有相同地址的器件之间进行动态切换。使用MAX14661,能够以编程方式配置所有指定的Pmod类型,甚至非标准类型,而只需单片尺寸仅为4mm X 4mm的有源器件。

为什么有人设计非标准Pmod?原因之一是与微控制器相同的引脚复用问题。例如,MAX14661支持I2C和SPI控制,取决于配置引脚的状态。MAX14661的外设模块的引脚排列与SPI Pmod类型相匹配,但时钟和数据引脚与Digilent Pmod规范规定的I2C引脚不匹配。适配卡上的MAX14661可将SDA和SCL信号映射到任意Pmod引脚,可用于支持非标准MAX14661外设模块、I2C引脚映射。MAX14661也有两个地址引脚,以支持4个不同的I2C器件地址。因此,可将系统设计为支持同一总线上的多个器件。

使用MAX14661复用I2C总线时,在带内发送命令。切换将与I2C总线同步生效。当然,在带外复用I2C总线具有挑战性,因为如果不小心,会在从机将SDA线拉低时断开;下次选择该总线分支时,分支可能锁死。MAX14661始终在I2C写命令结束时转换总线,此时开关另一侧的器件应为空闲。

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

    关注

    1655

    文章

    22287

    浏览量

    630317
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195975
  • Pmod
    +关注

    关注

    0

    文章

    22

    浏览量

    8441
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【瑞萨RA6E2】PMOD 接口 LCD 显示屏调色板

    如图: 使用的是 NXP 的 LCD-PAR-S035 显示屏,开发板兼容 PMOD 接口,SPI 引脚与 PMOD 相关引脚位置对应(只有这个 PMOD
    发表于 11-01 16:47

    【RA4E2开发板评测】PMOD 接口 LCD 显示屏调色板

    320x480 像素的 LCD 控制器,并且能够支持 RGB565、RGB666 颜色深度,效果如图: 开发板兼容 PMOD 接口,SPI 引脚与 PMOD 相关引脚位置对应: 接口
    发表于 10-23 09:01

    如何在智多晶FPGA上使用MIPI接口

    大家好呀!今天我们来聊聊一个非常实用的话题——如何在智多晶FPGA上使用MIPI接口。不管是做摄像头图像采集还是屏幕显示控制,MIPI都是非常常见的接口标准。掌握了它,你的视频项目开发效率将大大提升!
    的头像 发表于 09-11 09:37 740次阅读

    ADC和FPGA之间LVDS接口设计需要考虑的因素

    本文描述了ADC和FPGA之间LVDS接口设计需要考虑的因素,包括LVDS数据标准、LVDS接口数据时序违例解决方法以及硬件设计要点。
    的头像 发表于 07-29 10:01 5023次阅读
    ADC和<b class='flag-5'>FPGA</b>之间LVDS<b class='flag-5'>接口</b>设计需要考虑的因素

    火爆开发中 | 开源FPGA硬件板卡,硬件第一期发布

    XCCC256M16EP-EINAY; Flash:采用XT25BF128FSSIGU-W用于存储位流文件; HDMI_OUT:FPGA差分管脚连接HDMI输出接口; UART:采用CH340实现USB转
    发表于 07-09 13:54

    Altera FPGA与高速ADS4249和DAC3482的LVDS接口设计

    引言: 本文以TI的ADS4249(ADC)和DAC3482(DAC)之间的接口为例,介绍Altera FPGA与ADC/DAC之间的DDR LVDS接口设计以及时序约束详细设计。本文介绍的实例可方便扩展到具有类似
    的头像 发表于 06-19 10:05 2774次阅读
    Altera <b class='flag-5'>FPGA</b>与高速ADS4249和DAC3482的LVDS<b class='flag-5'>接口</b>设计

    FPGA与高速ADC接口简介

    本文介绍FPGA与高速ADC接口方式和标准以及JESD204与FPGA高速串行接口
    的头像 发表于 06-12 14:18 2727次阅读
    <b class='flag-5'>FPGA</b>与高速ADC<b class='flag-5'>接口</b>简介

    FPGA调试方式之VIO/ILA的使用

    在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供
    的头像 发表于 06-09 09:32 3121次阅读
    <b class='flag-5'>FPGA</b>调试方式之VIO/ILA的使用

    FPGA的Jtag接口烧了,怎么办?

    在展开今天的文章前,先来讨论一个问题:FPGA的jtag接口烧了怎么办?JTAG接口的输入引脚通常设计为高阻抗,这使得它们对静电电荷积累非常敏感,由于JTAG接口需要频繁连接调试器、下
    的头像 发表于 04-27 11:01 2128次阅读
    <b class='flag-5'>FPGA</b>的Jtag<b class='flag-5'>接口</b>烧了,怎么办?

    ZYNQ FPGA的PS端IIC设备接口使用

    zynq系列中的FPGA,都会自带两个iic设备,我们直接调用其接口函数即可运用。使用xilinx官方提供的库函数,开发起来方便快捷。
    的头像 发表于 04-17 11:26 1753次阅读
    ZYNQ <b class='flag-5'>FPGA</b>的PS端IIC设备<b class='flag-5'>接口</b>使用

    Profibus DP主站网关数据映射全解析!

    在工业自动化领域,Profibus DP主站网关作为一种关键的通讯设备,其数据映射的精准度和效率对整个控制系统的性能有着至关重要的影响。本文旨在深入探讨Profibus DP主站网关的数据映射过程,揭示其在工业通讯中的重要作用,以及如何通过精确的数据
    的头像 发表于 04-14 18:27 590次阅读
    Profibus DP主站网关数据<b class='flag-5'>映射</b>全解析!

    AXI接口FIFO简介

    AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native
    的头像 发表于 03-17 10:31 1779次阅读
    AXI<b class='flag-5'>接口</b>FIFO简介

    STM32开发板一般都会配置arduino接口,是不是基本上也都会支持arduino

    STM32开发板一般都会配置arduino接口,是不是基本上也都会支持arduino?这个在哪里可以查询开发板是否支持
    发表于 03-07 06:33

    利用FPGA实现USB 2.0通信接口

    USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB
    的头像 发表于 12-30 13:59 3784次阅读
    利用<b class='flag-5'>FPGA</b>实现USB 2.0通信<b class='flag-5'>接口</b>

    如何使用Arduino实现CAN总线通信呢

    ,这些是常见的CAN控制器芯片,可以通过SPI接口Arduino通信。 CAN总线转接板 :用于将CAN控制器芯片与Arduino连接。 CAN总线终端电阻 :通常需要在
    的头像 发表于 12-23 09:06 2819次阅读