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

📄 2.txt

📁 这是基于verilog语言写的
💻 TXT
字号:
K变模可逆计数器的VERILOG设计代码如下(其中作了部分注释,用斜体表示): 
module KCounter(Kclock,reset,dnup,enable, Kmode,carry,borrow);
input Kclock; /*系统时钟信号*/
input reset; /*全局复位信号*/
input dnup; /*鉴相器输出的加减控制信号*/sel
input enable; /*可逆计数器计数允许信号*/
input [2:0]Kmode; /*计数器模值设置信号*/mo
output carry; /*进位脉冲输出信号*/
output borrow; /*借位脉冲输出信号*/
reg [8:0]Count; /*可逆计数器*/
reg [8:0]Ktop; /*预设模值寄存器*/
/*根据计数器模值设置信号Kmode来设置预设模值寄存器的值*/
always @(Kmode)
begin
case(Kmode)
3'b001:Ktop<=7;
3'b010:Ktop<=15;
3'b011:Ktop<=31;
3'b100:Ktop<=63;
3'b101:Ktop<=127;
3'b110:Ktop<=255;
3'b111:Ktop<=511;
default:Ktop<=15;
endcase
end 
/*根据鉴相器输出的加减控制信号dnup进行可逆计数器的加减运算*/
always @(posedge Kclock or posedge reset)
begin
if(reset)
Count<=0; 
else if(enable)
begin
if(!dnup)
begin
if(Count==Ktop)
Count<=0;
else
Count<=Count+1;
end 
else
begin
if(Count==0)
Count<=Ktop;
else
Count<=Count-1;
end
end
end 
/*输出进位脉冲carry和借位脉冲borrow*/
assign carry=enable&(!dnup) &(Count==Ktop);
assign borrow=enable&dnup& (Count==0);
endmodule 

脉冲加减电路的设计实现
脉冲加减电路完成环路的频率和相位调整,可以称之为数控振荡器。当没有进位/借位脉冲信号时,它把外部参考时钟进行二分频;当有进位脉冲信号CARRY时,则在输出的二分频信号中插入半个脉冲,以提高输出信号的频率;当有借位脉冲信号BORROW时,则在输出的二分频信号中减去半个脉冲,以降低输出信号的频率。VERILOG设计代码如下:
module IDCounter(IDclock,reset,inc,dec,IDout);
input IDclock; /*系统时钟信号*/
input reset; /*全局复位信号*/
input inc; /*脉冲加入信号*/
input dec; /*脉冲扣除信号*/
output IDout; /*调整后的输出信号*/
wire Q1, Qn1, Q2, Qn2, Q3, Qn3;
wire Q4, Qn4, Q5, Qn5, Q6, Qn6;
wire Q7, Qn7, Q8, Qn8, Q9, Qn9;
wire D7, D8; 
FFD FFD1(IDclock, reset, inc, Q1, Qn1);
FFD FFD2(IDclock, reset, dec, Q2, Qn2); 
FFD FFD3(IDclock, reset, Q1, Q3, Qn3);
FFD FFD4(IDclock, reset, Q2, Q4, Qn4); 
FFD FFD5(IDclock, reset, Q3, Q5,Qn5);
FFD FFD6(IDclock, reset, Q4, Q6,Qn6);
assign D7=((Q9 & Qn1 & Q3) (Q9 & Q5 & Qn3));
assign D8=((Qn9 & Qn2 & Q4) (Qn9 & Q6 & Qn4));
FFD FFD7(IDclock, reset, D7, Q7, Qn7 );
FFD FFD8(IDclock, reset, D8, Q8, Qn8);
JK FFJK(IDclock, reset, Qn7, Qn8, Q9, Qn9);
assign IDout = (!Idclock)& Q9;
endmodule
其中,FFD为D触发器,JK为JK触发器。
当环路的四个主要部件全部设计完毕,我们就可以将他们连接成为一个完整的DPLL,进行仿真、综合、验证功能的正确性。

DPLL的FPGA实现

⌨️ 快捷键说明

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