草庐IT

PLL简介及配置

明天也不一定早睡 2023-04-20 原文

目录

1. PLL简介

2. PLL创建

2.1 创建一个Quartus II项目。

2.2 创建PLL

2.3 配置PLL 

3.例化及仿真

3.1 例化

3.2 仿真

3.3 仿真结果


1. PLL简介

        PLL的英文全称是Phase Locked Loop,即锁相环,是一种反馈控制电路。PLL对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频分频相位偏移可编程占空比的功能PLL一般由模拟电路所实现

        PLL是FPGA重要的资源,不同FPGAPLL 是不一样。以我们开发板的Cyclone IV为例,它有两个PLL,每个PLL可以提供5路输出 

        PLL 的时钟输入可以是PLL 所在的 Bank 的时钟输入管脚或者其他 PLL 的输出,FPGA 内部产生的信号不能驱动PLLCyclone IV PLL 产生的时钟可以为单端时钟信号或差分时钟信号, 可以通过GCLK 网络直接驱动 FPGA 外部的 IO 口。

2. PLL创建

2.1 创建一个Quartus II项目。

2.2 创建PLL

 

        如果右侧没有IP Catalog框,首先点击IP Catalog,然后依次展开 Library→Clock;PLLs and Resets→ALTPLL。

 

        点击浏览文件夹,在项目文件夹IP路径下,创建PLL.v 。

        点击OK,IP创建成功。

2.3 配置PLL 

         上一步创建完成后,会弹出以下窗口。

开始配置。

第一步,设置输入时钟为50MHz,我们使用的是Cyclone IV 开发套件,晶振为50MHz,所以时钟为50Mhz。

第二步,设置时钟反馈模式为常规模式 ,再点击next。

时钟反馈模式一共分为以下几种:

  • In normal mode
  • In source-synchronous compensation mode
  • In zero delay buffer mode
  • With no compensation

标准模式:in normal mode
        普通模式使用在内部寄存器上相位保持一致,如果外部输出相位可能会超前或滞后于PLL内部时钟信号。

源同步模式:In source synchronous compensation Mode
        一般使用在数据接口,特别是高速的数据接口,数据和时钟来自于同一个数据源,可以保证数据和时钟之间的相位关系

零延迟缓冲模式:in zero delay buffer mode
        输入到寄存器相位会发生超前或滞后,而输出外部的时钟信号的相位保持一致。

无补偿模式:with no compensation
        pll不对任何时钟网络进行补偿,这样会有更好的抖动特性,但是不能确定延迟的时间。


创建一个复位信号输入,以及一个输出锁定,勾选如图所示。

此页面为配置一些pll需求,我们使用默认选项,继续点击next。

 

此页面为是否使用第二个时钟作为输出接口,因为PLL可作为时钟选择器,但本次实验我们暂时用不到第二个时钟输入,所以这里我们不勾选此选项,继续点击next。

 

 此页面为PLL动态重配置,本次实验不会使用到,我们继续点击next。

此页面为时钟输出设置,具体设置选项如图所示。

 本次实验我们一共做以下四个时钟输出:

c0:输出一个100MHz的时钟。

c1:输出一个分频一次,并偏移90度的时钟。

c2:输出一个占空比为25%的时钟。

 

c3:输出一个倍频三次,再分频两次的时钟。

此页面为仿真库配置,合理的去仿真需要的模型文件有哪些。 

如果要仿真IP核的话,必须要要有如图所示altera_mf文件

具体存放位置,可参考上图。然后接着点击next。

此页面为需要生成的文件的选择。

本次实验需要生成的文件为如图所示文件。

pll_inst.v:例化模板文件。

pll_bb.v :verilog黑箱文件。

 点击Yes生成pll.qip文件。

 此时左上角资源列表中,就生成了pll.v文件。

同时工程目录IP下也生成了对应的文件。

3.例化及仿真

3.1 例化

module IP_test (
	input 	clk		,
	input 	rst_n	,
	output 	c0_sig		,
	output 	c1_sig		,
	output 	c2_sig		,
	output 	c3_sig		,
	output  locked_sig
);


 pll	pll_inst (
 	.areset 	( ~rst_n )		,//ip复位高有效
 	.inclk0 	( clk )			,//输入时钟
 	.c0 		( c0_sig )		,//输出时钟
 	.c1 		( c1_sig )		,//输出时钟
 	.c2 		( c2_sig )		,//输出时钟
 	.c3 		( c3_sig )		,//输出时钟
 	.locked 	( locked_sig )	 //时钟输出锁--锁定不稳定时钟输出
 	);


endmodule

3.2 仿真

`timescale 1ns/1ns//单位1ns/精度1ns
module IP_test_tb();

reg 			clk   ;
reg 			rst_n ;

wire 			c0	  ;
wire 			c1	  ;
wire 			c2	  ;
wire 			c3	  ;
wire			locked;


always #10 clk = ~clk;//10ns翻转时钟

initial begin
	clk = 1'b1			  ;//时钟置0
	rst_n = 1'b1		  ;//复位信号置0
	#200.1		  		  ;//延迟200.1ns
	rst_n = 1'b0		  ;//复位信号置0
	#200		  		  ;//延迟200ns
	rst_n = 1'b1		  ;//复位信号置1
	#(20000);
	$stop				  ;//停止
end 
IP_test u_IP_test(
.clk		(clk)	,
.rst_n		(rst_n)	,

.c0_sig		(c0)	,
.c1_sig		(c1)	,
.c2_sig		(c2)	,
.c3_sig		(c3)	,
.locked_sig(locked)
);
endmodule 

3.3 仿真结果

  

有关PLL简介及配置的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  5. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  6. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  7. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  8. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  9. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

  10. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

随机推荐