FPGA芯片引脚如何理解和使用 您所在的位置:网站首页 芯片TL082C引脚功能 FPGA芯片引脚如何理解和使用

FPGA芯片引脚如何理解和使用

2024-01-13 15:09| 来源: 网络整理| 查看: 265

         大家好,"FPGA功夫熊猫"汇总知识点,详细介绍汇总FPGA芯片引脚的相关知识。

       如果大家在项目中需要外协开发,可以先收藏本文章后私信作者有问必答。在芯片的研发环节,FPGA验证是其中的重要的组成部分,如何有效的利用FPGA的资源,管脚分配也是必须考虑的一个重要问题。一般较好的方法是在综合过程中通过时序的一些约束让对应的工具自动分配,但是从研发的时间段上来考虑这种方法往往是不可取的,RTL验证与验证板设计必须是同步进行的,在验证代码出来时验证的单板也必须设计完毕,也就是管脚的分配也必须在设计代码出来之前完成。所以,管脚的分配更多的将是依赖人,而非工具,这个时候就更需要考虑各方面的因素。

        分配fpga管脚时该怎么选择,引脚有什么属性需要考虑,引脚有几个属性:Reserved,Group,I/O Bank,Vref Group,I/O standard(3.3-V LVTTL(default))分别是什么意思,要怎么设置?

        1)、首先说IOstandard:这个是用于支持对应不同的电平标准。FPGAIO口的电压由IO bank上的VCC引入。一个bank 上引入3.3VTTL电平,那么此时整个bank 上输出3.3V的TTL 电平。设置这个的原因一是为了和current strength一起计算功率。二是为了用于在IO口上加载正确的上拉/下拉电阻。只要你设置完成,Quartus会按照你的电平标准自动布线。         2)、第二是IO Bank:你在quartus pin planner的top view下右键然后点击 show IO banks,这个时候就会看到FPGA的管脚被几种颜色划分开了。一种颜色下的IO口代表一组bank。把管脚的location约束完成以后,IOBank会自动填充完毕的。         3)、第三是Group:Group就是你所输出的信号的名字。比如你有一组信号叫cnt。你对cnt的某一根赋值,那么......这里的Group会自动填充为cnt。         4) 、第四是Reserved:这个是对管脚内部的IO逻辑进行约束的,你在下面可以看到一些值。              介绍几个吧。

        bidrectional:双向; tri-state:三态等等。

        这个约束的是FPGA在IO端的输入输出区域的逻辑。比如你选择tri-state。那么这个时候,在你IO口前部的IO区,quartus会自动给你生成一个三态门。         5)、第五个是Vref Group:这个Group是bank内部的细分区域,因为一个bank可能多达60个脚。为了快速定位,你可以利用这个vref group来找到某个管脚。(这个是非修改属性)无法修改。

          以下是系统的介绍FPGA的引脚相关知识,大家需要的可以慢慢品读。

一、 FPGA的硬件结构

这里说的硬件结构主要从FPGA的引脚功能方面描述,FPGA内部的电路逻辑暂不讨论。

FPGA的引脚大致可以分为三类:功能引脚、IO引脚、电源和接地引脚。

1. 功能引脚

FPGA的功能引脚包含了FPGA配置程序加载、FPGA配置模式选择、状态及错误提示、JTAG调试等等。

(1)DCLK、DATA0、NCONFIG、CONF_DONE这几个引脚是配置FPGA所必须的,

(2)DATA1~DATA7可以用作其他功能,

(3)INIT_DONE可以不使用。

(4)TDI、TDO、TMS、TCK四个脚是JTAG调试使用,一般会预留。

2. IO引脚

FPGA的IO引脚是芯片与外部电路的接口部分,完成在不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA的IO引脚按组分类,每组都能够独立地支持不同的IO标准。通过软件的灵活配置,可适配不同的电气标准与IO物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。为了便于管理和适应多种电器标准,FPGA的IO引脚被划分为若干个Bank,每个BANK的接口标准由其接口电压VCCIO决定。

一个BANK只能有一种VCCIO,但不同的BANK的VCCIO可以不同,只有相同电气标准的端口才能接到一起。

3. FPGA的电源和接地引脚

电源引脚为不同的电气需求提供不同的电压,包括VCCINT、VCCIO、VCCA、VCCD_PLL等。不同的BANK可以使用不同的IO电压,也可以连在一起使用相同的IO电压。接地引脚可以全部连在一起接到GND上。

二、FPGA的配置方式

1. 配置方案

FPGA有以下几种配置方案:

主动串行(AS)

主动并行(AP)

被动串行(PS)

快速被动串行(FPP)

JTAG模式

硬件上通过连接MSEL四个引脚的组合方式来选择使用哪种模式,主流方案使用的是被动串行配置(PS)方案。

