tag 标签: cycloneiv

相关博文
  • 热度 14
    2012-9-5 22:28
    3786 次阅读|
    1 个评论
    如今,在FPGA系统的设计中,系统的复杂度越来越高,对内存的要求也是越来越高。通常,综合体积、容量等考虑,DDR2已成为FPGA系统的首选。这里,就针对Cyclone IV系列FPGA的DDR2设计作一小结,对于其它系列的FPGA和DDR设计类似。 根据Cyclone IV的手册,在进行DDR2设计时,FPGA的管脚分配是要有所考虑的,而不能随意分配。   首先,对DDR2的信号引脚做一下说明。这里以 MT47H128M8 (16Meg×8bit×8banks)为例说明。 它的信号线(共34根)包括: 时钟及控制线:CLK+/- ,CKE ,RASn ,CASn ,CSn ,WEn ; 数据控制线:BA0~BA2 ,DQS ,DQM ; 地址线:A0~A13 ; 数据线:D0~D7 ;   在FPGA中,为了更好的发挥出DDR的性能,其会对DDR引脚的分配做相关的约束。 这里以 EP4CE75F23C8N 为例,F484封装。 它在进行 8 位DDR2 设计时,就指定了相关的 DQ 、DQS 和DQM 引脚,我们设计时应该遵从这些引脚约束。 在该FPGA的上、下、左、右区域分别都指定有这些引脚: 每个方向又都分有4个区,若是选择8位的DDR,则每个区有9个DQ引脚和相应的DQS、DQM: (1)左: DQ0L 、DQ1L 、DQ2L 、DQ3L ,以及DQSL 和DML ; (2)下: DQ2B 、DQ3B 、DQ4B 、DQ5B ,以及DQSB 和DMB ; (3)右: DQ0R 、DQ1R 、DQ2R 、DQ3R ,以及DQSR 和DMR ; (4)上: DQ2T 、DQ3T 、DQ4T 、DQ5T ,以及DQST 和DMT ;   比如:在 DQ5B 中,这9个DQ引脚为:Y10,W10,V11,AA8,AA9,AB8,U10,Y8,AB7,以及AB9(DQS)、AA7(DQM)。   因此,在硬件设计时,应该将这些相应的引脚(8位数据DQ和DQS、DQM)正确分配,至于这8位DQ数据的位置则可以根据布线的方便而相互对调, 保证它们在同一区 即可(如DQ5B区);而对于其它的DDR2引脚(地址线、控制线等),则可以根据布线的方便而随意分配,但必须 保证所有 DDR2 的引脚都在FPGA 的同一个或两个Bank 区 (如Bank3和Bank4,因为有时一个Bank区放不了所有这些引脚),这样做的目的就是 为了便于对它们进行统一的 VCCIO 电压的指定,以及考虑后续PCB 布线的方便性 ,注意该 Bank 区的VCCIO 电压必须指定为1.8V 。 在Quartus II中,同样也要进行正确的引脚分配,并且还要注意这些 电平标准为1.8V 。 如果硬件设计时不按照这些约束进行相关的引脚分配,在Quartus II编译时,则可能就会报错,而导致DDR2无法正常使用。   以上为个人在设计中的一点心得,在此与各位分享。  
  • 热度 23
    2012-7-26 20:36
    3821 次阅读|
    1 个评论
    最近为了给几个新同学介绍实验室所使用的两个开发板——StratixIII开发板和DEII-CycloneIV实验箱,所以整理了下关于两个板子FPGA的配置过程,从中自己也获益很多。两款芯片的配置方式算是代表了如今Altera主流的方式吧。 首先介绍下CycloneIV实验箱。 实验箱提供了简单的配置流程,首先简单介绍下CycloneIV的配置部分电路。 图中圈起部分及为FPGA配置部分电路图解,其中重点是其使用的配置芯片为EPCS64,这也是最为常用的配置方式。 首先对FPGA可以通过USB Blaster然后以JTAG模式进行下载,如下图: 图中有个拨码开关,其中有两个可选端,一个是RUN,一个是PROG,简单的理解就是运行和程序配置。这里我比较认同RUN的含义,老师们给我们讲的时候都把将程序之间“烧”到FPGA也称作配置。但我个人觉得,"运行“这个词很贴切,就好像我们是把一个文件写入到FPGA在其中运行一样。这个过程很简单,每个工程编译完成后都会生成一个sof文件,将它烧到FPGA里面就行了。 可是这样的配置每次掉电后都需要重新烧写,所以这里就需要配置芯片EPCS64来起作用了。我们把程序烧写到它里面,每次上电后,就自动由它来对FPGA进行配置,这样就不需要我们一次次的上电烧写了。 下面介绍下EPCS64的烧写了。手册中给出了它的AS模式配置: 如图,将拨码开关拨至PROG端,就可以用PC对EPCS64配置芯片进行烧写了。 1、先生成一个pof配置文件。在File下选择Convert Programming File,这部分操作后面也会提到。 2、将拨码开关拨至PROG,在Programmer中将模式选择为AS mode,选择pof文件。 3、Start,开始烧写。这里可以发现,过程较sof文件的烧写要漫长得多。 这里需要注意的是,其实上面图中圈起部分是很容易引起误解的。EPCS64要对FPGA进行配置时,拨码开关仍然需要拨回到RUN端,可以理解成,只是换成了配置芯片把程序烧写到FPGA中"运行”罢了。 下面介绍另一种对EPCS64的配置方式,我们希望通过JTAG模式来对EPCS64进行配置。我们暂且称它为jic文件模式。这里我们可以简单把EPCS64当做一个Flash存储器,既然是存储器那肯定可以利用FPGA来对它进行写入操作。这种模式下,就是通过JTAG对FPGA进行写入操作,然后让FPGA来对配置芯片进行写入操作。 首先,还是通过Convert Programming File来生成一个jic文件。 我们可以看到在下面Input files to convert设置的时候,其中比之前的pof文件生成多了一个Flash Loader,也就是说,这里选的FPGA就是用来Loader配置芯片的。 生成了jic文件后,在Programmer中选择JTAG模式下载就行了,如下图: 这里也有整个过程的体现,上图的下面也显示了整个烧写过程的简单示意图。 Start之后,就完成了我们对EPCS64的烧写了。其中并不需要再去拨动拨码开关了,我们只需一直在RUN下面用JTAG就可以对两者进行烧录了。 这里出现了个小插曲,上面过程都是在10.0里面完成的,在使用Quartus9.0的时候一直不能成功,如下图: 中途报错了,提示: 对于这个问题一直纠结了很久,后来无奈得认为是Quartus版本bug,对比两个版本Programmer里面可以看到,9.0下面Checksum部分都为0,可见它无法检测。只要换到10.0就行了,后来发现,其实别的版本也都可以,唯独9.0不行……甚是不解。 另外在网上看到很多朋友说不要勾取Verify和Blank-Check的选项可以下载成功,可是我们试过之后虽然可以下载成功,但是却无法配置FPGA,程序烧进去没有任何反应,所以还是觉得Quartus版本的问题。
相关资源