⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fq_divider.v

📁 使用virlog语言编写的一个 锁相环的程序。可直接在cpld中应用。
💻 V
字号:
`define logb2(n) ((n) <= (1<<0) ? 0 : (n) <= (1<<1) ? 1 :\
                   (n) <= (1<<2) ? 2 : (n) <= (1<<3) ? 3 :\
                   (n) <= (1<<4) ? 4 : (n) <= (1<<5) ? 5 :\
                   (n) <= (1<<6) ? 6 : (n) <= (1<<7) ? 7 :\
                   (n) <= (1<<8) ? 8 : (n) <= (1<<9) ? 9 :\
                   (n) <= (1<<10) ? 10 : (n) <= (1<<11) ? 11 :\
                   (n) <= (1<<12) ? 12 : (n) <= (1<<13) ? 13 :\
                   (n) <= (1<<14) ? 14 : (n) <= (1<<15) ? 15 :\
                   (n) <= (1<<16) ? 16 : (n) <= (1<<17) ? 17 :\
                   (n) <= (1<<18) ? 18 : (n) <= (1<<19) ? 19 :\
                   (n) <= (1<<20) ? 20 : (n) <= (1<<21) ? 21 :\
                   (n) <= (1<<22) ? 22 : (n) <= (1<<23) ? 23 :\
                   (n) <= (1<<24) ? 24 : (n) <= (1<<25) ? 25 :\
                   (n) <= (1<<26) ? 26 : (n) <= (1<<27) ? 27 :\
                   (n) <= (1<<28) ? 28 : (n) <= (1<<29) ? 29 :\
                   (n) <= (1<<30) ? 30 : (n) <= (1<<31) ? 31 : 32) 

module fq_divider
	(
		clk,
		clrn,
		ena,
		q
	);
		
	input clk;
	input clrn;
	input ena;
	output q;
	
	parameter COUNTER = 55;
//	`include "log2.h"
	
/*	function integer log2;
		input integer num;
		integer i;
		log2 = 0;
		begin
			for (i = 0; num < 1; i = i + 1)
			begin
				log2 = log2 + 1;
				num = num / 2;
			end
		end
	endfunction */
	parameter width = `logb2(COUNTER);

	reg [width-1:0] cnt;
	reg q;
	
	always @(posedge clk or negedge clrn)
	begin
		if (clrn == 1'b0)
			cnt <= 'b0;
		else if (ena)
		begin
			if (cnt < COUNTER / 2 - 1)
			begin
				q <= 1'b0;
				cnt <= cnt + 1;
			end
			else if (cnt < COUNTER-1)
			begin
				q <= 1'b1;
				cnt <= cnt + 1;
			end
			else
			begin
				q<= 1'b0;
				cnt <= 'b0;
			end
		end
	end
	
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -