超详细的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信号也就拉高了。
在这里插入图片描述

  • 6
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
回答: 要进行PLL锁相环模型的仿真,可以按照以下步骤进行操作。首先,点击分析与综合按钮,然后分配引脚,将输出的钟分配到开发版的扩展引脚。接下来,编译整个工程。在使用modelsim软件进行仿真之前,需要添加altera_mf.v文件。可以右击桌面上Quartus II的快捷方式,打开文件所在位置,然后搜索找到altera_mf.v文件的位置,并将其复制到相应的文件夹下。接下来,可以在modelsim下创建一个工程,添加已存在的文件,包括ip_pll中的par文件夹下的ipcore文件。完成添加后,进行全部编译。然后,开始仿真,选中Design中work下面的tb文件,并运行仿真。如果出现错误缺少顶层文件,可以右击tb_ip_pll.v,添加所需的文件。重新开始仿真后,可以右击u_ip_pll,添加波形,并运行仿真。\[1\] 关于PLL锁相环的模型,它是一种反馈控制电路,利用外部输入的参考信号来控制环路内部震荡信号的频率和相位。它包括前置分频计数器N、相位频率检测器PFD、电荷泵Charge Pump、环路滤波器Loop Filter、压控振荡器VCO、反馈乘法器M以及后置分频器K和V。通过这些组件的协同工作,PLL锁相环可以实现信号的频率和相位的稳定控制。\[2\] 关于基于双二阶广义积分器的三相锁相环(DSOGI-PLL),它是一种锁相环的变种,具有较高的性能和稳定性。它采用双二阶广义积分器作为环路滤波器,可以实现更精确的相位和频率控制。这种锁相环模型在实际应用中具有很高的价值和可靠性。\[3\] #### 引用[.reference_title] - *1* *2* [FPGAPLL锁相环使用和仿真](https://blog.csdn.net/yijiancmy/article/details/104193149)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于双二阶广义积分器的三相锁相环(DSOGI-PLL)MATLAB仿真](https://blog.csdn.net/weixin_56691527/article/details/129898770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值