FPGA项目开发:基于JESD204B的LMK04821芯片项目开发经验分享(一)

2021-04-15 17:52:26 浏览数 (1)

FPGA项目开发:基于JESD204B的LMK04821芯片项目开发经验分享(一)

大侠好,阿Q来也,今天头一次和各位见面,请各位大侠多多关照。今天给各位大侠带来一篇项目开发经验分享“基于JESD204B的LMK04821芯片项目开发(一)”,这是本人实打实的项目开发经验,希望可以给有需要的大侠提供一些参考学习作用。

以后机会多多,慢慢分享一些项目开发以及学习方面的内容,欢迎各位大侠一起切磋交流。本人已入驻“FPGA技术江湖”专栏,各位大侠如果对本篇以及后续更新内容有问题交流,欢迎各位大侠在“FPGA技术江湖”专栏内一起交流。话不多说,上货。

一、 LMK04821功能介绍

LMK0482X系列是德州仪器推出的高性能时钟调节芯片系列,该芯片目前有三种,分别为LMK04821、LMK04826以及LMK04828,该系列芯片都支持最新的JESD204B协议。本次调试主要以LMK04821为例,对调试过程中出现的一些问题进行总结说明。

其性能描述如下:

支持JESD204B;

超低的时钟抖动和噪声;

能够同时输出14路差分时钟:

<1>. 7对可作为JESD204B的SYSREF时钟;

<2>. 最大输出频率可以达到3.1GHz;

<3>. 输出差分时钟的电平标准可编程选择:LVPECL、LVDS、HSDS、以及LCPECL;

双PLL结构;

PLL2的VCO分频系数为1-32;

输出时钟精确的数字延时、模拟延时、以及动态延时;

多工作模式:双PLL、单PLL以及时钟分发模式;

LMK0482X系列的这三款芯片不同之处在于支持不同的VCO,如下图图1所示:

LMK04821芯片的应用示意图如下图图2所示:

LMK0482X的管脚分布定义图如下图3所示,熟知每个管脚的功能很重要,逐一介绍:

PIN1、2:第0路Device CLK差分输出;

PIN3、4:第1路SYSREF/Device CLK差分输出;

PIN5: 该芯片的复位输入或者是通用GPIO;

PIN6: 该芯片的时钟同步输入端口或者是连续SYSREF CLK请求输入端口;

PIN7、8、9:没用,悬空即可;

PIN10: 电源输入;

PIN11:LDO旁路电容,外接10uf到地;

PIN12:LDO旁路电容,外接0.1uf到地;

PIN13、14:第3路SYSREF/Device CLK差分输出;

PIN15、16:第2路Device CLK差分输出;

PIN17:电源输入;

PIN18:芯片的SPI配置CS信号;

PIN19:芯片的SPI配置SCK信号;

PIN20:芯片的SPI配置SDIO信号;

PIN21:电源输入;

PIN22、23:第5路SYSREF/Device CLK差分输出;

PIN24、25:第4路Device CLK差分输出;

PIN26:电源输入;

PIN27、28:第6路Device CLK差分输出;

PIN29、30:第7路SYSREF/Device CLK差分输出;

PIN31:可编程的状态监测I/O管脚;

PIN32:PLL1的电荷泵输出;

PIN33:电源输入;

PIN34、35:PLL1的参考时钟输入1、零延迟模式下的外部反馈时钟输入、外部VCO输入;

PIN36:电源输入;

PIN37、38:PLL1的参考时钟输入0;

PIN39:电源输入;

PIN40、41:反馈到PLL1,参考输入到PLL2。AC耦合;

PIN42:电源输入;

PIN43、44:PLL2的参考时钟输入、PLL1的反馈时钟输入;

PIN45:电源输入;

PIN46:PLL2的电荷泵输出;

PIN47:电源输入;

PIN48:可编程的状态监测I/O管脚;

PIN49、50:第9路SYSREF/Device CLK差分输出;

PIN51、52:第8路Device CLK差分输出;

PIN53:电源输入;

PIN54、55:第10路Device CLK差分输出;

PIN56、57:第11路SYSREF/Device CLK差分输出;

PIN58:可编程的状态监测I/O管脚;

PIN59:可编程的状态监测I/O管脚;

PIN60、61:第13路SYSREF/Device CLK差分输出;

PIN62、63:第12路Device CLK差分输出;

PIN64:电源输入;

DAP : 散热盘,接地;

二、 LMK04821使用步骤

2.1 硬件电路检查

2.1.1 芯片供电是否正常,是否符合器工作的条件,该步骤直接决定芯片能否正常工作,测试点参考下图;

2.1.2 芯片的参考时钟输入是否正常,借助示波器进行检查,CLKin0端的时钟由外部信号源提供,OSCin端的时钟由板上晶振提供,测量进入AD之前时钟是否正常;

