IP核之PLL

I P核

IP-PLL

  1. 概述
  • 锁相环(phase Locked loop)
  • 提供了ALTPLL
  1. 配置
  2. 应用

瞎搞之乱写: 实现控制两个LED闪烁,分别为1S、2S

 
 module Verilog_to_PLL
 (
	CLK_50M,RST_N,LED1,LED2
 );
 
 input CLK_50M;
 input RST_N;
 output LED1;
 output LED2;
 wire CLK_1M;
 
 reg[20:0] time_cnt;
 reg[20:0] time_cnt_n;
 reg led_reg;
 reg led_reg_n;
 reg [2:0] Time_2S;
 reg [2:0] Time_2S_n;
 reg led1_reg;
 reg led1_reg_n;
 parameter SET_TIME_1s=20'd1000_000;
 
 PLL	PLL_inst (
	.inclk0 ( CLK_50M ),
	.c0 (  ),
	.c1 (  ),
	.c2 (CLK_1M)
	);
	
//计数时序	
always@ (posedge CLK_1M or negedge RST_N)
begin
	if(!RST_N)
		time_cnt<=20'h0;
	else
		time_cnt<=time_cnt_n;	
end
//计数组合

always @(*)
begin
	if(time_cnt==SET_TIME_1s)
		time_cnt_n=20'h0;
	else
		time_cnt_n=time_cnt+20'h1;
end



//灯时序
always@ (posedge CLK_1M or negedge RST_N)
begin
	if(!RST_N)
		led_reg<=1'h0;
	else
		led_reg<=led_reg_n;	
end
//灯组合
always@ (*)
begin
	if(time_cnt==SET_TIME_1s)
		led_reg_n=~led_reg;
	else
		led_reg_n=led_reg;
end


//计数时序	
always@ (posedge CLK_1M or negedge RST_N)
begin
	if(!RST_N)
		Time_2S<=2'h0;
	else 
		Time_2S<=Time_2S_n;	
end
//计数组合

always @(*)
begin
	if(Time_2S==2'd2)
		Time_2S_n=2'd0;
	else if(time_cnt==SET_TIME_1s)
		Time_2S_n=Time_2S+2'd1;
	else
		Time_2S_n=Time_2S;
end


//灯时序
always@ (posedge CLK_1M or negedge RST_N)
begin
	if(!RST_N)
		led1_reg<=1'h0;
	else
		led1_reg<=led1_reg_n;	
end
always@ (*)
begin
	if(Time_2S==20'd2)
		led1_reg_n=~led1_reg;
	else
		led1_reg_n=led1_reg;
end




assign LED1=led_reg;
assign LED2=led1_reg;

endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值