verilog编写的全数字锁相环的代码.doc_第1页
verilog编写的全数字锁相环的代码.doc_第2页
verilog编写的全数字锁相环的代码.doc_第3页
verilog编写的全数字锁相环的代码.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全数字锁相环的verilog源代码,仿真已通过module dpll(reset,clk,signal_in,signal_out,syn);parameter para_K=4;parameter para_N=16;input reset;input clk;input signal_in;output signal_out;output syn;reg signal_out;reg dpout;reg delclk;reg addclk;reg add_del_clkout;reg 7:0up_down_cnt;reg 2:0cnt8;reg 8:0cnt_N;reg syn;reg dpout_delay;reg 8:0cnt_dpout_high;reg 8:0cnt_dpout_low;/*phase detector*/always(signal_in or signal_out) begin dpout=signal_insignal_out; end/*synchronization establish detector*/always(posedge clk or negedge reset) begin if(!reset) dpout_delay=b0; else dpout_delay=dpout; endalways(posedge clk or negedge reset) begin 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=8b11111111) 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=8b11111111) cnt_dpout_low=b0; else cnt_dpout_low=cnt_dpout_low+1; endalways(posedge clk or negedge reset) begin if(!reset) syn=b0; else if(dpout&!dpout_delay)|(!dpout&dpout_delay) if(cnt_dpout_high8:0-cnt_dpout_low8:0=4|cnt_dpout_low8:0-cnt_dpout_high8:0=4) syn=b1; else syn=b0; end/*up down couter with mod=K*/always(posedge clk or negedge reset)begin if(!reset) begin delclk=b0; addclk=b0; up_down_cnt=b00000000; end else begin if(!dpout) begin delclk=b0; if(up_down_cnt=para_K-1) begin up_down_cnt=b00000000; addclk=b0; end else begin up_down_cnt=up_down_cnt+1; addclk=b0; end endelse begin 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 end/*add and delete clk*/always(posedge clk or negedge reset)begin if(!reset) begin cnt8=b000; end else begin if(cnt8=b111) begin cnt8=b000; endelse if(addclk&!syn) begin cnt8=cnt8+2; end else if(delclk&!syn) cnt8=cnt8; else cnt8=cnt8+1; endendalways(cnt8 or reset)beginif(!reset) add_del_clkout=b0;else add_del_clkout=cnt82;end/*counter with mod=N*/always(posedge add_del_clkout or negedge reset)begin if(!reset) begin cnt_N=b0000; signal_out=b0; endelse begin if(cnt_N=para_N-1) begin cnt_N=b0000; signal_out=b0; endelse if(cnt_N=(para_N-1)/2) begin signal_out=b1; cnt_N=cnt_N+1; endelse cnt_N=cnt_N+1; endendendmodule DPLL由 鉴相器 模K加减计数器 脉冲加减电路

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论