fpga实操训练(锁相环pll)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        锁相环pll是fpga区别于stm32、soc很重要的一个特征。通常来说,输入的晶振一般是25m、50m这样的,不一定能满足功能的开发。这个时候就需要对时钟进行倍频,或者分频处理。fpga上面配置pll非常简单,就算不懂得pll的实现原理,也完全也不影响自己的使用。

        为了验证pll有没有成功,我们可以通过led点灯的方法,只通过修改clk0的输出,就可以判断pll是不是真的发挥了作用。

1、准备led_test项目

        led_test项目的创建和之前其他fpga测试项目一样,没有什么特别之处。

2、配置pll

        首先从IP Catalog中添加ALTPLL,

fpga实操训练(锁相环pll)_第1张图片

         选择ALTPLL之后,单击弹出窗口,保存为pll.v文件,

fpga实操训练(锁相环pll)_第2张图片

         输入input时钟,我们的时钟是50M,所以这里修改成50,

fpga实操训练(锁相环pll)_第3张图片

         一路单击下去,直到遇到第1个输出时钟,设置为25M,

fpga实操训练(锁相环pll)_第4张图片

         单击下一步,第2个时钟设置为50M,

fpga实操训练(锁相环pll)_第5张图片

         继续单击,第3个时钟设置为75M,

fpga实操训练(锁相环pll)_第6张图片

         单击下一步,第4个输出时钟为100M,

fpga实操训练(锁相环pll)_第7张图片

        单击下一步,配置最后一个时钟为200M,

fpga实操训练(锁相环pll)_第8张图片

         单击到最后一步,直接Finish,

fpga实操训练(锁相环pll)_第9张图片

        这个时候一般还会提醒你,是不是要把对应的文件保存在当前项目中,直接确认即可。

fpga实操训练(锁相环pll)_第10张图片

         此时不出意外的话,pll.v应该已经创建好了。可以看看file视图,有没有对应的文件,

fpga实操训练(锁相环pll)_第11张图片

3、准备led_test.v文件

        为了判断生成的pll有没有效果,还需要一个led_test.v文件,内容如下所示。注意,需要将verilog文件设置为top entry。文件中clk只是一个输入源,posedge中用到的clock已经变成了clk0。



module led_test(clk ,rst, led);
 
`define MAX_NUM 32'd4999_9999
 
// input signal
input clk;
input rst;
 
// output signal
output led;
 
// signal type
wire clk;
wire rst;
reg led;

wire clk0;
wire lock;
 
// inner signal
reg[31:0] count;


pll pll0(
	.areset(!rst),
	.inclk0(clk),
	.c0(),
	.c1(clk0),
	.c2(),
	.c3(),
	.c4(),
	.locked(lock));

 
// count register
always@(posedge clk0 or negedge rst)
	if(!rst)
		count <= 32'b0;
	else if(count == `MAX_NUM)
		count <= 32'b0;
	else
		count <= count + 1'b1;

 
// led data
always@(posedge clk0 or negedge rst)
	if(!rst)
		led <= 1'b1;
	else if(count == `MAX_NUM)
		led <= ~led;

 
endmodule
 

4、综合verilog文件后,没有问题的话,你会看到pll资源确实被占用了,

fpga实操训练(锁相环pll)_第12张图片

5、开始进行pin脚的bind处理,

fpga实操训练(锁相环pll)_第13张图片

6、开始对比实验测试

        可以先将clk0绑定到c1上面,这个时候输出的应该是50M。那我们可以看下50M的时候,led灯的闪烁是什么情况。有了这么一个基础认知之后,就可以把clk0分别绑定到c0和c4上。分析下,是不是绑定到c0的时候,灯变慢了,bind到c4的时候灯变快了。如果确实看到了这样的效果,那说明pll确实发挥了作用,实现了倍频和分频的功能。

fpga实操训练(锁相环pll)_第14张图片

         在这过程中,如果需要重新修改频率,只需要在hierarchy视图下,单击pll:pll0即可重新配置pll。目前测试下来,发现最多可以倍频8倍,达到400M,

fpga实操训练(锁相环pll)_第15张图片

         但是如果是500M的话,就无法成功配置下去了。

fpga实操训练(锁相环pll)_第16张图片

你可能感兴趣的:(fpga实操训练,fpga开发)