2. 使用PS方式配置FPGA

在 PS 配置方案中,可以使用微处理器控制从存储器件 (例如闪存)传输配置数据到目标 Cyclone IV 器件。可以将配置数据存储为 .rbf、 .hex 或 .ttf 的格式。

(1)当其nCONFIG引脚被拉低时,器件处于复位状态,这时所有的配置RAM内容被清空,并且所有I/O处于高阻态,FPGA的状态引脚nSTATUS和CONFIG_DONE引脚也将输出为低。

(2)当FPGA的nCONFIG引脚上出现一个从低到高的跳变以后,配置就开始了,同时芯片还会去采样配置模式(MSEL)管脚的信号状态,决定接受何种配置模式。随之,芯片将释放漏极开路输出的nSTATUS引脚,使其由片外的上拉电阻拉高,这样,就表示FPGA可以接收配置数据了。

(3)FPGA在 DATA[0] 上接收配置数据,在 DCLK 上接收时钟。在 DCLK 的上升沿,数据被锁存到器件中。数据不断送入目标器件,直到 CONF_DONE 变高以及器件进入初始化状态。

(4)主控必须一次一个位地将配置数据放置在 DATA[0] 上。如果使用的配置数据格式为 .rbf、 .ttf 或 .hex,必须首先发送每个数据字节的 LSB。例如,如果 .rbf 包含的字节序列为 02 1B EE 01 FA,那么必须发送到器件的串行比特流是 : 0100-0000 1101-1000 0111-0111 1000-0000 0101-1111

(5)当配置数据被全部载入到FPGA中以后,FPGA上的CONF_DONE信号就会被释放,而漏极开路输出的CONF_DONE信号同样将由外部的上拉电阻拉高。

(6)CONF_DONE引脚的从低到高的跳变意味着配置的完成,初始化过程的开始,而并不是芯片开始正常工作。

(7)INIT_DONE是初始化完成的指示信号,它是FPGA中可选的信号,需要通过Quartus II工具中的设置决定是否使用该引脚。这个引脚不是必须使用的,很多FPGA方案中没有使用这个引脚。

3. FPGA时序参数

三、FPGA和外界数据通讯接口

FPGA除了对IO引脚进行控制外,还可以和外界数据进行通讯。

1. GPCM模式

FPGA通常挂载在类似Nand控制器这样的总线上,比如VxWorks的Local Bus。类似Nand有8个数据脚,FPGA内部会配置出8个或者16个地址/数据脚来收发数据。整个通讯过程和读写Nand类似,当读写的地址区间在到FPGA映射的内存地址范围时,片选会自动识别到是FPGA的数据。

 这个图很关键,指明了要使用GPMC模式,就必须按照这种方式来接线。注意有一个很明显的地方就是P2020的低位数据接到了外设的高位数据 这点不仅是在寄存器设置的时候要注意,硬件连接也要注意。我们这里使用的是zynq,因此不用关系这个问题会带来灾难性的错误,重新配置下管脚约束不就好了。 低位地址线需要锁存器来进行解复用。我们用的是FPGA,可以很灵活的解决这个问题。

 这里我们的硬件连接直接把P2020的LocalBus接到了xcz7045上面。 再来看一下读写时序:

 看起来很简单,不分析时序了,直接在zynq上面编码就好了。 这里还有很重要的一步,配置LocalBus的功能寄存器。 LocalBus只需要配置两个寄存器eLBC_BR0和eLBC_ORg0,注意后面的数字代表的是对应的硬件管脚上面的片选信号。

看到了吧,这里主要用了LCS2。 eLBC_BR0寄存器设置了基地址、总行功能模式、ECC校验、写保护、Machine select以及Valid bit。 eLBC_ORg0寄存器配置了AM(地址掩码)以及访问时序。 根据器件手册以及我们要实现的功能,在vxWorks中对这两个寄存器做如下配置: 这里重0xe9000000映射了1M字节的空间到外设。

 信号的抓取验证:

首先把示波器调成下降沿触发,接到CS2管脚上。**触发,等待下降沿的到来。然后在shell中输入d 0xe9000000,这时候,vxWorks会读取0xe9000000上面的数据,如果LAW、MMU、LBS都配置正确,CS引脚会被拉低。

 FPGA部分程序设计: 设计思路:

1、先把信号全部设置成input,通过ILA来抓取信号,观察信号的规律; 2、根据抓取到的信号进行解复用,解析出地址和数据; 3、写接口只要在写使能信号有效的时刻,准备好相应的数据即可;

下图是在0xe9000000上面写了0x1234

可以看到信号与时序图相符合。 再来看一下读信号:

下面是解复用的逻辑

always @(negedge ps_clk) begin  if(LALE)     address_high



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有