FPGA服务器硬件搭建涉及的知识点2
接上一篇来分析一下使用的ip核。
1.altpll
这个锁相环有3个输出接口:
c0:100mhz,系统时钟,无相位偏移;
c1:sdram时钟,相位偏移-65dg,(没有相位偏移这个sdram不工作,毕竟是动态存储),这个sdram时钟是不连的,要在export那栏导出去用来连接sdram的时钟接口;
c2:外设时钟,key,ledg等待 时钟。10mhz,无相位偏移。
2.ext_flash
我们想固化程序的时候必须要有flash,epcs或者普通的cfi类型的flash都行。我用的外接cfi类型的flash。
altera提供的ip库里有两种方法来添加我们需要的cfi-flash。
a.第一种方法
有一个叫“flash memory interface(cfi)”的ip核,这个核可以配置成我们需要的和板子上一样的flash。但是这个核的slave接口不能直接和cpu连接,在nios系统中,要实现与fpga片外的存储器通信,就必须在avalon总线和外部的存储器直接添加一个桥,这个桥叫做“avalon-mm tristate bridge”。添加三态桥以后,flash的slave和桥的master连接,但是桥的slave接口是不可以和cpu连接的,也就是说桥的slave接口是没有可以连的接口,不连可不行,那怎么办?这时我们要添加一个sram的ip核,这个sram在软核库是没有的,需要自己根据avalon协议写一个关于sram接口的驱动,然后添加进软核库中,这样才能调用我们的sram。
综上所述,如何我们用“flash memory interface(cfi)”,就必须包含另外的两个ip核,“avalon-mm tristate bridge”和定制的sram核。
sram和flash公用数据和地址线,因此需要三态桥连接,三态桥用来仲裁谁来使用数据地址线。
如果我们只是用sram的话,就不需要这个三态桥了。我建立过只包含sram没有桥的工程,运行是可以的。
如果使用sdram的话也不用这个三态桥,flash和sram是直接挂在总线上的。
b.第二种方法
利用“Generic Tri-state Conduit Controller”,这是通用的三态端口控制器,用来控制fpga和外部存储芯片直接的通信,相当于一个中介。这个控制器里有很多可以配置的参数,我们可以利用这些参数配置成和我们需要的外部器件一致的ip核。可以配置的外部器件有:
Legacy AMD 29LV065D Flash
AMD 29LV128M Flash with Legacy SDK support
Intel 128P30 Flash
Intel 256P30 Flash
SST39VF20090 Flash
Flash Memory Interface (CFI)
ISSI IS61LPS25636A-200TQL1 SSRAM
Cypress CY7C1380C SSRAM
IDT71V416 SRAM
LAN91C111 Interface
C8900 Interface (Ethernet)
其中就有我们需要的cfi类型的flash。
再说说这个“Generic Tri-state Conduit Controller”的配置内容。
打开这个核
这三种配置内容根据需要来配置。
重要的部分在下面:
这两个部分如果是空的那么你配置的器件是不起作用的,而且你的编译器也不会报错。
重要的一步不要忘了:
这个核的右边有这样的一栏
选择我们需要的芯片类型,比如我需要cfi类型的flash,选中它然后点击apply,以上的两个选项里才会有内容,如下所示:
你以为这样就配置成功了吗?显然还没有
还有最后一步:
蓝色高亮的一部分是指定你所用的器件的内存大小,比如我用的cfi类型的flash是8m的所以在value一栏就要写8388608u刚好的8m大小,这个要自己手动修改。
这样一个正确的外部器件才算配置完成。我当初做的时候并没有考虑这样,这个核也是第一次用,我强调的这些我都没弄,走了不少弯路,最后还是一点点搞明白了。
但是光有这个核是不够的,这个核只是控制器,还得把我们配置的这些个参数的接口给导出去,我们才能定义引脚。
这就需要另外一个核——Tri-state Conduit Bridge。这核的作用就是转换片上的三态信号的编码到电路板上的正确的双向信号。
还有一个核——Tri-state Conduit pin sharer,仲裁三态控制器之间的多个连接,它可以驱动信号从被选中的控制器到三态管道桥,这个桥就是Tri-state Conduit Bridge。
这三者的关系如下:
A1是ssram,A2是flash,B是ri-state Conduit pin sharer,C是Tri-state Conduit Bridge,B仲裁A1和A2并选中其中一个,并将信号驱动到B的三态住机接口(TCM一端),这个TCM与C的TCS相连,C将传来的信号转换成可在pcb上运行的双向信号。
所以说A和C这两个模块不可少,如果只是用flash的话B这个模块是可以不用的,就一个外部器件就不用仲裁了。
可以加我qq讨论:739628193;