求教:DAC3484的SYNC、FRAME、OSTR、DATACLK连接到FPGA,在进行到配置步骤31时,都是正常的,读出的05的值不存才alarm的标识,但是随后进行32到36任何一项,都会触发寄存器05的alarms_from_fifo的Pointers are 2 away、Pointers are 1 away、FIFO pointer collision,只要对寄存器进行写操作都会触发alarm,在此期间txenable保持为0,没有数据传输。始终alarm清不掉.
设计中使用DAC3484芯片输出信号,上电后,对其的配置过程如下:
序号 |
寄存器 |
配置值 |
说明 |
1 |
00 |
089c |
16倍内插,fifo使能,alarm使能,clkdiv_sync使能 |
2 |
01 |
010e |
4通道使能,fifo的1away/2away/collosion使能 |
3 |
02 |
f0d2 |
16bitin,dacclk、dataclkgone使能,nco使能,twos |
4 |
03 |
f000 |
设置输出电流 |
5 |
07 |
c07f |
设置alarm的mask |
6 |
08 |
0000 |
设置qmc_offset |
7 |
09 |
a000 |
Fifo offset5,设置qmc_offset |
8 |
0a |
0000 |
设置qmc_offset |
9 |
0b |
0000 |
设置qmc_offset |
10 |
0c |
0400 |
设置qmc_gain |
11 |
0d |
0400 |
Cmix无效,设置qmc_gain |
12 |
0e |
0400 |
设置qmc_gain |
13 |
0f |
0400 |
输出延时设置,设置qmc_gain |
14 |
10 |
0000 |
设置qmc_phase |
15 |
11 |
0000 |
设置qmc_phase |
16 |
12 |
0000 |
设置phase_offset |
17 |
13 |
0000 |
设置phase_offset |
18 |
14 |
999a |
设置NCO |
19 |
15 |
1999 |
设置NCO |
20 |
16 |
999a |
设置NCO |
21 |
17 |
1999 |
设置NCO |
22 |
18 |
2c60 |
PLL N分频使能,PLL使能,Single pump,P为4 |
23 |
19 |
c0f4 |
M为128,N为16,参考时钟120MHz,DACCLK960MHz |
24 |
1a |
cc00 |
设置PLL CVO coarse为51,PLL不sleep |
25 |
1b |
0800 |
内参考, |
26 |
1e |
4444 |
Qm的同步源设置为SYNC |
27 |
1f |
4444 |
设置mix和nco、dataformat的同步源为sync |
28 |
20 |
1401 |
Fifoin同步源为sync,fifoout同步源为ostr,clkdiv同步源为sync |
29 |
18 |
NA |
读取18,判断lfvolt的值为合理值 |
30 |
05 |
0000 |
Clear all alarm |
31 |
05 |
NA |
读取05,判断alarm是否存在 |
32 |
1f |
4442 |
设置sfi_sync |
33 |
00 |
0898 |
clkdiv_sync不使能 |
34 |
1f |
4448 |
设置dataformat不同步,清除sfi_sync |
35 |
20 |
0000 |
Fifo的in和out同步不使能 |
36 |
18 |
2460 |
不使能PLL的N分频器同步 |
37 |
05 |
NA |
读取05判断alarm |