我们正在尝试设置具有固定数字延迟的 LMK04821。 我们已按照数据表第42页所述对寄存器进行编程、切换了同步极性、但这似乎不会影响输出相位。 我们通过编程方式切换同步极性(即通过设置和取消设置0x143:5)。 同步脉冲的长度是否重要?
我们还不清楚寄存器0x101、0x109等的含义。 在第42页上,数据表声称这一点
'在这两种延迟模式下、常规时钟分频器用替代分频值。 替代除法
值由两个值组成、DCLKoutX_DDLY_CNTH 和 DCLKoutX_DDLY_CNTL。 最小值
_CNTH/_CNTL 值为2、最大_CNTH/_CNTL 值为16。 这将产生一个最小的替代方案
将值4除以最大值32。"
但没有解释、替代除法值实际上是什么。 进行了比较
"应遵循以下步骤:
1.设置 DCLKout0_DDLY_CNTH = 4且 DCLKout2_DDLY_CNTH = 4。 每个时钟的第一部分延迟。
2.设置 DCLKout0_DDLY_CNTL = 4且 DCLKout2_DDLY_CNTL = 5。 每个时钟的第二部分延迟……”
两个子寄存器的总和分别为8和9、而不是8。
以下是我们的寄存器设置:50MHz 输入时钟、通道0和2上的100MHz 输出以及通道1、3上的12.5MHz 系统参考时钟。
VAR 寄存器={
2:0x00、/* 0x0002 POWER_DOWN */
256:0x0F、/* 0x0100 CLK0设置*/
257:0x00,
259:0x00,
260:0x30,
261:0x00,
262:0x00、
263:0x11,
264:0x0F、//* 0x0108 */
265:0x00,
267:0x00,
268:0x30,
269:0x00,
270:0x00,
271:0x11、
272:0x0F,
273:0x00、
275:0x00,
276:0x00,
277:0x00、
278:0xFF、
279:0x00、
280:0x00,
281:0x55,
283:0x00,
284:0x00,
285:0x00,
286:0xFF,
287:0x00、
288:0x00,
289:0x55,
291:0x00,
292:0x00,
293:0x00,
294:0xFF、
295:0x00,
296:0x00,
297:0x55、
299:0x00,
300:0x00、
301:0x00,
302:0xFF,
303:0x00,
304:0x00,
305:0x55、
307:0x00,
308:0x00,
309:0x00、
310:0xFF,
311:0x00,
312:0x20、
313:0x03,
314:0x00,
315:0x78,
316:0x00,
317:0x00,
318:0x03,
319:0x0D,
320:0x00、
321:0x00,
322:0x00,
323:0x0B,
324:0x83、
325:0x7f,
326:0x10、
327:0x98,
328:0x0a,
329:0x02,
330:0x0a、//* 0x014a、reset_type/reset_mux */
331:0x16、
332:0x00,
333:0x00,
334:0x00、
335:0x7f,
336:0x03,
337:0x02、
338:0x00,
339:0x00,
340:0x00、//* 0x0154、CLKin0_R[7:0]、5*/
341:0x00,
342:0x04、
343:0x00,
344:0x00,
345:0x00,
346:0x01、//* 0x015A、PLL1_N[7:4]、4 */
347:0x98,
348:0x20、
349:0x00,
350:0x00、
351:0x0B、/* 0x015f PLL1_LD_TYPE、PLL1_LD_MUX;使用0x04或0x03,可以切换 LED */
352:0x00、
353:0x01、//* 0x02 */
354:0xa4、//* 0xA5 */
355:0x00,
356:0x00,
357:0x02,/*从这里,寄存器的顺序不再是单调的*/
369:0xAA,
370:0x02、
372:0x00,
380:0x15、
381:0x33、
358:0x00、
359:0x00,
360:0x03,
361:0x41、
362:0x00,
363:0x40、
364:0x00,
365:0x00,
366:0x13、//* 0x016e PLL2_LD_TYPE、PLL2_LD_MUX;0x06为开漏输出、0x04/0x03切换 LED *
371:0x00、
8189:0x00、
8190:0x00,
8191:0x53、
}
这里是应该设置通道0和2上的延迟的函数。 我们确信主机和时钟发生 器之间的通信是无错的、并且寄存器设置达到 LMK04821。
异步函数 write_phase (){
//通道0的写入阶段、0x101
WRITE_PHASE_寄存 器(257)
等待睡眠(300)
//通道2的写入阶段、0x109
WRITE_PHASE_寄存 器(265)
等待睡眠(300)
//清除0x106
寄存器['262']= 0
WRITE_PHASE_寄存 器(262)
等待睡眠(300)
//清除0x10e
寄存器['270']= 0
WRITE_PHASE_寄存 器(270)
等待睡眠(300)
//清除0x144:0、0x144:1
寄存器['324']= 128
WRITE_PHASE_寄存 器(324)
等待睡眠(300)
//切换0x143:5
寄存器['323']= 27
WRITE_PHASE_寄存 器(323)
等待睡眠(2000)
寄存器['323']= 11
WRITE_PHASE_寄存 器(323)
等待睡眠(3000)
//设置0x106:7
寄存器['262']= 128
WRITE_PHASE_寄存 器(262)
等待睡眠(300)
//设置0x10e:7
寄存器['270']= 128
WRITE_PHASE_寄存 器(270)
等待睡眠(300)
//设置0x144:0、0x144:1
寄存器['324']= 131
WRITE_PHASE_寄存 器(324)
等待睡眠(300)
console.log ("写入的相序")
}