FPGA中的PLL锁相环概述

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cyclone系列FPGA具有锁相环(PLL)和全局时钟网络,PLL具有时钟的倍频、分频、相位偏移、可编程占空比和外部时钟输出。

每一个Cyclone的FPGA包括多达两个的PLL,如下表所示:

下面用实例的方式说明PLL的用法;

通常的接口如下表,作用

实验要求:(1)开发板的频率为50Mhz。将其倍频为100Mhz,和200Mhz,并且仿真运行。

(2)将倍频后频率输出在开发板上LED上观察两个灯

实验步骤:

(1)建立一个工程,工程名为PLL_prj;

(2 )新建一个verilog文件,开始代码的编写;

module PLL_prj(clk, rst_n, clkc0, clkc1);

input clk; //时钟输入(50M)

input rst_n; //复位

wire clkc0; //100M

wire clkc1; // 200M

wire locked; //检测是否有效

endmodule

(3)在软件中设置锁相环

之后就会弹出来如下图所示页面

上边有5个选项卡(不同版本可能有点差别)第一个里面如下

创建上面说到复位和检测

第二页默认就可以了

第三页

不同的器件能够建立输出个数也不一样这里我们用前俩个

一些文件的输出

配置完成之后

到这个时候就已经在软件中配置好了PLL 接下来就是列化了

打开文件复制里面的代码到刚开始建立的.v文件中修改补充完全代码如下:

module PLL_prj(

clk,

rst_n,

led0,

led1

);

input clk; //50M

input rst_n; //rest

output led0;

output led1;

wire clkc0; //100M

wire clkc1; //200M

wire locked;

PLL_ctrl PLL_ctrl_inst (

.areset ( !rst_n ),

.inclk0 ( clk),

.c0 ( clkc0),

.c1 ( clkc1 ),

.locked ( locked )

);

reg[23:0] cnt0;

reg[24:0] cnt1;

always @(posedge clkc0 or negedge rst_n)

if(!rst_n) cnt0<=24'd0;

else cnt0<=cnt0+1'b1;

assign led0=cnt0[23]

always @(posedge clkc1 or negedge rst_n) if(!rst_n) cnt1<=24'd0;

else cnt1<=cnt1+1'b1;

assign led1=cnt1[24]

endmodule

下载到开发板中;

相关文档
最新文档