Bootstrap

FPGA 之 DAC3482 学习(一)

拿到文档不知怎么去操作(以前没有看过手册也不知道流程是什么,只用过人家生成的代码,就知道地址和数据),以及寄存器的配置等等一顿蒙,接下来的时间对DAC3482进行学习。

   1.DAC3482官网网址如下:

DAC3482 data sheet, product information and support | TI.com

 2.文档解读学习以及基础知识恶补

      2.2.1    2、4、8、16 倍内插滤波器

通常与信号处理、尤其是数字信号处理中的 内插(Interpolation)技术有关。内插滤波器常用于数字信号中,将采样率增加到原来的若干倍。具体来说,倍数代表信号中插入的样本数,这样可以在不丢失重要信息的情况下提高采样率。

内插滤波器的基本工作原理:

内插滤波器的主要目的是在信号中插入更多的采样点,从而提高信号的采样率。其基本步骤如下:

  1. 插入零值:假设你从原始信号(采样率为Fs)生成一个更高采样率的信号。首先,通过插入零样本来增加信号的长度(假设插入2倍、4倍、8倍等),但这样会使信号变得“稀疏”。
  2. 滤波:通过低通滤波器滤除由于插入零值所产生的高频成分,确保信号平滑且连续。这就是内插滤波器的作用,它帮助恢复“平滑”的信号。
2倍、4倍、8倍、16倍内插滤波器:

这些不同倍数的内插滤波器意味着将采样率提高到原来的2倍、4倍、8倍或16倍。

  1. 2倍内插滤波器
    将每个原始采样点之后插入1个零值(使采样率翻倍),然后用低通滤波器平滑这些新插入的点。

  2. 4倍内插滤波器
    将每个原始采样点后插入3个零值(使采样率翻4倍),然后进行滤波,恢复信号平滑度。

  3. 8倍内插滤波器
    插入7个零值,确保信号转换后的平滑性。

  4. 16倍内插滤波器
    插入15个零值,提升采样率到16倍。

.2.2.2 NCO是什么

NCO(Numerically Controlled Oscillator,数字控制振荡器)

NCO 是一种通过数字方法生成连续波形(如正弦波、方波等)的振荡器。与传统的模拟振荡器不同,NCO 使用数字信号处理技术来控制其输出信号的频率和相位,因此被广泛应用于数字通信、信号生成、频率合成等领域。

工作原理

NCO 的核心是一个数字信号生成器,它通过一个相位累加器和一个查找表(LUT)来生成连续的波形。其基本工作原理如下:

  1. 相位累加器(Phase Accumulator)

    • NCO 的核心是一个相位累加器,它每个时钟周期增加一个常量的步进值。这个步进值决定了振荡器的频率。
    • 相位累加器的输出是一个表示相位的数字值,通常是一个固定长度的二进制数(例如,32位)。随着时钟的进步,累加器的值不断增加,表示一个完整的周期。
  2. 查找表(LUT)

    • 累加器的输出被用作查找表的地址,查找表内存储了周期性波形(如正弦波、方波等)的数值。
    • 查找表通常存储在 ROM 或 RAM 中。每次读取时,根据相位值,从表中提取一个相应的波形值作为输出。
  3. 频率控制

    • 通过控制相位累加器的步进值,可以精确控制输出波形的频率。步进值越大,频率越高;步进值越小,频率越低。
  4. 输出波形

    • 查找表输出的数值可用于驱动 DAC(数模转换器),以产生模拟信号,或者直接作为数字信号使用。常见的波形有正弦波、余弦波、三角波、方波等。

 2.2.3 DAC3482

以上是DAC3482的简介 接下来只对6详细描述进行学习

 功能框图

 对于上述框架需要知道每个接口代表什么:根据文档内容做总结

 以上为各个管脚的功能图,现做总结:

