超详细的Xilinx ISE的PLL锁相环IP核的使用教程与结果分析(ISE与Quartus PLL锁相环使用的区别,以及使用ISE倍频时遇到的问题)

Xilinx ISE的PLL锁相环IP核的使用(ISE与Quartus PLL锁相环使用的区别)

ISE PLL IP核的使用

这次使用的目的是产生25MHz,50MHz,75MHz,100MHz的时钟频率,输入时钟频率为50MHz

IP核的设置

PLL 所在的IP核位置为 FPGA Features and Deaign->Clocking->Clocking Wizard
这个就是PLL IP核的位置
在这里插入图片描述
关于IBGFG等Xilinx原语的使用与介绍见链接
链接: [link] (https://www.cnblogs.com/mouou/p/6548898.html).
链接:link.
在这里插入图片描述
根据自己的需要去设置输出频率和占空比
在这里插入图片描述
第四页一直默认就好
在这里插入图片描述
第五页根据自己的需要去修改输入输出端口的名字

代码

module pll_test(
input	wire	clk,
input	wire	rst_n,
output	wire	clkout1,
output	wire	clkout2,
output	wire	clkout3,
output	wire	clkout4
);

wire locked;
IBUFG	IBUFG_INST
(
	.O(clk_bufg),
	.I(clk)
);

 pll pll_inst
   (// Clock in ports
    .clk_in(clk_bufg),      // IN
    // Clock out ports
    .clk_out1(clkout1),     // OUT
    .clk_out2(clkout2),     // OUT
    .clk_out3(clkout3),     // OUT
    .clk_out4(clkout4),     // OUT
    // Status and control signals
    .reset(~rst_n),// IN
    .locked(locked));      // OUT

endmodule

测试文件

module tb_pll;

	// Inputs
	reg clk;
	reg rst_n;

	// Outputs
	wire clkout1;
	wire clkout2;
	wire clkout3;
	wire clkout4;

	// Instantiate the Unit Under Test (UUT)
	pll_test uut (
		.clk(clk), 
		.rst_n(rst_n), 
		.clkout1(clkout1), 
		.clkout2(clkout2), 
		.clkout3(clkout3), 
		.clkout4(clkout4)
	);

	initial begin
		// Initialize Inputs
		clk = 0;
		rst_n = 1;

		// Wait 100 ns for global reset to finish
		#100;
        rst_n=0;
		// Add stimulus here

	end

always	#10 clk = ~clk;
   
endmodule

ucf文件的书写

## 
NET clk LOC = T8 |TNM_NET = sys_clk_pin | IOSTANDARD = "LVCMOS33";
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz;
##

##
NET rst_n 				LOC = L3 | IOSTANDARD = "LVCMOS33";
##

NET clkout1					LOC = K16 | IOSTANDARD = "LVCMOS33";
NET clkout2					LOC = J16 | IOSTANDARD = "LVCMOS33";
NET clkout3					LOC = L16 | IOSTANDARD = "LVCMOS33";  
NET clkout4					LOC = k15 | IOSTANDARD = "LVCMOS33";


PIN "pll_inst/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE ;
PIN "pll_inst/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE ;
PIN "pll_inst/clkout3_buf.O" CLOCK_DEDICATED_ROUTE = FALSE ;
PIN "pll_inst/clkout4_buf.O" CLOCK_DEDICATED_ROUTE = FALSE ;

代码分析

  1. 可以看到在程序设计的时候使用了IBUFG的原语
    IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG 单元,否则在布局布线时会报错。
    使用IBUFG的时候就是例化这个模块。它包含一个输出一个输入,输入其实就是指最开始的系统时钟,输出是我们后面输入到锁相环的时钟信号。
    使用ISE的锁相环与Quartus的锁相环的区别就是 ise使用了IBUFG原语而Quartus没有
    2.复位信号的设置
    对于PLL的锁相环其复位信号是高电平有效,但对于开发板上的复位按键是低电平有效,所以这里在使用的时候还加上了一个了取反。

使用 ISE 倍频时遇到的问题

当时,将信号倍频以后对信号进行仿真,发现locked这个信号一直无法拉高,且显示的一直都是红色高阻态,这显然是错误的,因为locked信号表征的信号是否可以稳定输出。后来检查发现应该是测试文件的问题,在测试文件中的复位信号以前一直用的是20ns之后拉低,后来发现就出现了如上的错误。后来将复位信号变为100ns之后拉低输出的信号就是正确的,locked信号也就拉高了。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值