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

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

3天内不再提示

使用AT29C010A和XC95108芯片实现对FPGA芯片数据进行串行加载

电子设计 来源:郭婷 作者:电子设计 2019-04-18 08:22 次阅读

自大规模现场可编程逻辑器件问世以来,先后出现了两类器件,一类是基于SRAM体系结构的FPGA系列,如XILINX公司的4000系列和最新的Virtex系列;另一类是基于faxtFLASH技术的CPLD器件,如XILINX公司的9500系列和Lattice公司的ispLSxx系列芯片。FPGA具有容量大、设计资源丰富、片内ROM及RAM设计灵活等特点1,但是它们需要在每次上电时进行数据加载。目前实现加载的方法有以下三种:①采用PROM并行加载;②采用专用SROM串行加载;③采用单片机控制实现加载。第一种方式需要占用较多的FPGA管脚资源,虽然这些管脚在加载完成后可用作一般I/O口,但在加载时不允许这些管脚有其他任何外来信号源;另外数据存储器PROM与FPGA之间的大量固定连线如8位数据线以及大量访问PROM的地址线等,使得PCB设计不便。但是第一种方式有一个有利的方面,即PROM的容量较大、容易购置、价格低、技术支持(编程器)较好。第二种方式情况刚好与第一种方式相反,即占用资源少、PCB布板方便,但是容量小、价格较高、兼容性差。第三种方式采用单片机控制,由PROM中读取并行数据,然后再串行送出。由于涉及到单片机编程,对于开发者来说较为不便;另外,如果单片机仅用来实现该任务,较为浪费硬件资源。CPLD的一个最大优点是采用计算机专用开发工具,通过JTAG口直接一次性实现编程数据加载,并永久保留,除非进行再次编程(与GAL器件相似)。该类器件比较适合在实验室内进行现场调试,但是由于其数据的加载必须通过计算机,因此对于从事野外作业者来说会产生不便。

通过上述比较,并结合实际工作情况,我们认为采用串行数据加载比较方便、可靠(这种可靠性得益于FPGA与SROM之间较少的接口线)。但随着FPGA规模的不断升级,其CONFIG数据量越来越大,截止到本文写作时,CONFIG数据量最大已到6MBIT,虽然XILINX公司有相关的XC17X系列SROM提供使用,但皆为一次性芯片?2、开发成本较高、代理商供货周期长、价格较高,这给FPGA的应用及普及带来很大的障碍。我们曾使用过AT&T公司的ATT17系列电可擦除SROM,但是该类SROM芯片能与XILINX系列FPGA芯片实现接口的种类不多,且容量小。由于种种原因,其价格往往是同样存储容量的EEPROM的五、六倍,甚至更高,并且来源困难。那么能不能结合并行加载与串行加载的优点,从而解决大容量FPGA数据加载的问题呢?我们在仔细分析了串行加载机制后,认为采用EEPROM作为数据存储器,经过可控的并-串转换,应该可以实现数据加载。下面以XILINX公司Virtex系列XCV100芯片为例,采用ATMEL公司1兆位的AT29C010A进行数据存储,采用XILINX公司9500系列XC95108芯片作为加载控制器件进行设计。

1 原理设计

原理性Master Serial模式串行加载时序如图1所示

使用AT29C010A和XC95108芯片实现对FPGA芯片数据进行串行加载

在该加载模式中,比较重要的几个信号为/INIT、CCLK、DATAIN、DONE。/INIT表示FPGA芯片上电时或者当/PROGRAM信号为低时FPGA内部数据初始化过程,并作为外送信号给数据加载控制器件作为复位之用。当/INIT信号跃为高电平时,CCLK开始启动。加载数据DATAIN在CCLK的上升沿打入,与通用串行通讯相类似,加载数据流也有开始位与结束位,且以数据帧的方式接收。一旦发生错误,FPGA立即停止接收数据,并将/INIT信号置为低电平,因此该信号又称为错误指示信号。当数据全部接受并验证无误后,FPGA将DONE信号置为“1”?3。 在分析了FPGA加载数据流特性后,可以得出这样一个结论:保证CCLK与DATAIN之间的严格同步与连续性,就可以实现加载。基于此结论,在生成加载数据格式时,产生单片SROM串行格式,对于XILINX公司的FPGA系列,该格式为.MCS文件格式;然后用ALL07编程器以INTEL HEX数据格式将其写入EEPROM中。余下的工作是在CCLK、/INIT、DATAIN的控制下完成并-串转换。该控制过程采用一片CPLD之95系列XC95108芯片来承担,在设计容量上采用一片XC9536即可完成,之所以采用XC95108是因为其尚需要完成其他任务。其原理框图如图2所示。

