xilinx FPGA普通IO作PLL时钟输入
本帖转自于 :http://www.cnblogs.com/jamesnt/p/3535073.html
在xilinx ZC7020的片子上做的实验;
[结论]
普通IO不能直接作PLL的时钟输入,专用时钟管脚可以;
普通IO可以通过BUFG再连到PLL的时钟输入上,但要修改PLL的设置 input clk的选项中要选择"No Buffer";
具体内部布局分配可以通过 Xilinx的FPGA Editor来查看,
ZYNQ的时钟管理也和之前的片子略有不同,之后在另一篇介绍,相关文档 <ug472_7Series_Clocking.pdf>
[Demo1]
// demo1 two bufg connect
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
pll0 u_pll0(
.CLK_IN1(clkin_w), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
锁相环PLL默认输入前端有个BUFG单元,而两个BUFG不能相连,所以会报这样的错:
ERROR:NgdBuild:770 - IBUFG 'u_pll0/clkin1_buf' and BUFG 'BUFG_inst' on net
'clkin_w' are lined up in series. Buffers of the same direction cannot be
placed in series.
ERROR:NgdBuild:924 - input pad net 'clkin_w' is driving non-buffer primitives:
[Demo2]
// demo2 regular io directly connect to PLL
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
/*
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
*/
pll0 u_pll0(
.CLK_IN1(clk), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
普通IO不能直接做锁相环的输入,所以会报这样的错:
ERROR:Place:1397 - A clock IOB / MMCM clock component pair have been found that
are not placed at an optimal clock IOB / MMCM site pair. The clock IOB
component <clk> is placed at site <A18>. The corresponding MMCM component
<u_pll0/mmcm_adv_inst> is placed at site <MMCME2_ADV_X0Y0>. The clock IO can
use the fast path between the IOB and the MMCM if the IOB is placed on a
Clock Capable IOB site that has dedicated fast path to MMCM sites within the
same clock region. You may want to analyze why this problem exists and
correct it. If this sub optimal condition is acceptable for this design, you
may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote this
message to a WARNING and allow your design to continue. However, the use of
this override is highly discouraged as it may lead to very poor timing
results. It is recommended that this error condition be corrected in the
design. A list of all the COMP.PINs used in this clock placement rule is
ERROR:Pack:1654 - The timing-driven placement phase encountered an error.
如果有ucf中加上这句约束:
NET clk CLOCK_DEDICATED_ROUTE = FALSE;
依旧会报错,在ZYNQ7000系列,这样还是通不过,如下:
ERROR:PhysDesignRules:2256 - Unsupported MMCME2_ADV configuration. The signal
u_pll0/clkin1 on the CLKIN1 pin of MMCME2_ADV comp u_pll0/mmcm_adv_inst with
COMPENSATION mode ZHOLD must be driven by a clock capable IOB.
ERROR:Pack:1642 - Errors in physical DRC.
使用普通的IO,再连接bufg来连到时钟线上,
仍会报这样的错误,因为还是两bufg相连了:
ERROR:NgdBuild:770 - IBUFG 'u_pll0/clkin1_buf' and BUFG 'BUFG_inst' on net
'clkin_w' are lined up in series. Buffers of the same direction cannot be
placed in series.
ERROR:NgdBuild:924 - input pad net 'clkin_w' is driving non-buffer primitives:
[Demo3]
// dem3 regular io with BUFG then connect to PLL which with"No Buffer" setting
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
pll0 u_pll0(
.CLK_IN1(clkin_w), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
PLL的设置如下图,

这样普通IO就可以当作PLL的时钟输入了,顺利产生bit;
时钟还是最好用全局时钟IO,画图时一定要注意:)
zc702里没有global clock的概念了,但有了很多专用时钟脚,用起来一样;
xilinx FPGA普通IO作PLL时钟输入的更多相关文章
- xilinx FPGA全局时钟资源的使用
1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了 ...
- Xilinx FPGA LVDS应用
最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...
- Xilinx FPGA复位逻辑处理小结(转)
Xilinx FPGA复位逻辑处理小结 1. 为什么要复位呢? (1)FPGA上电的时候对设计进行初始化: (2)使用一个外部管脚来实现全局复位,复位作为一个同步信号将所有存储单元设置为一个已知的状态 ...
- Xilinx FPGA全局介绍
Xilinx FPGA全局介绍 现场可编程门阵列 (FPGA) 具有诸多特性,无论是单独使用,抑或采用多样化架构,皆可作为宝贵的计算资产:许多设计人员并不熟悉 FPGA,亦不清楚如何将这类器件整合到设 ...
- 基于Xilinx FPGA的视频图像采集系统
本篇要分享的是基于Xilinx FPGA的视频图像采集系统,使用摄像头采集图像数据,并没有用到SDRAM/DDR.这个工程使用的是OV7670 30w像素摄像头,用双口RAM做存储,显示窗口为320x ...
- Xilinx FPGA结构
FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越 ...
- 330-支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台
支持PXIE带FMC接口的Xilinx FPGA XC7K325T PCIeX8 接口卡平台 一.板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_ ...
- Xilinx FPGA引脚txt文件导入excel中
需求 为了把xilinx FPGA的官方引脚文件txt转成excel文件(实际官网中有对应的csv文件就是excel文件了...) xilinx FPGA引脚地址:https://china.xili ...
- Xilinx FPGA开发环境vivado使用流程
Xilinx FPGA开发环境vivado使用流程 1.启动vivado 2016.1 2.选择Create New Project 3.指定工程名字和工程存放目录 4.选择RTL Project 5 ...
随机推荐
- Spring Boot 启动原理分析
https://yq.aliyun.com/articles/6056 转 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启 ...
- linux —— 学习笔记(环境变量的设置)
目录 环境变量概要 与环境变量相关的文件 设置环境变量 注意以及相关 1.环境变量概要 环境变量,简单来说,是储存了环境信息的变量.它可以让你在不指明全部路径的情况下执行某脚本或某应用程序,比如在 l ...
- MacBook Pro 下Bash Shell 利用Alias 简化命令
编辑~/.bashrc或者~/.bash_profile alias go="xxxxx" 返回bash,执行 source ~/.bash_profile 即可. 我的常用别名 ...
- 你真的理解Java的this和super吗?
你不知道的this 很多介绍java的书籍都说this指该对象本身.我们来看下面代码: class Base{ private int i = 3; public Base() { this.disp ...
- Linux Terminal 控制终端的使用
1. Open new Terminal:Ctrl + Alt + T 或者 Ctrl + Shift + N 2. Open Tab:Ctrl + Shift + T 3. Close Tab:Ct ...
- Java基础知识强化之IO流笔记21:FileInputStream读取数据
1. 字节输入流的操作步骤: (1)创建字节输入流的对象 (2)调用read()方法读取数据,并把数据显示到控制台 (3)关闭字节输入流的对象资源 2. FileInputStream构造: File ...
- Android运行时注解
Android的注解有编译时注解和运行时注解,本文就介绍下运行时注解. 其实非常简单,直接上代码:本文主要是替代传统的findViewById()的功能,就是在我们Activity中不需要再使用fin ...
- Day4 - Python基础4 迭代器、装饰器、软件开发规范
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- python的局部变量和全局变量
#coding=utf-8#全局变量与局部变量 #作用域def func(): i=8#print i# print object# j=9# print j #局部变量def func(a): i= ...
- log4net 生成多个空文件问题
使用 log4net 的伙伴,相信很多人会遇到我现在这个问题 ,一般项目需求,便于管理和查找原因,会让项目的日志文件分类记录,然而会出现很多空日志, 出现这个问题的原因通常是我们web.config配 ...