2.2 寄存器配置

LMK04821的配置采用SPI方式,其配置规则通过阅读数据手册提取关键的知识点,如下:

2.2.1 写操作时,CS信号为低电平时,SDIO的数据在SCK上升沿写进芯片,写数据格式为1bit的读写控制位 2bit的0 13bit地址 8bit数据。

2.2.2 读操作时,先写入1bit的读写控制位 2bit的0 13bit地址,然后在接下来SCK的上升沿获取8bit数据;

时序图如下图6所示:

2.2.3 进行SPI时序编写时,务必按照图七的时序要求,除此之外,在FPGA内设计SPI代码时一定要可读可写,这样一来在FPGA配置寄存器时就能够知道每个寄存器内部配置的值是否正确,这一步是控制整个芯片工作时,FPGA要完成的第一步工作。

2.2.4 LMK04821的双PLL级联系统的介绍:

该系列芯片功能非常灵活,一般JESD204B系统的双PLL级联应用最为经典,但是对于传统的应用来说,同样适用。需要注意的是Device CLK不提供单端输出,只有OSCout管脚可以提供LVCMOS单端输出。另外,除了双PLL应用模式,亦可以配置单PLL或者时钟分发模式。

LMK0482X系列芯片的双PLL结构保证了在很宽的输出频率范围内还可以输出最低抖动的时钟。第一级PLL(PLL1)被外部的参考时钟驱动,第二级PLL(PLL2)由VCXO或者可调晶振提供高精度、低噪声的二级参考时钟。经过这两级PLL,输出时钟的精度将会大大提高。

LMK0482X系列芯片共输出7对JESD204B DeviceCLK和7对SYSREF CLK,其中每个Device CLK对应一个SYSREF CLK。对于那些非JESD204B的应用,SYSREF CLK同样可以编程为Device CLK。 PLL1的输入参考时钟包括管脚CLKin0,CLKin1以及CLKin2,任选一个作为时钟输入即可,选择的规则由配置寄存器参数决定。 VCXO/Crystal 缓存输出,LMK0482X系列芯片提供OSCout输出,该输出其实就是PLL1的反馈输入,也是PLL2的参考时钟输入,芯片的该功能其实就是为了在其编程之前可以提供一个时钟给控制器工作,控制器编程再配置LMK0482X。OSCout输出可以为LVDS、LVPECL以及LVMOS电平。

LMK0482X具有频率保持的功能,当外部参考时钟丢失后,输出频率还能保持最小的漂移,直到外部参考时钟恢复。

7路Device CLK都可以分别的分频,分频系数为1~32。

7路SYSREF CLK统一分频,分频系数为8~8191。

Device CLK具有延迟的功能,其包括模拟延迟和数字延迟。模拟延迟是以25ps为单位的时钟延迟模块,使用该模块本身也会带来500ps的延时。数字延时范围为4~32 VCO时钟周期,每一个延迟单元的大小为0.5 VCO周期。需要注意的是延迟的功能必须在同步使能后才起作用。

SYSREF CLK同样具有模拟核数字延迟。模拟延迟的最小单位为150ps。数字延迟的范围为1.5~11VCO,同样每一个延迟单元的大小为0.5 VCO周期。

14路时钟的输出不仅在电平标准上可编程,在输出的幅度方面也可编程。

要使时钟的数字延时起作用,管脚SYNC必须给一个脉冲,在脉冲的上升沿所有的时钟同步。

LMK04821提供了几个状态管脚用来供用户监测芯片内部的状态或者作为输入端口来响应用户的需求,具体的功能在寄存器配置说明里介绍。

2.2.5 功能框图

2.2.6 寄存配置顺序

在进行LMK04821寄存器配置的时候,手册里给了一个推荐的顺序,如下图图9所示:

在辅助软件TICS Pro中,生成的寄存器顺序也是严格按照手册中进行配置的。

但是在实际运用中,按照该寄存器配置顺序,时钟输出端并没有正确的时钟输出。实际运用中,将寄存器顺序按照如下顺序进行配置:

1、0X000配置两次,先进行复位,然后0X000再配置00,无操作;

2、然后紧接着从0X100~0X145;

3、0X171~0X17D;

4、0X146~0X16E;

5、0X143(90)、0X149(00)、0X143(两次B0、90)、0X144(FF)、0X143(两次10、11)、0X139(03)、0X002(00);固定数值;尽量不要改变,具体为什么要这样进行配置,对应数据手册进行查阅即可。