使用AT29C010A和XC95108芯片实现对FPGA芯片数据进行串行加载

2 并-串转换时序设计

在时序设计上,关键在于要保持DATAIN加载数据的连续性、DATAIN与CCLK加载时钟的同步性以及EEPROM访问地址的复位问题。对于复位问题,采用上电时FPGA产生的/INIT信号对95108内部的EEPROM地址发生器复位。这样做的原因是/INIT与FPGA之CCLK时钟产生有着同步关系,但同时也默认上电加载是一次成功;在考虑串行DATAIN数据的连续性时,采用两组移位寄存器,设定它们为R_shiftA和R_shiftB,当R_shiftA在进行移位操作时,R_shiftB由EEPROM中读入八位并行数据,反之亦然;为保持DATAIN与CCLK时钟的同步性,所有上述操作都以CCLK为同步时钟,值得注意的是,由于DATAIN串行数据是在CCLK的上升沿打入FPGA,因此我们给予XC95108芯片设计的运转时钟是经过反相的CCLK时钟,这样就保证了CCLK与DATAIN的时间关系。

以下是为该加载设计的VHDL硬件编程语言设计程序4 5,其中的计数器及移位寄存器模块用F2.11设计软件之LogicBlox模块产生。整个程序经F2.1I开发软件仿真、编译成功后,经JTAG编程电缆写入XC95108芯片。加电后便加载成功,经多次加电实验,成功率为100%。

虽然该程序是针对XCV100芯片及AT29C010A EEPROM设计的,但对于其他FPGA及EEPROM芯片同样适用,不同的是针对不同容量的EEPROM,应改变其地址计数器的位数。

Library IEEE;

Use IEEE.Std_logic_1164.all;

Use ieee.Std_logic_arith.all;

Use ieee.Std_logic_unsigned.all;

Entity v10sload is

port

pDATA in STD_LOGIC_VECTOR 7 downto 0

Paddress inout STD_LOGIC_VECTOR 16

Downto 0

CCLKIN in STD_LOGIC

RESET in STD_LOGIC

DATAINout STD_LOGIC

end v10sload

architecture v10sload_arch of v10sload is

signal loadin CE Nce CCLK8 Nreset nCCLK aDATAIN

bDATAIN std_logic

signal clkenable CCLK std_logic

signal ppDATA std_logic_vector 7 downto 0

component clk_div8

PORT

CLOCK ASYNC_CTRL IN std_logic

CLK_OUT OUT std_logic

end component

component R_shift8

PORT

D_IN IN std_logic_vector 7 DOWNTO 0

LOAD IN std_logic

CLK_EN IN std_logic

CLOCK IN std_logic

LS_OUT OUT std_logic

end component

component BUFG

port I in std_logic O out std_logic

end component

begin

-------------------------------

--data-loading function statements here

nRESET<=not RESET

init_data process RESET

begin

if RESET='0' then

ppDATA<=″00000000″

else ppDATA<=pDATA

end if

end process init_data

L0 BUFG port mapI=>CCLKIN O=>CCLK

nCCLK<=not CCLK

L1 counter17 portmap

CLOCK=>CCLK8ASYNC_CTRL=>nRESET

Q_OUT=>pADDRESS

L2 clk_div8 portmap

CLOCK=>nCCLKASYNC_CTRL=>nRESET

CLK_OUT=>CCLK8

nCE<=not pADDRESS0

CE<=pADDRESS0

clkenable<='1'

L3R_shift8 portmap

D_IN=>ppDATA LOAD=>nCE CLK_EN=>

clkenable CLOCK=>nCCLK

LS_OUT=>aDATAIN

L4 R_shift8 portmap

D_IN=>ppDATA LOAD=>CE CLK_EN=>

clkenable CLOCK=>nCCLK

LS_OUT=>bDATAIN

Process Adatain bDATAIN CE

begin

if CE='1' then DATAIN<=dDATAIN

else DATAIN<=bDATAIN

end if

end process

end v10sload_arch

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

    关注

    1631

    文章

    21806

    浏览量

    606681
  • 芯片
    +关注

    关注

    457

    文章

    51345

    浏览量

    428237
  • 寄存器
    +关注

    关注

    31

    文章

    5377

    浏览量

    121394
收藏 人收藏

    评论

    相关推荐

    FPGA芯片-XC3S50A-5TQ144C可由其他什么芯片代替?

    FPGA芯片-XC3S50A-5TQ144C可由其他什么芯片代替?
    发表于 04-07 15:44

    如何利用TMS320C61416控制FPGA数据加载

    目前实现加载的方法通常有两种:一种是用专用Cable通过JTAG口进行数据加载,另一种是外挂与该FPGA厂商配套的PROM
    发表于 09-05 07:50

    如何设计TMS320C61416控制FPGA数据加载

    目前实现加载的方法通常有两种:一种是用专用Cable通过JTAG口进行数据加载,另一种是外挂与该FPGA厂商配套的PROM
    发表于 10-11 06:15

    ARM-Linux平台实现多种FPGA芯片的程序加载

    的程序可以根据需要有选择的加载时不能采用这种方法。本文实现了一种基于外部处理器的加载方法,速度快,而且可以根据设置给FPGA加载相应的程序。
    发表于 12-10 17:42

    如何采用EEPROM对大容量FPGA芯片数据实现串行加载

    请问一下有没有采用EEPROM对大容量FPGA芯片数据实现串行加载的实际方案?
    发表于 04-08 06:01

    有什么方法可以实现FPGA芯片数据串行加载吗?

    如何用EEPROM对大容量FPGA芯片数据实现串行加载?如何设计并-串转换时序?
    发表于 04-29 07:13

    如何用CPLD实现DSP2407A与S3C4480的通信?

    本设计以Xilinx公司的XC95108为例,通过在CPLD中开辟2块独立的SRAM区域(各1字节)来实现DSP2407A与S3C4480的并行通信。
    发表于 06-03 07:06

    XC9572和XC95108 DIY CPLD实验板的PCB

    描述XC9572和XC95108 DIY CPLD实验板的PCB该板需要外部 JTAG 电缆来对器件进行编程。JTAG 电缆可以是传统计算机并行端口或现代 USB JTAG 编程器。一条并行端口
    发表于 08-05 07:09

    在HP 3070系列检测器上的XC95216和XC95108

    在HP 3070系列检测器上的XC95216和XC95108的快速擦除时间
    发表于 05-13 14:52 34次下载
    在HP 3070系列检测器上的<b class='flag-5'>XC</b>95216和<b class='flag-5'>XC95108</b>

    在HP 3070系列检测器上的XC95216和XC95108

    for the XC95216 and XC95108. The revision 1 designation is delineated by a 1 in the 4 msb of the JTAG ID register
    发表于 05-15 14:01 3次下载

    TMS320C61416控制FPGA数据加载设计

    根据FPGA芯片加载时序分析,本文提出了采用通过市面上常见的Flash ROM芯片替代专用PROM的方式,通过DSP的外部高速总线进行
    发表于 08-16 16:26 1834次阅读
    TMS320<b class='flag-5'>C</b>61416控制<b class='flag-5'>FPGA</b><b class='flag-5'>数据</b><b class='flag-5'>加载</b>设计

    如何使用FPGA进行串行通信控制系统的设计

    EP2C5Q208 上,进行在线编程调试,实现串行通信控制功能。基于FPGA 的系统设计调试维护方便、可靠性高,而且设计具有灵活性,可以方
    发表于 11-07 11:18 6次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>进行</b><b class='flag-5'>串行</b>通信控制系统的设计

    xc7z020和xc7z010 FPGA芯片的电路原理图免费下载

    本文档的主要内容详细介绍的是xc7z020和xc7z010 FPGA芯片的电路原理图免费下载。
    发表于 02-12 17:20 501次下载
    <b class='flag-5'>xc</b>7z020和<b class='flag-5'>xc7z010</b> <b class='flag-5'>FPGA</b><b class='flag-5'>芯片</b>的电路原理图免费下载

    基于XC95108芯片实现DSP和ARM的并行通信系统的设计

    ,因此在汽车电子中一般用ARM来实现大容最的数据存储和人机交互或GPS全球定位系统,故在DSP和ARM之间需要进行数据交换。
    的头像 发表于 06-23 14:43 3686次阅读
    基于<b class='flag-5'>XC95108</b><b class='flag-5'>芯片</b><b class='flag-5'>实现</b>DSP和ARM的并行通信系统的设计

    XC9572和XC95108 DIY CPLD实验板的PCB

    电子发烧友网站提供《XC9572和XC95108 DIY CPLD实验板的PCB.zip》资料免费下载
    发表于 07-22 11:33 6次下载
    <b class='flag-5'>XC</b>9572和<b class='flag-5'>XC95108</b> DIY CPLD实验板的PCB