最近在用Arria10。从480降到270的过程中,IOPLL出现问题,大概是说几个Bank的IOPLL已经被占用,没有空间再给别的IOPLL去适配。

因为在工程中,所用的PLL多达35个之多,其中明确为自己手动例化的IOPLL为8个,DDR占用3个Bank所以也会占用3个IOPLL。

一时之间不知道从哪里下手,于是笔者理了下思路,觉得应该搞明白Arria10 PLL的分布,果不其然,收获颇多。

以下主要以Arria10 270为例。

  首先要搞清楚的是Arria10中的PLL共有多少个,分别分布在什么位置。从图1看GX270的有8个IOPLL和8个fPLL。从图2和图4可以看到

GX270共有8个IO Bank和4个高速接口Bank。从图3和图5可以看到一个IO Bank有一个IOPLL,一个高速接口Bank有2个fPLL和个ATX PLL(有待研究)。

 

                              图1

图2

      图3

图4

图5

 那现在的问题是我已经使用了11个IOPLL,是否可以把部分IOPLL转成fPLL呢?接下下要了解下PLL的特征:

(1)The fPLLs are located adjacent to the transceiver blocks in the HSSI banks. Each HSSI
  bank contains two fPLLs. You can configure each fPLL independently in conventional
  integer mode or fractional mode.

(2)The fPLL and I/O PLL clock outputs can drive all clock networks.

(3)The dedicated clock input pins can be either differential clocks or single-ended clocks

  for I/O PLL. When you use the dedicated clock input pins as single-ended clock inputs,
  only CLK_[2,3][A..L]_[0,1][p,n]pins have dedicated connections to the PLL.
  fPLLs only support differential clock inputs.

(4)The I/O PLLs are located adjacent to the hard memory controllers and LVDS serializer/

  deserializer (SERDES) blocks in the I/O banks. Each I/O bank contains one I/O PLL.

从以上几个特征来看,fPLL完全可以实现IOPLL的所有功能,只是在输入上要保证必须为差分。

在工程中一个HSSI Bank有两输入部分,每一部分要用到一个fPLL,刚好可以,但是例外的是有一个Bank还有一个输出部分,也要用一个fPLL.

一个HSSI Bank中的fPLL有两个,如果在这个Bank中要使用到两个以上的fPLL应该怎么办呢?这里也引出一个问题,是不同的HSSI Bank之间的fPLL能否共用?

很幸运,笔者很快从Arria10 Transciver PHY User Giude中找到了3.2.4 Reference Clock Network部分,内容如下:

The reference clock network distributes a reference clock source to either the entire
left or right side of the FPGA where the transceivers reside. This allows any reference
clock pin to drive any transmitter PLL on the same side of the device. Designs using
multiple transmitter PLLs which require the same reference clock frequency and are
located along the same side of the device, can share the same dedicated reference
clock (refclk) pin

很明显,在同一个Block中的fpLL可以被任一个参考时钟所驱动。

Arria10中的IOPLL与fPLL的更多相关文章

  1. Arria10中PHY的时钟线结构

    发送器时钟网络由发送器PLL到发送器通道,它为发送器提供两种时钟 高速串行时钟——串化器的高速时钟 低速并行时钟——串化器和PCS的低速时钟 在绑定通道模式,串行和并行时钟都是由发送器的PLL提供给发 ...

  2. Arria10中的OCT功能

    OCT是什么? 串行(RS)和并行(RT) OCT 提供了 I/O 阻抗匹配和匹配性能.OCT 维持信号质量,节省电路板空 间,并降低外部组件成本. Arria 10 器件支持所有 FPGA 和 HP ...

  3. cyclone IV中DDR的一个疑惑

    的生成的DDR2 IP中DDR的时钟竟然是双向的,而在arria10中生成的DDR4则是输出,而DDR2的datasheet上也指出ck和ck#是输入,不知为什么? inout mem_clk , i ...

  4. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  5. Arria10调试问题集之——480转成270中DDR4 IP重新生成的问题

    在把FPGA器件从480修改成270时DDR4报错: Error (16383): Silicon revision parameter for the following EMIF/PHYLite ...

  6. Arria10收发器校正

    收发器的模拟和数字部分都需要校正来补偿过程,电压和温度(PTV)带来的变化. Arria10使用PreSICE来执行校正过程.   校正主要包括上电校正和用户校正两方面: 上电校正在器件上电时自动执行 ...

  7. IOPLL动态重配

    连接 Avalon -MM接口 mgmt_waitrequest:当 PLL 重配置进程开始后,此端口变高并在 PLL 重配置期间保持高电平. PLL 重配置进程完成后,此端口变低. I/O PLL重 ...

  8. fPLL结构及动态配置

    输入参考时钟 从上图可以看到参考时钟输入的几种类型.   注意:fPLL的校正是由CLKUSR来驱动的,这个时钟必须要保持稳定. 参考时钟利用器     N计数器 N计数器会把参考时钟利用器输出进行分 ...

  9. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

随机推荐

  1. android显示通知栏Notification以及自定义Notification的View

    遇到的最大的问题是监听不到用户清除通知栏的广播.所以是不能监听到的. 自定义通知栏的View,然后service运行时更改notification的信息. /** * Show a notificat ...

  2. spyder在编辑过程中被自己弄乱了,想要恢复成安装时默认的格式或者重置页面格式的解决办法

    打开spyder,tools-->Reset Spyder to factory defaults,按照如上操作即可恢复成安装时的默认格式.

  3. linux minitools+minicom 安装及使用

    1,通过SSH将minitools的安装包传到ubuntu 文件下, 2,   解压minitools.tgz  (具体方法见上一篇) 3,命令安装minicom  :   apt-get insta ...

  4. JS-事件心得

    写在前面的话:就我目前的水平来看,这两种方法不能一起使用,用on添加的事件removeEventListener()没办法删除,反之一样 注册事件的两种方式: on+事件名称 addEventList ...

  5. 关于java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.的问题

    报错如下: 300 [main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a valid hadoop home directory ...

  6. Numpy array分割

    1.纵向分割 >>> import numpy as np >>> A = np.arange(12).reshape((3, 4)) >>> p ...

  7. match

    //清空数据match (n) detach delete n (一)查询节点1.查询所有节点 //查询数据库中的所有节点 match(n)return n 2.查询带有某个标签的所有节点 //查询数 ...

  8. 把dataset对象转换成list集合方法

    public static List<T> GetList<T>(DataTable table) where T:new() { List<T> list = n ...

  9. js实现多标签页效果

    点击导航按钮切换div的内容 html代码: <div class="tabs"> <ul id="tab"> <li>&l ...

  10. JS原型与原型链

    1.原型(公用属性) 首先,我们来讲讲浏览器的初始状态,就是在无代码的情况下,浏览器所分配到的内存的使用情况,首先浏览器会创建一个全局对象global,而在这个全局对象global内含有许多的全局函数 ...