之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习,将感悟记于此,如有错误,欢迎指出、讨论。


原创不易,转载请转原文,注明出处,谢谢。

 

一、关于时钟引脚

FPGA芯片一般有好几组时钟引脚 CLK [0..N] [p,n],我的理解是:首先,时钟必须由外部晶振通过CLK引脚输入到FPGA的时钟网络,至于选用哪一组CLK,主要看FPGA哪个bank对时钟要求最为苛刻;其次,一般用p端,n端由quartus置位三态;再次,对于简单的系统,只有一组CLK输入作为系统主时钟,其他时钟引脚空置,或者作为某些高带载能力的时钟的输出口(是否可作为输出口,要看芯片手册);然后,复杂系统,可以有不同源的时钟分别从不同CLK引脚输入,只是猜想,没实践过,个人认为这样不好,因为FPGA的核心就是同步;另外,不要把CLK引脚和全局时钟、区域时钟什么的混为一谈,一个是时钟输入引脚,一个是内部时钟走线;最后,CLK引脚进去的走线肯定进过优化的(H型铜皮,专用的、直达每个触发器的布线资源),所以能做到小的抖动和偏斜,带载能力

图1

图2

图1所示:红圈为时钟输入引脚,当然,从时钟引脚输入的时钟必定首先进入全局时钟网络,再进一步驱动区域时钟,或者由PLL进行分/倍频==;三个黑色方框内PLL输出引脚,我的理解是:这几组引脚的布线也经过了优化,可以使PLL分/倍频后输出的时钟信号质量较好。

图2所示:CLK9p作为系统唯一的外部输入时钟源,需要注意,单端输入时,只有p端是与内部PLL相连的;CLK1[p,n]作为差分时钟输出引脚,由内部PLL驱动,输出作为AD时钟。

二、内部时钟资源

全局时钟(GCLK)网络、区域时钟(RCLK)网络、外设时钟(PCLK)(一般出现在集成了某些外设的FPGA中,个人理解)网络

  1. 全局时钟:FPGA内部的专用全局时钟布线资源(图4上),具有直达每一个触发器的能力,且布线资源经过优化,时钟经过它传输后具有高扇出、最小的偏斜和抖动等。但也因为是全局布线相较于区域时钟,会有较大的插入延时(手册也这么说),而且资源较少(且用且珍惜)。全局时钟网络:1)可由CLK引脚、内部PLL、高速串口(HSSI)、普通逻辑电路产生的时钟(一般不这么干)驱动;2)可驱动所有输出引脚(尤其是CLK引脚,输出作为其他芯片的基础时钟)、内部PLL、区域时钟。
  2. 区域时钟:只在他们自己所在的区域有效(图4下),相当于区域内的全局时钟,在区域内,具有全局时钟的优点,且插入延时比全局时钟小,布线资源也比较多。区域时钟网络:1)可由CLK引脚(注意区域)、内部PLL、高速串口(HSSI)、普通逻辑电路产生的时钟(一般不这么干)驱动;2)可驱动所有输出引脚(尤其是CLK引脚,输出作为其他芯片的基础时钟)、内部PLL。
  3. 外设时钟:没用到,查手册。

图3

图4

         ******注意******

  1. 常规操作:外部晶振—>时钟引脚—>PLL—>区域时钟、各个模块、输出(待验证和完善,我也迷)。
  2. 关于CLK引脚选择:不是所有的CLK引脚都可以连接到所有的全局/区域时钟网路,见图5。
  3. 关于PLL:不是所有始终都可以驱动PLL,详见手册,如图6所示。

图5

图6

三、时钟资源的使用、分配

20181101提出

  • 疑问:编写逻辑电路,或者布局布线时,我怎么知道某个时钟具体使用了哪种、哪个网络?以及怎么人为地控制使用具体某个网络?

20181102补充

  • 除非是时钟资源(尤其是全局时钟资源)紧张,或者需要进行时序优化,否则,一般不用过于关心这些资源怎么使用的,quartus会根据电路逻辑,自动选择最优的布局布线。
  • 实际上,根据硬件电路和逻辑电路,也能推断出用了多少全局时钟、区域时钟。
  • 比如:clk0=50MHz,然后它在几个always中都被用到,而这几个always占用的逻辑资源分布在不同的区域,那么这个时钟应该是全局时钟;再比如:clk1=100MHz,它只在一个always里被使用,或使用它的逻辑资源都在一个区域,那么clk1应该是区域时钟。

