tag 标签: 分频

相关博文
  • 热度 23
    2014-9-24 22:36
    1151 次阅读|
    0 个评论
    多核处理器是最近快速发展的电子器件,单个芯片内集成了多个同构或者异构的处理器,使得其计算处理能力得到较大幅度的提高。DSP处理器由于其具有较高的数字处理能力,得到较广泛的应用。多核DSP芯片以目前性能较高的TMS320C66系列为例,其中TMS320C6678(以下简称C6678)含有8个处理器。这些处理器可以独立工作,也可以并行联合工作。当它们联合工作时,相互之间通信和握手就非常重要,尤其是在对时间要求较高的场合,时钟的稳定和同步就非常关键。时钟的稳定和同步对系统设计、时钟源、时钟分配、电路布线、时钟线屏蔽等都提出较高的要求。 本文利用CDCM6208时钟分配芯片,以此输出多路时钟,提供到8核DSP芯片C6678,提供出DSP核工作时钟、DDR3数据读写时钟、RapidIO和PCIe数据传输时钟、千兆网络加速器等时钟信号。文中介绍了详细的电路设计、时钟芯片配置以及多核DSP的配置,相关片内设备的初始化等。 1 C6678及其结构 C6678是TI公司多核处理器中的一款8核浮点型DSP,最高工作频率达到1.25 GHz,单核可以提供40GMAC定点计算或者20G FLOP浮点计算能力,单个芯片可以提供320G MAC或者160G FLOP计算能力。C6678的片内结构如图1所示。 图1 C6678内部结构图 C6678的每个核具有32 KB的程序、32 KB的数据以及512 KB的2级Cache存储空间,芯片片内具有一个4MB的共享SRAM。C6678具有DDR3控制器接口,可以外接DDR3,直接寻址范围达到8 GB。C6678的片内外设有RapidIO、PCIe、EMIF以及SPI、I2C总线等接口。这些接口通过片内的高速互联总线和各个处理器交互数据。 和网络相关的片内设备如图1右下角灰色模块所示,主要包括两个对外的SGMII接口、以太交换和网络交换模块,以及用于数据管理的安全加速器和包加速器,是为了快速检测数据的校验以及协议是否遵循网络标准,对于错误的数据直接丢弃.降低CPU的负担。为了加快网络和CPU的数据交换,片内的队列管理器用于管理网络包或者网络帧的缓存,分发等功能。这些数据都采用数据包DMA读/写,不需要CPU参与。 C6678的其他片内设备包括PLL、仿真口、信号量、电源管理和复位管理等模块。其中PLL配置CPU和外设的工作时钟;仿真口用于连接仿真器,实现对软件运行的监控;信号量实现对DSP/BIOS操作系统中信号量的控制;电源管理实现整个芯片电流电压的控制;复位管理配 置启动的方式,硬复位进行全启动,软复位进行部分启动。 【分页导航】 第1页: C6678及其结构 第2页: CDCM6208及其结构 第3页: 硬件设计 第4页: 软件设计 2 CDCM6208及其结构 CDCM62xx系列芯片是TI公司针对多核处理器专门开发的时钟产生、驱动和分配芯片。CDCM6208是该系列的第二代产品,相比于第一代CDCM6208的最大优点就是功耗大幅度降低,从第一代的2~3 W降低到0.5 W左右。而其功能、指标和体积没有弱化。CDCM6208有两路可选时钟输入,8路时钟输出。8路输出中的4路只能做整数倍分频,另外4路可以做小数倍分频,满足多核芯片的各种不同的时钟需求。8路时钟支持LVPECL、CML、HCSL以及LVDS信号电平,最大支持800 MHz的时钟频率,满足RapidIO和PCIe这些高速接口需求。时钟抖动小于265 fs。其控制可以通过标准的SPI或者I2S接口实现,非常方便灵活。TI公司提供针对该芯片专门开发的图形化控制软件,用户选择所要设置的时钟工作方式、输出频率等参数,该软件生成其内部寄存器的值,通过SPI或I2S接口写入就完成整个芯片的配置。 CDCM6208的内部结构如图2所示。从图中可以看出,可选两路时钟输入后,首先经过一个14倍频器,作为参考时钟驱动片内VCO产生时钟信号。为了提高时钟相位噪声,倍频后信号经过一个片内的滤波器,该滤波器可以由片内提供阻容电路设置。VCO时钟功分到两路预分频器,预分频器只能4、5或者6分频。预分频后时钟再次进入后期的分频器。每个预分频器功分到两个小数分频器和一个整数分频器。分频后信号驱动后输出。从图2右边输出可以看出,整数分频器输出的Y0和Y1两路时钟频率一样,Y2和Y3时钟频率一样。小数分频的Y4~Y7可以各自设置CDCM6208的这种时钟配置限制了其应用,但好处是降低了功耗,目前这种配置满足绝大部分多核处理器的要求,尤其是TI公司的C66系列以及AK2系列多核DSP可以实现无缝连接。 图2 CDCM6208的内部结构图 【分页导航】 第1页: C6678及其结构 第2页: CDCM6208及其结构 第3页: 硬件设计 第4页: 软件设计 3 硬件设计 根据TMS320C6678的应用,所需要的时钟如图3所示。 其主要时钟包括:①内核运行时钟,该时钟输入是100 MHz,DSP片内PLL将其锁定到工作频率,最高为1GHz,最低为700 MHz。②RapioIO接口和HyperLink超级连接接口工作时钟,这两路时钟输入都为312.5MHz,RapioIO倍频4、8、10、16,工作在1.25 GHz、2.5GHz、3.125 GHz和5 GHz。HyperLink倍频到40、80、100、160,工作在12.5 GHz、25 GHz、31.25 GHz和50 GHz。 ③PCIe接口时钟和PA_SS网络加速器时钟,这两路时钟都是输入100MHz,内部倍频后相应的工作时钟,满足各自接口传输时钟要求。④DDR3时钟,该时钟输入为66.667 MHz,倍频20或者25倍,工作在1333.33 MHz或者1666.7 MHz。这些时钟在DSP片内都各有独立的PLL电路设置,其工作原理和设置方法基本一致。图3中的单独25 MHz是专门为千兆网提供的工作时钟,由一个单独的晶体提供。C6678还提供一路时钟输出信号,默认输出为核时钟的1/6,图中为16.667 MHz,输出时钟可以检测C6678是否正常工作。 图3 C6678的时钟信号 图4 C6747和CDCM6208的接口 由于C6678的核时钟由CDCM6208提供,所以对CDCM6208的设置只能由另外一个处理器完成,只要该处理器具有SPI或者I2S接口即可。本文使用低功耗的DSP芯片C6747来实现多CDCM6208的设置。C6747和CDCM6208的接口如图4所示,采用标准4线制SPI接口控制,为了避免干扰提高传输可靠性,在SPI的片选信号的写信号分别上拉和下拉,这样在空闲下其引脚状态不会被干扰。在控制CDCM6208之前,需要对其进行复位,图中使用一个通用GPIO引脚控制,当CDCM6208配置成功后,会提供一个状态检测信号,该信号连接到C6747的GPIO引脚,用来判断是否正确配置。图中C6747还使用一个引脚控制CDCM6208的低功耗设置,当该引脚为高时,CDCM6208进入低功耗模式。 【分页导航】 第1页: C6678及其结构 第2页: CDCM6208及其结构 第3页: 硬件设计 第4页: 软件设计 4 软件设计 由于系统采用C6747控制CDCM6208时钟信号,所以C6747的软件是系统整个初始化的关键,C6747的初始化软件主要包括对CDCM6208的复位、配置和检测以及对C6678的复位、C6678外挂Flash的复位等工作。整个系统的软件流程如图5所示。 图5 软件流程 上电启动后,C6747软件加载成功后,复位CDCM6208,为确保复位成功,C6747要等待10 ms才能通过SPI接口配置CDCM6208。配置完成后,C6747可以查询CDCM6208的状态输出引脚,检测是否配置成功。如果配置失败,重复复位、配置、检测这几个步骤。配置成功后,表明CDCM6208已经输出准备时钟到C6678,但在此之前,C6678仍然处于复位状态。由于C6678的程序保存在片外Flash中。所以,C6747要首先复位Flash,等待其复位后,再复位C6678,查询C6678的输出状态,确定C6678是否正常下作。如果输出不正常,仍然重复复位Flash、复位C6678和检测这几个步骤,直到初始化成功。 结语 多核处理器由于其接口丰富,运行频率较高,对时钟设计要求较高,一般要求一个高精度的时钟通过分频/倍频方式产生多路时钟到相应的接口。本文以多核数字信号处理器C6678为应用对象,通过CDCM6208产生多路时钟,提供到多核DSP的核时钟、DDR3、RapidIO等时钟信号。通过单核低功耗小成本处理器C6747实现对整个时钟电路的复位、设置和检测。本文介绍的时钟配置方法具有通用性,对同类产品的时钟设计方案具有一定的参考价值。 【分页导航】 第1页: C6678及其结构 第2页: CDCM6208及其结构 第3页: 硬件设计 第4页: 软件设计
  • 热度 27
    2014-9-10 11:25
    1044 次阅读|
    0 个评论
    Verilog实现的4.5倍分频   代码如下:   module div_4_5(clk,rst,clkout); input clk,rst; output clkout;   reg cnt_p; reg cnt_n;   reg clk_p,clk_n;   assign clkout=clk_p || clk_n;   always @ (posedge clk or negedge rst) begin  if(!rst)   cnt_p=4'd0;  else if(cnt_p==4'd8)   cnt_p=4'd0;  else   cnt_p=cnt_p+4'd1; end   always @ (posedge clk or negedge rst) begin  if(!rst)   clk_p=1'd0;  else if(cnt_p==4'd1 || cnt_p==4'd2 || cnt_p==4'd6 || cnt_p==4'd7)   clk_p=1'd1;  else   clk_p=1'd0; end   always @ (negedge clk or negedge rst) begin  if(!rst)   cnt_n=4'd0;  else if(cnt_p==3'd1)   cnt_n=4'd1;  else if(cnt_n==4'd8)   cnt_n=4'd0;  else if(cnt_n==4'd0)   cnt_n=4'd0;  else   cnt_n=cnt_n+4'd1; end   always @ (negedge clk or negedge rst) begin  if(!rst)   clk_n=1'd0;  else if(cnt_n==4'd1 || cnt_n==4'd2 || cnt_n==4'd6 || cnt_n==4'd5)   clk_n=1'd1;  else   clk_n=1'd0; end   endmodule   仿真结果:
  • 热度 19
    2013-11-1 23:29
    2920 次阅读|
    0 个评论
              分频实验应该是FPGA/CPLD实验中的最基础的实验(本人应该比流水灯还基础),而占空比为50%的奇分频相较于偶分频有一些难点。本文以占空比为50%的三分频时钟为例,希望起一点抛砖引玉的作用。         思路 :通过待分频时钟下降沿触发计数,和上升沿同样的方法计数进行三分频,然后下降沿产生的三分频时钟和上升沿产生的时钟进行相或运算。( 这里我希望大家可以用笔在纸上画出时序,验证和思考一下 )。 源代码: `timescale 1ns/1ps module clkdiv (         sysclk,         rst_b,         div_out ); input  sysclk; input  rst_b; output div_out; reg cnt1; reg cnt2; always @(posedge sysclk)     begin if(!rst_b) cnt1 = 2'b0; else        begin                 case(cnt1)                 2'b00:  cnt1 = 2'b01;                 2'b01:  cnt1 = 2'b10;                 2'b10:  cnt1 = 2'b00;                 default:  cnt1 = 2'b00;                 endcase        end end always @(negedge sysclk ) begin if(!rst_b) cnt2 = 2'b0; else        begin           case(cnt2)           2'b00:  cnt2 = 2'b01;           2'b01:  cnt2 = 2'b10;           2'b10:  cnt2 = 2'b00;           default:  cnt2 = 2'b00;           endcase        end end assign div_out = (cnt1 | cnt2 ); endmodule   testbench源码(本人模仿特权同学视频testbench写法): `timescale 1 ns/ 1 ps module clkdiv_tb(); reg sysclk;                                           wire div_out; reg rst_b; clkdiv i_clkdiv (  .div_out(div_out),  .rst_b(rst_b),  .sysclk(sysclk) ); initial                                                begin                                                        sysclk = 1;       forever       #10   sysclk = ~sysclk;   end                                                    initial                  begin                                                         rst_b = 0;        #1000;        rst_b = 1;        #5000;        $stop;   end                                                    endmodule 最后附上modelsim的功能仿真效果图:    本人最近才开始学习CPLD/FPGA,也是菜鸟一名,有不对的地方,希望大家批评指正。
  • 热度 19
    2013-8-24 22:48
    1368 次阅读|
    0 个评论
    一种奇偶通用占空50%分频电路          Iyoyoo @ 2013/8/24            在数字逻辑电路中,分频器是一种基本电路,通常对给定频率进行分频,得到所需频率。   偶数占空50%分频电路 偶数分频是一种最简单的分频电路,完全可以通过计数器来实现分频。如果要进行N倍偶数分频,可由待分频的时钟触发计数器,当计数器从0计数到N/2-1(也可以是从1计数到N/2)时,输出时钟进行翻转,同时复位计数器(也可以不复位,一直计数到N,再复位计数器),以此循环下去,即可实现任意偶数占空50%分频。          如下8分频为例,仅供参考: parameter            DIV_CNT = 4’h8; always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    count = 4'h1;          else  if ( count ==DIV_CNT )                    count = 4'h1;          else                    count = count +1'b1;   always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    clk_div = 1'h0;          else if( count ==(DIV_CNT1'b1) | count ==DIV_CNT)                    clk_div = !clk_div;          else                    clk_div = clk_div;   奇数占空50%分频电路 奇数分频电路实现方法也很多,下面采用常用的错位异或法。要进行奇数N分频,用待分频时钟的上升沿和下降沿分别触发计数器,当计数器计数到(N + 1)/2时,输出时钟进行翻转;计数到N输出时钟再次翻转。得到两个占空比非50%的分频时钟,再将这两个占空比非50%分频时钟进行相或,即可得到奇数N占空50%的分频电路。 如下9分频为例,仅供参考: parameter            DIV_CNT = 4’h9; always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    count = 4'h1;          else  if ( count ==DIV_CNT )                   count = 4'h1;          else                    count = count +1'b1;   always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    clk_div_pos = 1'h0;          else if( count ==((DIV_CNT + 1'b1)1'b1) | count ==DIV_CNT)                    clk_div_pos = !clk_div_pos;          else                    clk_div_pos = clk_div_pos;   always @ ( negedge CLK or negedge RST_n )          if( !RST_n )                    clk_div_neg= 1'h0;          else if( count ==((DIV_CNT + 1'b1)1'b1 )| count ==DIV_CNT )                    clk_div_neg = !clk_div_neg;          else                    clk_div_neg = clk_div_neg;   assign      CLK_out     =       clk_div_pos | clk_div_neg ;     奇偶通用占空50%分频电路 对比以上1和2,可以看出,1偶数分频器是2奇数分频器的一种特例,将2奇数分频器做一下变形,即可包含1,得到奇偶通用的占空50%分频电路。偶数加1除以2结果和偶数除以2结果相同,所以偶数分频里的N/2 == (N+1)/2。同时偶数分频只需一个上升沿或者下降沿触发计数进行计数分频,所以在上下沿分频相或时,只取其一即可。进行如下处理: assign      CLK_out      =       clk_div_pos | (clk_div_neg(DIV_CNT%2)) ;            进行处理后,奇数分频电路不变,偶数分频以8分频为例,modulesim仿真如下:                     综上,由一个简单的电路可以实现任意分频占空50%的分频电路,简单实用,简记以分享,请指点。     附:奇偶占空50%通用分频电路Verilog //////////////////////////////////////////////////////////////////////////////// // Company: Company Name // Engineer: Iyoyoo // // Create Date: date // Design Name: freq_div.v // Module Name: freq_div // Target Device: target device // Tool versions: tool_versions // Description: //    Description here // Dependencies: //    Dependencies here // Revision: //    Code_revision_information // Additional Comments: //    Additional_comments ////////////////////////////////////////////////////////////////////////////////          module freq_div ( //------------------------------- //Add System Signal Here //-------------------------------          CLK,          RST_n,          //------------------------------- //Add master port //-------------------------------          CLK_out   ); /***************************************************/ //Port List Declare Here //------------------------------- //Add global signal declare //------------------------------- input                          CLK; input                          RST_n;   //------------------------------- //Add master port //------------------------------- //Add Input Signal declare Here   //Add Output Signal declare Here output                             CLK_out;   /***************************************************/ //Define parameter Here parameter            DIV_CNT;   /***************************************************/ //Define internal Register Here reg                count; reg                               clk_div_pos;     reg                               clk_div_neg;   /***************************************************/ //Main RTL //------------------------------- //div counter //------------------------------- always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    count = 4'h1;          else  if ( count ==DIV_CNT )                    count = 4'h1;          else                    count = count +1'b1;   //------------------------------- //posedge div //------------------------------- always @ ( posedge CLK or negedge RST_n )          if( !RST_n )                    clk_div_pos = 1'h0;          else if( count ==((DIV_CNT + 1'b1)1'b1) | (count ==DIV_CNT)                    clk_div_pos = !clk_div_pos;          else                    clk_div_pos = clk_div_pos;   //------------------------------- //negedge div //------------------------------- always @ ( negedge CLK or negedge RST_n )          if( !RST_n )                    clk_div_neg= 1'h0;          else if( count ==((DIV_CNT + 1'b1)1'b1 )| (count ==DIV_CNT )                    clk_div_neg = !clk_div_neg;          else                    clk_div_neg = clk_div_neg;   /***************************************************/ //Add Output Singal assign  Here assign      CLK_out     =       clk_div_pos | (clk_div_neg(DIV_CNT%2)) ;   endmodule       //end  of freq_div module    
  • 热度 25
    2013-8-14 10:51
    5634 次阅读|
    5 个评论
      1、半整数分频占空比不为50% //说明:设计的史上最好用的半整数分频占空比不为50%,包含设计思路 module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);//N+0.5 input clk; output clk_div; output reg cnt1,cnt2; output reg temp1,temp2; initial begin temp1=0;temp2=1;end   //首先进行初始化,temp1=0;temp2=1 parameter N=5;  //设定分频系数为N+0.5 always @(posedge clk)  //temp1上升沿跳变 begin if(cnt1==2*N)  //2*N begin cnt1 =32'd0;end else begin cnt1 =cnt1 +32'd1;end if(cnt1==32'd0) begin temp1=1;end   //高电平时间为N+1; if(cnt1==N+1) begin temp1=0;end   //低电平时间为N; end always@(negedge clk)  //temp2下降沿跳变 begin if(cnt2==2*N)  //2*N begin cnt2 =32'd0;end else begin cnt2 =cnt2 +32'd1;end if(cnt2==32'd0) begin temp2=0;end     //低电平时间为N; if(cnt2==N) begin temp2=1;end    //高电平时间为N+1; end assign clk_div=temp1temp2;  //逻辑与 endmodule //如果要进行N+0.5分频 //思路:总的来说要进行N+1+N=2N+1次分频 //在时钟的上升沿和下降沿都进行跳变 //上升沿进行占空比为N+1比N的时钟temp1; //下降沿进行占空比为N比N+1的时钟temp2; //最后div=temp1temp2 即可得到所需要的半整数分频 分频5.5仿真结果 2、奇数分频占空比为50% //说明:奇数分频。 module div_5(clk,clk_div,cnt1,cnt2,temp1,temp2);// input clk; output clk_div; output reg cnt1,cnt2; output reg temp1,temp2; parameter N=5;  //设定分频系数 always @(posedge clk) begin if(cnt1==N-1)  //N-1进行N计数 begin cnt1 =32'd0;end else begin cnt1 =cnt1 +32'd1;end if(cnt1==32'd0) begin temp1=1;end   // if(cnt1==(N-1)/2) begin temp1=0;end   //当计数到(N-1)/2时翻转 end always@(negedge clk) begin if(cnt2==N-1)  //N-1 begin cnt2 =32'd0;end else begin cnt2 =cnt2 +32'd1;end if(cnt2==32'd0) begin temp2=1;end     //; if(cnt2==(N-1)/2) begin temp2=0;end    //当计数到(N-1)/2时翻转; end assign clk_div=temp1||temp2;  //逻辑或 endmodule     3任意小数分频             分数分频实现基本上都是靠吞脉冲方法实现,如5/2分频,就可以分成一个2分频,一个3分频接替出现,这样(2+3)/2就是5/2分频。        下面以68/9为例介绍下怎么计算。        68=9*7+5,即商为7,余数为5。可以推出68/9分频,可以看成5个8分频和4个7分频,即(5*8+4*7)/9=68/9。这个7分频和8分频中的数字7和8就是从商中得出来的。那5个8分频和4个7分频中的数字5和4就是从余数中的出来的,5是余数,4是(9-5)。        分子:numerator。分母denominator。商quotient。余数remainder。(翻译不是很准确,表达下意思就行了,呵呵)。        numerator=quotient*denominator+remainder.那么numerator/ denominator分频就可以通过remainder个(quotient+1)分频和(denominator -remainder)个quotient分频组成。        还是以68/9为例。我们得出了5个8分频和4个7分频可以实现这个分数分频,但这5个8分频和4个7分频怎么放置呢?        先放5个8分频,再放4个7分频,这样绝对是不行的。为了均匀的放置这两种频率,我从小数分频中学到一种方法。找个临时变量temp(程序中用的是sum)。初始化为0。每次分频完让它加上余数,判断是否大于分母,如果小于分母,择输出7分频,否则输出8分频,并且将这个值减去分母(让它小于分母)。这样temp值就变成了5 1 6 2 7 3 8 4 0 5…… 分频值就成了7 8 7 8 7 8 7 8 8 7 8 7 8 7 8 7 8 8……可以统计一下7分频和8分频的比例就正好是4:5,这样就实现了分数分频。        程序如下所示: 输入信号:clk,rst,clkin(要分频的时钟信号),numerator(分子), denominator,(分母) 输出信号:pulse 中间信号:quotient(商),remainder(余数)等 hightime为输出信号pulse输出高电平时间,可控制占空比 /*************************************************   //module name:fredivAB   //designer:kang   //date:2010-10-08   //version:1.00   *************************************************/ module fredivAB(             //input signals             clk,             rst,             clkin,             numerator,      //fenzi             denominator,    //fenmu             //output signals             pulse                   ); input clk; input rst; input clkin; input numerator; input denominator;   output pulse; reg pulse;   //parameter HIGHTIME=16'd2;   wire quotient;   //shang wire remainder;  //yushu reg ina; reg inb; reg upclk; reg counter_clkin; reg counter; reg divnum; reg sum; reg flag; reg counter_pulseh; wire hightime;   assign quotient=(denominator)?numerator/denominator:16'h0; assign remainder=(denominator)?numerator%denominator:16'h0; assign hightime={1'b0,quotient }; //assign hightime=16'h1;   //save the prior and current state of clkin always @(posedge clk or negedge rst)     begin     if(!rst)         begin         ina=0;         inb=0;         end     else         begin         ina=clkin;         inb=ina;         end     end     //check posedge pf clkin always @(posedge clk or negedge rst)     begin     if(!rst) upclk=0;     else if(!inbina) upclk=1'b1;     else upclk=0;     end   //fre div counter always @(posedge clk or negedge rst)     begin     if(!rst)         begin         counter=0;         end     else if(counter==divnum) counter=16'h0;     else if(upclk) counter=counter+1'b1;     else counter=counter;     end   always @(posedge clk or negedge rst)     begin     if(!rst)         begin         sum=0;         flag=0;         end     else if(counter==divnum)         begin         if((sum+remainder)=denominator)        //fenmu             begin             sum=sum+remainder-denominator;             flag=1;             end         else             begin             sum=sum+remainder;             flag=0;             end         end     end         always @(posedge clk or negedge rst)     if(!rst) divnum=0;     else if(flag) divnum=quotient+1'b1;     else divnum=quotient;     //counter_plush always @(posedge clk or negedge rst)     begin     if(!rst) counter_pulseh=hightime+16'h1;     else if((counter==divnum)divnum) counter_pulseh=0;     else if(upclk) counter_pulseh=counter_pulseh+1'b1;     end   //pulse produce always @(posedge clk or negedge rst)     if(!rst) pulse=1'b0;     else if(counter_pulseh=(hightime-1)) pulse=1'b1;     else pulse=1'b0;     endmodule                      
相关资源
  • 所需E币: 0
    时间: 2022-7-8 16:34
    大小: 1.4MB
    上传者: ZHUANG
    用于无线卫星通信网络系统的抑噪分频频率综合器设计
  • 所需E币: 1
    时间: 2022-4-2 22:01
    大小: 9.93KB
    上传者: Argent
    PLC技术在工业控制领域应用广泛,分享一些有关实用的三菱PLC参考程序,希望能够帮助到有需要的网友。
  • 所需E币: 0
    时间: 2020-12-25 19:26
    大小: 1.61MB
    上传者: czd886
    基于FPGA的可消除高频非线性的动态分频鉴相器
  • 所需E币: 1
    时间: 2020-12-18 16:29
    大小: 99KB
    上传者: zendy_731593397
    4060CMOS14级二进制计数-分频-振荡器
  • 所需E币: 1
    时间: 2020-12-18 16:28
    大小: 99KB
    上传者: zendy_731593397
    4060CMOS14级二进制计数-分频-振荡器
  • 所需E币: 0
    时间: 2020-9-26 00:15
    大小: 32.86KB
    上传者: LGWU1995
    控分频器的设计数控分频器的功能就是当在输入端给定不同输入数据时将对输入的时钟信号有不同的分频比
  • 所需E币: 3
    时间: 2019-12-25 20:40
    大小: 155.93KB
    上传者: 微风DS
    用VerilogHDL语言设计分频器和32位计数器……
  • 所需E币: 3
    时间: 2019-12-25 12:31
    大小: 82.5KB
    上传者: 2iot
    基于FPGA的高频时钟的分频和分配设计基于FPGA的高频时钟的分频和分配设计[pic]摘要:介绍了为PET(正电子发射断层扫描仪)的前端电子学模块提供时间基准而设计的一种新型高频时钟扇出电路。该电路利用FPGA芯片来实现对高频时钟的分频与分配,并用LVDS传输标准对生成的多路时钟信号进行传输,从而最大程度地减少了输出各路时钟之间的延时偏差,同时利用低压差分信号的传输特性增强了信号的抗干扰能力。文章给出了采用VHDL语言编写的时钟电路程序代码。   关键词:FPGA;高频时钟;VHDL1引言随着应用系统向高速度、低功耗和低电压方向的发展,对电路设计的要求越来越高传统集成电路设计技术已无法满足性能日益提高的整机系统的要求。同时,由于IC设计与工艺技术水平的提高,集成电路规模越来越大,复杂程度越来越高。目前已经可以将整个系统集成在一个芯片上,即片上系统(SystemonaChip缩写为SOC),这种芯片以具有系统级性能的复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)为主要代表。与主要实现组合逻辑功能的CPLD相比,FPGA主要用于实现时序逻辑功能。对于ASIC设计来说,采用FPGA在实现小型化、集成化和高可靠性系统的同时,还可以减少风险、降低成本、缩短开发周期。[pic]2系统硬件组成本文介绍的时钟板主要由于为PET(正电子发射断层扫描仪)的前端电子学模块提供32路系统时钟(62.5MHz)和32路同步时钟(4MHz)。时钟信号之间的偏差要求在2ns之内。为了消除各路时钟信号之间的偏差,文中介绍利用FPGA来实现主时钟的分频、零延时输出和分配,同时利用LVDS技术实现多路时钟的传输的实现方法。图1所示是其硬件设计示意图。由图1可知,……
  • 所需E币: 5
    时间: 2019-12-25 12:23
    大小: 232.92KB
    上传者: 978461154_qq
    基于FPGA的多种形式分频的设计与实现……
  • 所需E币: 4
    时间: 2019-12-25 12:23
    大小: 155.68KB
    上传者: givh79_163.com
    基于FPGA的高频时钟的分频和分配设计……
  • 所需E币: 4
    时间: 2020-1-4 12:41
    大小: 35KB
    上传者: 16245458_qq.com
    CPLD分频设计基于CPLD/FPGA的半整数分频器的设计作者:佚名  来源:不详  发布时间:2007-8-1622:03:02[pic][pic]减小字体[pic]增大字体[pic][pic][pic][pic][pic][pic]摘要:简要介绍了CPLD/FPGA器件的特点和应用范围,并以分频比为2.5的半整数分频器的设计为例,介绍了在MAX+plusII开发软件下,利用VHDL硬件描述语言以及原理图的输入方式来设计数字逻辑电路的过程和方法。   关键词:VHDLCPLD/FPGA数字逻辑电路设计半整数分频器1引言CPLD(ComplexprogrammableLogicDevice,复杂可编程逻辑器件)和FPGA(FieldprogrammableGatesArray,现场可编程门阵列)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件基础上发展起来的。同以往的PAL、GAL相比,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用IC芯片。这种芯片具有可编程和实现方案容易改动等特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM、或EPROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及实时在检验等优点,因此,可广泛应用于产品的原理设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。   在现代电子系统中,数字系统所占的比例越来越大。系统发展的越势是……
  • 所需E币: 5
    时间: 2020-1-4 12:50
    大小: 248.33KB
    上传者: rdg1993
    给出了DPLL的基本概念,阐述了DPLL的缺点,并结合最新的模拟锁相和数字锁相技术,提出了一种基于FPGA的全新锁相倍频系统的设计方法,简单地介绍了设计的思路、原理及其算法,并对该方案的性能进行了分析,给出了仿真波形.……
  • 所需E币: 4
    时间: 2019-12-24 22:46
    大小: 244.72KB
    上传者: 二不过三
    摘要:该应用笔记提出了超低抖动时钟合成器的一种设计思路,其目标是产生2GHz时钟时,边沿之间的抖动超低抖动时钟合成器的设计挑战Apr17,2009摘要:该应用笔记提出了超低抖动时钟合成器的一种设计思路,其目标是产生2GHz时钟时,边沿之间的抖动表明,要达到这一抖动指标,设计难度远远高于预期。关于元器件变量和折衷方案的讨论为进一步的研究提供了线索。概述本文为高速数据转换器提供了一个低抖动时钟源的参考设计,目标是在时钟频率高达2GHz时,边沿间抖动出频率,所产生的抖动信噪比SNR为:-20×log(2×π×f×tj)=-64dB。设计需求时钟设计的最高频率为2GHz,然而,一些VCO(压控振荡器)和预分频器能够将其扩展到更高频率,且不同器件能够扩展的范围也不尽相同。这里介绍的参考设计、仿真测试和结果只针对2GHz输出频率。一些高速转换器采用时钟信号的两个沿作为内部定时。这就要求严格的50%占空比。另外,目标输出驱动能力是10dBm/50Ω,即2VP-P差分输出。合成器设计基础图1.传统锁相环最简单的设计是传统的锁相环电路,如图1。如上所述,要求严格的50%占空比。因此,VCO工作在目标时钟的两倍频(4GHz),然后通过2分频获得目标频率和占空比。由于分频器会引入抖动,所以将其置于锁相环环路以消除噪声。环路滤波器提供对参考噪声的低通滤波和VCO噪声的高通滤波。同时,它也决定了环路建立时间。由于这是固定频率应用,环路建立时间不存在问题;滤波器带宽可只对噪声进行优化。窄带滤波器更容易处理参考噪声,但增加了VCO的噪声负担,宽带滤波器的效果则相反。虽然我们需要在VCO和参考时钟两者之间进行平衡,通过对两者的研究表明,同时获得两者的最佳性能是可能的。100fs抖动的相噪指标决定了噪声将有多低。……
  • 所需E币: 5
    时间: 2020-1-9 12:57
    大小: 260.2KB
    上传者: 二不过三
    用FPGA实现30MHz多分频分频123456781.2VCCDU1EP3C16E144C8……
  • 所需E币: 4
    时间: 2020-1-14 11:41
    大小: 1.26MB
    上传者: givh79_163.com
    倍频器与分频器资料,倍频器与分频器……
  • 所需E币: 5
    时间: 2020-1-14 14:07
    大小: 127.79KB
    上传者: 16245458_qq.com
    小数分频原理维普资讯http://www.cqvip.com小数分频原理施自胜摘要L~本文详细地阐述了小数分频频率合成嚣的原理,井扼要地分析了小数对环路性能的改善.小敷分频频率合成嚣具有频率间随精细、换频快捷、频谱纯净和体积小巧等优点,可广泛应用于通信和电子饭嚣中.一、引言自从Finden首先在1943年使用。FrcqcncySysthcsizcr一词来命名他的谐波倍频产生器以来.新的频率合成方案不断涌现,按频率合成方法可分为两太类:一是直接频率合成(DFS);二是间接频率合成,它又有单环频率合成(NFS)、多环频率合成(MNFS)和小数分频频率合成(FNFS)等三种、然而,在这些方法中,频谱纯度换频速度以及频率间隔等指标往往是相互矛盾的.DFS尽管有很高的换频速度,但随着频率间隔的降低.元器件数目激增、体积增大,且产生许多难以预料的组合频率:NFS虽然集成度高体积小巧,但频率间隔与换频建度以及频谱纯度之间存在严重的矛盾;MNFS实际上是对DFS和NFS的折衷.上述矛盾仍未解决.1969年1月DANA实验室有限公司的一项专利“披露了一种利用单环频率合成器来减小频率间隔的新方珐――小数分频或称数字相位.新颖、独特的小数分频不仅解决了频率间隔问题,还……
  • 所需E币: 5
    时间: 2020-1-14 19:23
    大小: 128.78KB
    上传者: quw431979_163.com
    半整数分频,基于CPLD_FPGA的半整数分频器的设计……