锁相环的设计以verilog程序编写有不同的方式,此次只是简单的进行设计,但与网上的大部分版本不同。
采用鉴频鉴相器,K模加减计数器,脉冲加减计数器式数控振荡器,小数分频器。
鉴频鉴相器的程序如下:
module DPLL_PFD(fin1,fin2,up,down);
input fin1,fin2;
output up,down;
wire reset;
reg up,down;
always@(posedge fin1 or negedge reset )
begin//实现D触发器的功能
if(reset==0) begin up=0; end
else begin up<=1;end
end
always@(posedge fin2 or negedge reset )
begin//实现D触发器的功能
if(reset==0) begin down<=0; end
else begin down<=1;end
end
assign reset=~(up&down);
endmodule
K模加减计数器的设计程序如下
module DPLL_2KCOUNT1(up,down,reset,k,kclock,carry,borrow);
output carry,borrow;//输出carry,borrow
input[3:0] k; //输入四比特位k
input reset,kclock;//输入se,reset,kclock
input up,down;
reg[19:0] out;
reg[19:0] mo; //中间变量out,mo
always @(k)
begin
case(k) //给定k,得变模可逆计数器的模mo
4'b0001:mo<=7;
4'b0010:mo<=15;
4'b0011:mo<=31;
4'b0100:mo<=63;
4'b0101:mo<=127;
4'b0110:mo<=255;
4'b0111:mo<=511;
4'b1000:mo<=1023;
4'b1001:mo<=2047;
4'b1010:mo<=4095;
4'b1011:mo<=8191;
4'b1100:mo<=16383;
4'b1101:mo<=32767;
4'b1110:mo<=65535;
4'b1111:mo<=131072;
default:mo<=7;
endcase
end