三叔学FPGA系列之一:Cyclone V中的时钟资源的更多相关文章

  1. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  2. FPGA系列之一:Cyclone V中的时钟资源

    之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...

  3. 老猿学5G:3GPP 5G规范中的URI资源概念

    ☞ ░ 前往老猿Python博文目录 ░ 说明: 本文参考3GPP29.501<Principles and Guidelines for Services Definition>结合笔者 ...

  4. FPGA开发时钟资源评估需要考虑的问题

    在第一个独立开发的FPGA项目中,使用了Altera平台的三速以太网IP,工作在100M模式下,外部输入的PHY时钟频率为25MHz. 由于在前期没有注意这个外部输入的时钟,导致最后不得不在板子上飞线 ...

  5. .net基础学java系列(三)徘徊反思

    .net基础学java系列(三)徘徊反思 上一篇文章:.net基础学java系列(二)IDE 之 插件 这两天晚上看完了IDEA的教学视频:https://edu.51cto.com/course/1 ...

  6. [Python] 文科生零基础学编程系列三——数据运算符的基本类别

    上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...

  7. 友晶Altera Cyclone V GX Starter Kit开发板使用ADC-第一篇

    1. 拿到板子在,做工很好,属于GX系列,GX应该是高速收发器 2. 去探究下GX是什么用途,大约有6个型号,这个板子是5CGXFX5,有77 LE逻辑单元,这个收发器不知道是什么?6个 3.125G ...

  8. 跟我一起学 Go 系列:gRPC 拦截器

    Go gRPC 学习系列: 跟我一起学Go系列:gRPC 入门必备 第一篇内容我们已经基本了解到 gRPC 如何使用 .对应的三种流模式.现在已经可以让服务端和客户端互相发送消息.本篇仍然讲解功能性的 ...

  9. 跟我一起学Go系列:Go gRPC 安全认证机制-SSL/TLS认证

    Go gRPC 系列: 跟我一起学Go系列:gRPC 拦截器使用 跟我一起学Go系列:gRPC 入门必备 第一篇入门说过 gRPC 底层是基于 HTTP/2 协议的,HTTP 本身不带任何加密传输功能 ...

随机推荐

  1. Feign禁用Hystrix

    1.完全禁用Hystrix配置yml文件feign.hystrix.enabled=false 2.部分禁用Hystrix2.1.FeignNoHystrixConfigure.java——编写Fei ...

  2. 了解Job和JobDeatil ,JobDataMap (三)

    一:定义 Job:实现任务逻辑的接口. JobDeatil:JobDeatil为Job提供了许多设置属性,以及JobDataMap成员变量属性,他用来储存特定的Job实例状态信息,调度器需要使用Job ...

  3. 负载均衡+session共享(memcached-session-manager实现)

    前言 先给大家伙拜个年,祝大家:新的一年健健康康,平平安安! 本文的形成参考了很多人的博客,最多的应该是青葱岁月兄的这篇博客,大家可以先去看下,熟悉一些内容,因为本文是直接实践,一些理论性的知识就需要 ...

  4. SpringBoot(2) Json框架 -- Jackson返回结果处理

    一.常用框架 阿里 fastjson,谷歌gson等 JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构 Ja ...

  5. PHP算法之快速排序、冒泡排序

    快速排序 <?php Class Sort { //快速排序 public function quickly($array) { //判断排序的数组是否大于1 if (count($array) ...

  6. 按值传递 vs. 按指针传递

    按值传递还是指针传递? 变量赋值有两种方式:按值传递.按"指针"传递(指针也常称为"引用").不同的编程语言赋值的方式不一样,例如Python是按"指 ...

  7. Linux 命令行下光标移动快捷键

    常用的快捷键: Ctrl + u 删除光标之前到行首的字符 Ctrl + k 删除光标之后到行尾的字符 Ctrl + a 光标移动到行首 Ctrl + e 光标移动到行尾 Ctrl + l 清屏 Al ...

  8. 【Mybatis】1、Mybatis拦截器学习资料汇总

    MyBatis拦截器原理探究 http://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.html [myBatis]Mybatis中的拦截器 ...

  9. 如何靠谱地查到Tomcat的版本

    Tomcat版本获取 一般找jdk的版本的时候,我们直接执行如下命令就可以得知了 java -version 但是Tomcat的版本呢? 除了Tomcat安装目录路径里包含的版本号,还有其他靠谱的获取 ...

  10. 深入理解Java 8 Lambda(语言篇)

    State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...