HMC7044特性:
HMC7044 双环结构可以attenuate incoming reference clock jitter.
One of the unique features of the HMC7044 is the independent flexible phase management of each of the 14 channels
上位机发送ADDR+DATA,锁存入FPGA内部寄存器 da_data,
在da_start0时,把da_data存入parrel_data,在da_start1时,开始发送parrel_data
参考7044write processing,数据在sclk下降沿时改变,在上升沿保持
module PLL_config(
adsp_clk, //250MHz
ref_freq, // 1MHz
da_start,//dsp control staring to transfer the data
da_data, // 24bits parallel data input 62.5M输入
da_cs,
da_din,
da_clk
);
parameter tr_num=24,cnt_bit=4; //tr_num-----the width of parallel data,(cnt_bit+1)-----the width of counter。
input adsp_clk;
input ref_freq;
input da_start;
input [23:0] da_data;
output da_cs;
output da_din;
output da_clk;
reg [cnt_bit:0] cnt;
reg [tr_num-1:0] parrel_data;
reg [cnt_bit:0] parrel_data_bitsel; //5bits
reg ref_freq_reg;
reg ref_freq_en;
reg ref_freq_en_1;
reg ref_freq_en_2;
reg da_din_reg;
reg da_din_reg_1;
//要传送多少个控制字数据由软件部分控制
always @ (posedge adsp_clk)
begin
ref_freq_reg <= ref_freq;
end
/*parrel data to serial data*/
always @ (posedge adsp_clk )//or negedge da_start )
begin
if (da_start == 1'b0)
begin
ref_freq_en <= 1'b0;
parrel_data[tr_num-1:0] <= da_data[tr_num-1:0];
parrel_data_bitsel <= tr_num - 1'b1; //23 -1'b1;
cnt <= 5'b00000;
end
else //da_start
begin
if((ref_freq == 1'b0) && (ref_freq_reg == 1'b1)) //negedge
begin
if (cnt < tr_num)
begin
ref_freq_en <= 1'b1;
da_din_reg <= parrel_data [parrel_data_bitsel];
parrel_data_bitsel <= parrel_data_bitsel - 1'b1;
cnt <= cnt + 5'h01;
end
else
begin
ref_freq_en <= 1'b0;
end
end
end
end
always @ (posedge adsp_clk)
begin
if((ref_freq == 1'b0) && (ref_freq_reg == 1'b1))
begin
ref_freq_en_1 <= ref_freq_en;
ref_freq_en_2 <= ref_freq_en_1;
da_din_reg_1 <= da_din_reg;
end
end
assign da_clk = (ref_freq_en_1 & ref_freq); //(ref_freq_en & ref_freq)
assign da_din = da_din_reg_1; //可以写成 da_din_reg;
assign da_cs = ~ (ref_freq_en | ref_freq_en_2);
endmodule
注意到
always @ (posedge adsp_clk)
begin
if((ref_freq == 1'b0) && (ref_freq_reg == 1'b1))
begin
ref_freq_en_1 <= ref_freq_en;
ref_freq_en_2 <= ref_freq_en_1;
da_din_reg_1 <= da_din_reg;
end
end
assign da_clk = (ref_freq_en_1 & ref_freq);
assign da_din = da_din_reg_1;
assign da_cs = ~ (ref_freq_en | ref_freq_en_2);
通过ref_freq时钟延迟,把ref_freq_en进行延迟,从而保证da_cs在da_din和da_clk之前就拉低,数据结束后再拉高cs
SNR = 6.02*ENOB +1.76
对锁相环输出的时钟有jitter要求。本次设计要求在1G信号输入下,ENOB达到9.8bit。锁相环输出时钟抖动要求小于120fs左右。
遇到问题:
Question
PLL1
1、OSCIN prescaler太小,即LOS输入信号太大的时候,PLL1锁不上,最后设置prescaler为10;可以与PLL counter有关 待确认;
2、CPout1电流理论上应该是越小越好,但是设置120uA和1.2mA后,PLL1相噪曲线没多大区别
3、没有得到sysref输出(给ADC/FPGA的JESD204B 链路建立信号)
4、multislip、slip enable、slip event和phase delay的关系?
Answer
1、At a minimum, fLCM must be a common submultiple of all available references.
即fLCM至少是ref clk的公约数
3、FPGA HP bank 不支持LVPECL电平标准,而HMC7044设置的输出电平标准为LVPECL,修改硬件电路,设置HMC70044输出电平为LVDS后,用示波器测到12.5MHz sysref信号。
sysref信号可用reseed 和 pulse generator request 通过SPI(0x0001寄存器) 发送cmd,此时0x0091寄存器读回状态从done变为running,用示波器测到12.5MHz sysref。
sysref信号的mode通过0x5A,0x5c,0x5d寄存器设置, 同时还要设置Clock Distribution中,需要作为sysref输出的寄存器,例如电平标准,Start-Up Mode[1:0]设置为Dynamic,Divider