有大神帮写一套试卷不,4道题。内容都是相锁环(PLL, dpll 锁相环)方面的。一题50块。加我QQ76849292.

随着数字电路技术的发展,数字锁相环在调制解调、频率合成、FM 立体声解码、彩色副载波同步、图象处理等各个方面得到了广泛的应用。数字锁相环不仅吸收了数字电路可靠性高、体积小、价格低等优点,还解决了模拟锁相环的直流零点漂移、器件饱和及易受电源和环境温度变化等缺点,此外还具有对离散样值的实时处理能力,已成为锁相技术发展的方向。
所谓数字PLL,就是指应用于数字系统的PLL,也就是说数字PLL中的各个模块都是以数字器件来实现的,是一个数字的电路。 数字锁相环的优点是电路最简单有效,可采用没有压控的晶振,降低了成本,提高了晶振的稳定性。但缺点是和模拟锁相环一样,一旦失去基准频率,输出频率立刻跳回振荡器本身的频率;另外还有一个缺点,就是当进行频率调整的时候,输出频率会产生抖动,频差越大,抖动会越大于密,不利于某些场合的应用。随着大规模、超高速的数字集成电路的发展,为数字锁相环路的研究与应用提供了广阔空间。由于晶体振荡器和数字调整技术的加盟,可以在不降低振荡器的频率稳定度的情况下,加大频率的跟踪范围,从而提高整个环路工作的稳定性与可靠性。
锁相环是一个相位反馈控制系统,在数字锁相环中,由于误差控制信号是离散的数字信号,而不是模拟电压,因而受控的输出电压的改变是离散的而不是连续的;此外,环路组成部件也全用数字电路实现,故而这种锁相环就称之为全数字锁相环(简称PLL)。全数字锁相环主要由数字鉴相器、可逆计数器、频率切换电路及N分频器四部分组成。其中可逆计数器及N分频器的时钟由外部晶振提供。不用VCO,可大大减轻温度及电源电压变化对环路的影响。同时,采用在系统可编程芯片实现有利于提高系统的集成度和可靠性。
一阶全数字锁相环主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。
当环路失锁时,异或门鉴相器比较输入信号(fin)和输出信号(fout)之间的相位差异,并产生K变模可逆计数器的计数方向控制信号(dnup); K变模可逆计数器根据计数方向控制信号(dnup)调整计数值,dnup为高进行减计数,并当计数值到达0时,输出借位脉冲信号(borrow);为低进行加计数,并当计数值达到预设的K模值时,输出进位脉冲信号(carryo);脉冲加减电路则根据进位脉冲信号(carryo)和借位脉冲信号(borrow)在电路输出信号(idout)中进行脉冲的增加和扣除操作,来调整输出信号的频率;重复上面的调整过程,当环路进入锁定状态时,异或门鉴相器的输出se为一占空比50%的方波,而K变模可逆计数器则周期性地产生进位脉冲输出carryo和借位脉冲输出borrow,导致脉冲加减电路的输出idout周期性的加入和扣除半个脉冲。这样对于输出的频率没有影响,也正是基于这种原理,可以把等概率出现的噪声很容易的去掉。
全数字锁相环的verilog源代码,仿真已通过
module dpll(reset,clk,signal_in,signal_out,syn);
parameter para_K=4;
parameter para_N=16;
input signal_
output signal_
reg signal_
reg add_del_
reg [7:0]up_down_
reg [2:0]cnt8;
reg [8:0]cnt_N;
reg dpout_
reg [8:0]cnt_dpout_
reg [8:0]cnt_dpout_
/******phase detector*****/
always@(signal_in or signal_out)
&&& dpout&=signal_in^signal_
/******synchronization establish detector*****/
always@(posedge clk or negedge reset)
&&&&&&& if(!reset)&&& dpout_delay&='b0;
&&&&&&& else&&&&&&&&& dpout_delay&=
always@(posedge clk or negedge reset)
&&&&& if(!reset)
&&&&&&&&& begin
&&&&&&&&&&& cnt_dpout_high&='b0; cnt_dpout_low&='b0;
&&&&&&&&& end
&&&&& else if(dpout)
&&&&&&&&&&&&&&& if(dpout_delay==0)& cnt_dpout_high&='b0;
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&& if(cnt_dpout_high==8'b)& cnt_dpout_high&='b0;
&&&&&&&&&&&&&&&&&&& else& cnt_dpout_high&=cnt_dpout_high+1;
&&&&& else if(!dpout)
&&&&&&&&&&&&&&&& if(dpout_delay==1)& cnt_dpout_low&='b0;
&&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&&& if(cnt_dpout_low==8'b)& cnt_dpout_low&='b0;
&&&&&&&&&&&&&&&&&&&& else& cnt_dpout_low&=cnt_dpout_low+1;
always@(posedge clk or negedge reset)
&&&&&&&&& if(!reset)& syn&='b0;
&&&&& else if((dpout&&!dpout_delay)||(!dpout&&dpout_delay))
&&&&&&&&&& if(cnt_dpout_high[8:0]-cnt_dpout_low[8:0]&=4||cnt_dpout_low[8:0]-cnt_dpout_high[8:0]&=4)& syn&='b1;
&&&&&&&&&& else& syn&='b0;
/****up down couter with mod=K****/
always@(posedge clk or negedge reset)
&& if(!reset)
&&&&&& delclk&='b0;
&&&&&& addclk&='b0;
&&&&&& up_down_cnt&='b;
&&&&& if(!dpout)
&&&&&& begin
&&&&&&& delclk&='b0;
&&&&&&& if(up_down_cnt==para_K-1)
&&&&&&&&& begin
&&&&&&&&&&& up_down_cnt&='b;
&&&&&&&&&&& addclk&='b0;
&&&&&&&&& end
&&&&&&& begin
&&&&&&&&&& up_down_cnt&=up_down_cnt+1;
&&&&&&&&&& addclk&='b0;
&&&&&&& end
& addclk&='b0;
&&&&&&&&&& if(up_down_cnt=='b0)
&&&&&&&&&&&& begin
&&&&&&&&&&&&&& up_down_cnt&=para_K-1;
&&&&&&&&&&&&&& delclk&='b0;
&&&&&&&&&&&& end
&&&&&&&&&&& else
&&&&&&&&&&&& if(up_down_cnt==1)
&&&&&&&&&&&&&& begin
&&&&&&&&&&&&&&&& delclk&='b1;
&&&&&&&&&&&&&&&& up_down_cnt&=up_down_cnt-1;
&&&&&&&&&&&&&& end
&&&&&&&&&&&& else
&&&&&&&&&&&&&&&& up_down_cnt&=up_down_cnt-1;
&&&&&&&&&&&& end
&&&&&&&&& end
/******add and delete clk*****/
always@(posedge clk or negedge reset)
& if(!reset)
&&&& begin
&&&&&& cnt8&='b000;
&&&& begin
&&&&& if(cnt8=='b111)
&&&& begin
&&&&& cnt8&='b000;
&&& if(addclk&&!syn)
&&&&&& begin
&&&&&&&& cnt8&=cnt8+2;
&&&&&& end
&&&&&& if(delclk&&!syn)
&&&&&&&&& cnt8&=cnt8;
&&&&&& else
&&&&&&&&& cnt8&=cnt8+1;
always@(cnt8 or reset)
if(!reset)
& add_del_clkout&='b0;
& add_del_clkout&=cnt8[2];
/******counter with mod=N******/
always@(posedge add_del_clkout or negedge reset)
& if(!reset)
&&& cnt_N&='b0000;
&&& signal_out&='b0;
&&&& if(cnt_N==para_N-1)
&&&&&& begin
&&&&&&&& cnt_N&='b0000;
&&&&&&&& signal_out&='b0;
&& if(cnt_N==(para_N-1)/2)
&&&& begin
&&&&&& signal_out&='b1;
&&&&&& cnt_N&=cnt_N+1;
&&&&& cnt_N&=cnt_N+1;
&& DPLL由& 鉴相器& 模K加减计数器& 脉冲加减电路& 同步建立侦察电路 模N分频器 构成.
整个系统的中心频率(即signal_in和signal_out的码速率的2倍)
为clk/8/N.& 模K加减计数器的K值决定DPLL的精度和同步建立时间,K越大,则同步建立时间长,同步精度高.反之则短,低.
阅读(...) 评论()}

我要回帖

更多关于 dpll 锁相环 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信