注意:在实际应用中,目前为止该寄存器顺序是唯一能够正确产生时钟的顺序,可以参考软件给的寄存器数据,尽量不要改变配置寄存器的顺序。部分寄存器在设计中没有进行配置,比如一些只读寄存器,IC信息相关的寄存器,reback相关的寄存器都没有进行配置,实际操作中无伤大雅,可以不用配置。但是在SPI配置寄存器时,如果要检验寄存器读写是否成功时,可以将这些寄存器进行读操作,确保SPI操作正常。

2.2.7 寄存器对应数据

在此之前,确定寄存器配置顺序之后,利用辅助软件TICS Pro软件产生对应的参数,按照6中所示的寄存器顺序进行写操作。软件使用中重要参数的产生以及对应在软件中如何设置见下图图10;

一定要熟练掌握软件运用,明确在产生想要的时钟时,如何进行软件操作,得到相应的系数,软件中每个点如何进行配合;参数之间是如何对应的,建议配合数据手册进行对比,能够事半功倍。

  • 标记1选择CLKin0作为参考时钟输入;硬件环境值在CLKin0端有时钟输入;
  • 标记2选择PLL1,MUX是可以进行选择的,不同的选择,对应寄存器要配置的数值不同;
  • 标记3处选择相应的DIV数值,得到需要的时钟100M;
  • 标记4 CPout1直接连接到外部晶振,目的是,当参考时钟丢失时,延时功能可以将PLL1的调谐电压固定在VCXO或者可调谐晶振上,使得在外部参考时钟丢失时,输出的时钟频率的偏移最小,直到外部时钟恢复。
  • 标记5 OSCin,PLL1的反馈输入,PLL2的参考时钟输入,实际调试中,发现OSCin如果没有输入,输出端就没有时钟输出,没有CLKin0输入,输出时钟依然正常输出;
  • 标记6、7、8、9、10、11、12,这几处都和PLL2 VCO Frequency有关系,手册中显示LMK04821在使用VCO1时,PLL2频率要求在2920~3080MHz之间。

超出范围,软件会报红出错。这几处设置其实就是简单的将OSCin的时钟进行先倍频后分频的一个操作;比如,实际中需要DCLKout输出150M、75M时钟,再复合要求范围的情况下,找到一个合适的公倍数,例子中为1500M,这样一来,既能得到150M的DCLKoutX的输出,又能得到75M的时钟输出;

除此之外,时钟输出设置如下图图11所示:

  • 标记1,公倍数;
  • 标记2,PLL1的反馈输入,PLL2的参考输入,实际运用中,PLL2的参考输入为OSCin;
  • 标记3,分频系数,1500M十分频150M;
  • 标记4,选择PD,意味着该通道不输出,处于关闭状态;
  • 标记5,DCLK输出频率,可在对应位置直接填入想要的数值。注意,最好是公倍数的整数分频后的值,不然,软件会自动产生一个和填入值最相近的数值;
  • 标记6,SCLK输出端口,SCLK不能单独分频,7个通道只能统一进行分频;具体设置如下图图12所示:

注意:在设定寄存器参数时,操作软件时,会在左下方窗口标记2处显示对应的寄存器以及数值,便于我们很迅速的在数据手册中查到该数值进行了哪些配置;

软件配置时,最重要的几个参数以及对应的寄存器如下:

  • Doubler,对应相关寄存器0X162;
  • R Divider,对应寄存器0X160、0X161;
  • N Divider,对应寄存器0X168;
  • VCO,对应寄存器0X138;
  • DCLKoutX_DIV, 对应寄存器0X100、0X108、0X110、0X1180、0X120、0X128、0X130;
  • SYSREF DIV,对应寄存器0X13A、0X13B。

注意;有些参数需要多个寄存器共同配合使用;另外的寄存器在软件配置过程中会生成,按照具体的设计要求进行软件操作配置,导出参数之后,在对应的寄存器中进行更改即可。

三、 运用结果

3.1 时钟输出结果

在对LMK04821芯片进行正确配置之后,时钟能够正常输出想要的时钟频率,利用示波器进行测量,都能够直接观测到时钟有输出;程序中更改不同的分频系数,也能够在输出端得到相应的时钟输出。

3.2 待解决问题

考虑到系统中要求时钟同源的问题,在对CLKin0参考输入时钟、DCLK、SCLK通过示波器进行起始相位对比观测,发现通过倍频分频后,时钟起始相位存在大概1/4个周期偏差,多次测试,每次都有细微的偏差。

其中,DCLK与SCLK如果输出频率相同时,相位差通过观察,有细微偏差,考虑到示波器使用过程中,探头不稳定原因,暂定相位偏差为0;后期有更好的测试方法时,再进行确认。

阿Q的项目开发经验分享就到这里结束了,万事开头难,今天已经开启了第一篇,后续有时间还会继续给各位大侠带来更多的项目开发经验分享。各位大侠,有缘再见,祝一切安好!

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

0 人点赞