AVDD:电压源3.3。
CLKVDD:内部时钟缓冲器的电源电压。
D[15..0]P:LVDS正输入数据位0到15  高位的第15bit 是字模式的重要位,第7bit位字节模式的重要位。
D[15..0]N:LVDS为差分信号,这代表负输入数据位0到15。
DATACLKP/N:数据的差分时钟。
DACCLKP/N :  LVPECL时钟输入的DAC核心与自偏置.
FRAMEP/N:重置FIFO或用作同步源,在DATACLKP/N上升沿捕获。
OSTRP/N:DACCLKP/N的上升边缘所捕获。它用于同步双同步源模式下的分割时钟和FIFO输出。
PARITYP/N:奇偶校验位。
SCLK:串行接口时钟。
SDENB:串口数据的使能信号。
SDIO:串口的数据,三个引脚为双向模式,能够输入也能够输出。四个引脚只能够单项输出。
SDO:四个引脚只能够单项输出。
SYNCP/N :可选的LVDS同步正负输入。
RESETB  :低电平复位。
TXENABLE:传输高电平有效,模拟输出数据传输,寄存器配置3中的sif_txenable设置为1b或将CMOS的引脚拉到高,要禁用模拟输出,请将sif_txenable设置为0b,并将CMOS可启用针拉至低。数字逻辑部分被强制设置为所有0,并忽略任何输入数据。
ALARM:报警,默认为高电平。

补充:LVPECL

LVPECL(Low Voltage Positive Emitter Coupled Logic,低电压正发射极耦合逻辑)是一种高速数字逻辑电路标准,通常用于高速信号传输中。它是PECL(Positive Emitter Coupled Logic)的一种低电压版本,相比传统的PECL,LVPECL在工作电压上较低,通常在3.3V或2.5V范围内,而PECL则通常工作在5V电源下。

6.3Feature Description 

6.3.1Serial Interface

       刚开始第一个字节为指令周期,后面为数据周期。最高位(7bit)为读或者写操作(高电平读,低电平写),剩下7位未地址。

   (1)串行接口的写时序分析

  在写数据的时候有使能信号SDENB,时钟SCLK,数据的输入SDIO。使能在低电平数据有效,同时在时钟的上升沿进行对数据的采集,在数据结束时是在时钟的下降沿SDIO拉低。下图为写时序图:

   (2)串行接口的读时序分析

  在读数据时有使能信号SDENB,时钟SCLK,数据的输入输出SDIO,以及SDO数据的输出。如上写数据一样,在数据输出时添加了 SDO,在三引脚配置时(暂时不知道3引脚是什么东东),数据输出实在SDIO中的数据周期输出,SDO高阻态。至于前面的指令周期,是写给DAC3482的控制读指令以及地址。在4引脚配置时,数据从SDO中输出。(后续知道了34引脚是什么东西再回来改) 下图为读时序

6.3.2Data Interface

  是通过16位的LVDS总线可以接受16位I和Q数据,支持字宽模式和字节宽模式。在字宽模式下,数据通过16位总线传输;而在字节宽模式下,使用8位总线。模式选择通过config2寄存器中的16bit_in位进行。数据采样由LVDS双倍数据速率(DDR)时钟DATACLK完成,需满足建立和保持时间要求。

6.3.2.1 Word-Wide Format

设置config2寄存器中的16bit_in位为1b来选择字模式。在这种模式下,I和Q通道的16位数据以字宽交错的形式(I0, Q0, I1, Q1...)传输到D[15:0] 16位总线上。数据进入DAC3482的格式如下图所示,其中索引0是数据的最低有效位(LSB),索引15是数据的最高有效位(MSB)。

6.3.2.2Byte-Wide Format

通过在config2寄存器中将16bit_in设置为0b来选择字节范围的格式。在这种模式下,通道I和Q的16位数据以l0[15:8]、I0[7:0]、Q0[15:8]、Q0[7:0]、I-[15:8]的形式在字节范围内交错进入D[7:0] 8位总线。其中索引0是数据LSB,索引15是数据MSB。上述说了在字模式下为LVDS总线用了16位,字节模式下用了8位。

FRAME信号高电平表示将0通道的IQ数据传输,低电平1通道的IQ传输 


  

 

 6.3.3 Input FIFO

 DAC3482包括一个2通道,16位宽和8样本深度输入FIFO。

  FIFO 的输出时钟由DACCLK产生,当为字模式下时,速率为DACCLK/2*Interpolation。为字节模式下时,速率为DACCLK/Interpolation。

  可以使用config9的 fifo_offset【2:0】对FIFO偏移量进行操作。我认为的此偏移量就是写和读指针的距离,写指针在0地址位,读指针在4地址位,在读和写的时钟是同一时钟情况下,他们之间的间隙不变,在不同时钟下间隙不同,可能发生写和读指针在同一个地址位。

控制FIFO的寄存器

;