您的位置 首页 解答

根据CPLD芯片和VerilogHDL言语完成位同步时钟的提取设计方案

基于CPLD芯片和VerilogHDL语言实现位同步时钟的提取设计方案-异步串行通信是现代电子系统中最常用的数据信息传输方式之一,一般情况下,为了能够正确地对异步串行数据进行发送和接收,就必须使其接收与发送的码元同步,位同步时钟信号不仅可用来对输入码元进行检测以保证收发同步,而且在对接收的数字码元进行各种处理等过程中,也可以为系统提供一个基准的同步时钟。

导言

异步串行通讯是现代电子体系中最常用的数据信息传输办法之一,一般情况下,为了能够正确地对异步串行数据进行发送和接纳,就必须使其接纳与发送的码元同步,位同步时钟信号不只可用来对输入码元进行检测以确保收发同步,并且在对接纳的数字码元进行各种处理等过程中,也可认为体系供给一个基准的同步时钟。

本文介绍的位同步时钟的提取计划,原理简略且同步速度较快。整个体系选用VerilogHDL言语编写,并能够在CPLD上完结。

位同步时钟的提取原理

本体系由一个跳变沿捕捉模块、一个状况寄存器和一个可控计数器共三部分组成,整个如图1所示,其间data_in是输入体系的串行信号,clock是频率为串行信号码元速率2N倍的高精度时钟信号,pulse_out是体系发生的与输入串行信号每个码元位同步的脉冲信号,即位同步时钟。

根据CPLD芯片和VerilogHDL言语完结位同步时钟的提取规划计划

跳变沿捕捉模块的输入也便是整个的输入data_in和clock。当data_in发生跳变时,无论是上升沿或是下降沿,捕捉模块都将捕捉所发生的这次跳变,并发生一个脉冲信号clear,这个clear信号所反响的便是输入信号发生跳变的时间。然后以它为基准,

就能够有效地提取输入串行信号的同步时钟。

状况寄存器有两个输入,别离接跳变沿捕捉模块的输出clear和可控计数器的输出pulse_out,当clear信号的上升沿到来时,此状况寄存器的输出k被置1,之后在pulse_out和k信号自身的操控下,k在pulse_out和k信号上发生一个脉冲之后被置0,这个k为一般连接到可控计数器的操控端。

可控计数器是模可变的计数器,在k信号的操控下能够对clock信号进行模为N-2或2N的计数,其三个输入别离接跳变沿捕捉模块的输出clear、状况寄存器的输出k和时钟clock。其间clear信号能够对计数器进行异步清零,k信号可选择计数的模,当k=1时,计数器的模为N-2,计数满N-2后即发生输出脉冲pulse_out,当k=0时,计数器的模为2N,计数满2N时,发生输出脉冲pulse_out。

整个体系作业时,当输入信号data_in发生跳变时,跳变沿捕捉将能够捕捉到这次跳变,并发生一个脉冲信号clear,此clear信号能够将可控计数器的计数值清零,一起将状况寄存器的输出k置1,并送入可控计数器中,以使计数器进行模块为N-2的计数,待计满后,便可输出脉冲信号pulse_out,此信号一方面可作为整个体系输出的位同步时钟信号,另一方面,它也被接进了状况寄存器,以操控其输出k在计数器完结N-2的计数后就变为0,并在没有clear脉冲信号时使K坚持为0,从而使可控计数器的模坚持为2N,直到输入信号data_in呈现新的跳变沿并发生新的clear脉冲信号,由以上原理可见,在输入信号为连“1”或连“0”的情况下,只需体系运用的时钟信号满足准确,就能够确保在一守时间里输出满足要求的位同步时钟,而在输入信号发生跳变时,体系又会捕捉下这个跳变沿并以此为基准输出位同步时钟。

位同步时钟的提取

本体系包含三个部分,一是选用VerilogHDL言语编写程序,第二步再将每个部分作为一个模块(module)来编写,最终经过元件例化的办法将三个模块连接起来,以完结这个整个体系的规划。

下面是跳变沿捕捉模块的部分程序,其间Int0为串行输入信号,PCclk为输入体系的高精度时钟信号,本模块的输出Pcout对应于图1中的clear信号,它一起又接入状况寄存器模块的Psclr和可控计数器模块的clr。其仿真结构如图2所示。

跳变沿捕捉模块的部分程序如下:

module PcheckCapture (PCout,Int0,PCclk);

……

reg PCtemp1,PCtemp2;

always@(posedge PCclk) begin

PCtemp1《=Int0;

PCtemp2《=PCtemp1;

end

assign PCout=“PCtemp1”^PCtemp2;

……

状况寄存器模块的部分程序如下,其间输入信号Psclr来自跳变沿捕捉模块,另一个输入信号Pss则来自可控计数器的输出s对应图1中的pulse_out,输出信号Psout对应图1中的k;

module PcheckSreg (Psout,Pss,Psclr);

……

wire Pstemp;

assign Pstemp=~(Pss&Psout);

always@(posedge Pstemp or posedge Psclr) begin

if(Psclr==1b1)Psout《=1;

else Psout《=~Psout;

end

……

下面是可控计数器模块的部分程序,其间三个输入信号k、clr、clk别离对应于图1中的k、clear、clock,输出信号s对应于图1中的输出信号pulse_out;

module PcheckCoumter (s,k,clr,clk);

……

always@(posedge clk or posedge clr)

begin

if(clr==1)begin

s=0;

cnt=0;

end

else begin

if(k==0) begin

if(cnt==2N-1)begin

cnt=0;

s=1;

end;

else begin

cnt=cnt+1;

s=0;

end

end

else begin

if(cnt==N-2)begin cnt=“0”;

s=1;

end

else begin

cnt=cnt+1;

s=0;

end

………

在顶层模块中,应对三个模块进行例化,并在导线相连接,以构成一个完好的体系,此模块的程序如下:

modulePcheckTop (PTout,PTint,PTclk);

inout PTout;

input PTInt,PTclk;

PcheckCapture a (clear,PTInt,PTclk);

PcheckCounter b (PTout,k,clear,PTclk);

PcheckSreg

c(k,PTout,clear);

endmodule

图3为整个体系的仿真成果。

结束语

本位同步时钟提取计划已在CPLD器材进步行了仿真完结,经过以上的剖析可知,本位同步时钟的提取计划具有结构简略、节约硬件资源、同步树立时间短等长处,在输入信号有一次跳变后,体系呈现连“1”连“0”,或信号中止时,此体系依然能够输出位同步时钟脉冲,尔后,只需输入信号康复并发生新的跳变沿,体系仍能够调整此位同步时钟脉冲输出而从头同步,此体系中输入的时钟信号频率相对码元速率越高,同步时钟的方位就越准确,而当输入码元速率改动时,只需改动本体系中的N值体系就可从头正常作业。

责任编辑:gt

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/93691.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部