登录/注册

ad7960 VERILOG

更多

AD7960 的 Verilog 实现说明

AD7960 是一款 16 位、5 MSPS 高性能 SAR ADC,采用 LVDS 接口。其 Verilog 实现需要重点处理时钟控制、数据采集和串行转并行逻辑。以下是关键代码框架和实现要点:


1. 端口定义

module ad7960_interface (
    input  wire       clk,      // 主时钟 (根据应用需求设定, 推荐 80 MHz)
    input  wire       reset,    // 异步复位
    output reg        cnv,      // 转换启动信号
    input  wire       dco_p,    // LVDS 数据时钟 (DCO+)
    input  wire       dco_n,    // LVDS 数据时钟 (DCO-)
    input  wire       dout_p,   // LVDS 串行数据 (DOUT+)
    input  wire       dout_n,   // LVDS 串行数据 (DOUT-)
    output reg [15:0] data_out, // 并行输出数据
    output reg        data_valid // 数据有效标志
);

2. 关键模块实现

(1) LVDS 差分信号接收

使用 FPGA 原语转换 LVDS 为单端信号:

// LVDS 转单端: 数据时钟
IBUFDS #(
    .DIFF_TERM("TRUE") 
) ibuf_dco (
    .I (dco_p),
    .IB(dco_n),
    .O (dco_single) // 单端 DCO
);

// LVDS 转单端: 数据
IBUFDS #(
    .DIFF_TERM("TRUE")
) ibuf_dout (
    .I (dout_p),
    .IB(dout_n),
    .O (dout_single) // 单端数据
);
(2) IDDR 处理双倍数据率 (DDR)

使用 IDDR 原语捕获双沿数据:

IDDR #(
    .DDR_CLK_EDGE("OPPOSITE_EDGE")
) iddr_dout (
    .Q1(q1_data), // 上升沿数据
    .Q2(q2_data), // 下降沿数据
    .C (dco_single),
    .CE(1'b1),
    .D (dout_single),
    .R (1'b0),
    .S (1'b0)
);
(3) 状态机控制转换时序
// AD7960 转换周期控制 (典型周期: 200 ns)
parameter CNV_LOW = 50;  // 50 * clk_period > 20 ns (CNV低电平时间)
parameter CNV_HIGH = 10; // 10 * clk_period > 15 ns (CNV高电平时间)

reg [7:0] count;
reg [1:0] state;

always @(posedge clk or posedge reset) begin
    if (reset) begin
        state <= 0;
        count <= 0;
        cnv   <= 0;
    end else begin
        case(state)
            0: begin // 空闲状态
                cnv <= 0;
                if (start_conversion) state <= 1; // 外部触发转换
            end
            1: begin // 生成 CNV 高电平
                cnv <= 1;
                count <= 0;
                state <= 2;
            end
            2: begin // 保持高电平
                if (count == CNV_HIGH) begin
                    cnv <= 0;
                    state <= 3;
                end else count <= count + 1;
            end
            3: begin // 等待转换完成
                if (count == CNV_LOW) state <= 0;
                else count <= count + 1;
            end
        endcase
    end
end
(4) 串行数据转并行
reg [15:0] shift_reg;
reg [4:0]  bit_count; // 16位需要8个DCO周期 (DDR双沿采样)

always @(posedge dco_single) begin
    if (cnv == 0) begin // 转换完成后开始采集
        if (bit_count == 0) data_valid <= 0;
        // 捕获双沿数据
        shift_reg <= {q1_data, q2_data, shift_reg[15:2]};
        bit_count <= bit_count + 1;
        // 完成16位采集
        if (bit_count == 7) begin
            data_out  <= {q1_data, q2_data, shift_reg[15:2]};
            data_valid <= 1;
            bit_count  <= 0;
        end
    end else begin
        bit_count <= 0;
    end
end

3. 关键参数说明

参数 典型值 说明
t_CNVH ≥15 ns CNV 高电平最小持续时间
t_CNVL ≥20 ns CNV 低电平最小持续时间
t_LATENCY 14 DCO CNV 下降沿到数据输出延迟
DCO 频率 80 MHz 5 MSPS 时需 80 MHz DDR 时钟

4. 注意事项

  1. 时钟约束:确保 dco_singleclk 跨时钟域同步,使用双触发器同步链处理。
  2. IDDR 模式
    .DDR_CLK_EDGE("OPPOSITE_EDGE") // 推荐 "SAME_EDGE_PIPELINED" (Xilinx)
  3. 时序匹配:LVDS 差分对需等长布线(PCB 与 FPGA 内约束)。
  4. 校准逻辑:可添加偏移校准模块纠正静态误差。

完整代码可基于以上框架扩展,需根据实际 FPGA 型号调整原语(如 Altera 的 LVDS_RX / DDR_IO)。建议参考 ADI AD7960 数据手册 优化时序细节。

18位5 MSPS PulSAR差分ADC AD7960深度解析

18位5 MSPS PulSAR差分ADC AD7960深度解析 在电子设计领域,高精度、高速度的模数转换器(ADC)一直是关键组件。今天,我们来深入了解一款来自Analog Devices的18位

2026-03-30 14:15:18

EVAL-AD7960FMCZ评估版中的ADA4932  VS-为什么是-2.5V?

如题,AD7960评估板中的ADA4932的VS+=5V,而VS-=-2.5V.十分不解。不应该是对称的吗,为什么不是VS=±5V? 另外,AD7960要求输入相位相差180°。如果选择两片ADA4899作为输入之

2023-12-21 08:28:46

请问AD7960/7961 Evaluation Software能否实时显示转换的模拟量?

想问问有没有人知道AD7960评估板配套软件AD7960/7961 Evaluation Software能否实时读取显示转换的模拟量?

2023-12-21 06:07:50

AD7960和AD7961评估软件(zip,402 MB)

AD7960和AD7961评估软件(zip,402 MB)

资料下载 佚名 2021-06-10 11:15:06

UG-490:评估AD7960 18位、5 MSPS脉冲星差分ADC

UG-490:评估AD7960 18位、5 MSPS脉冲星差分ADC

资料下载 佚名 2021-05-10 13:27:15

AD7960伪边缘LVDS测试专利

AD7960伪边缘LVDS测试专利

资料下载 吴湛 2021-05-07 13:48:51

AD7960 Wiki:FMC卡和Xilinx参考设计

AD7960 Wiki:FMC卡和Xilinx参考设计

资料下载 梅利号 2021-04-21 16:03:06

AD7960:18位、5 MSPS PulSAR

AD7960:18位、5 MSPS PulSAR

资料下载 cherry1989 2021-03-21 09:23:00

AD7960的LVDS输入接口是否具有内部偏置?

AD7960这个芯片的LVDS输入接口是否可以用变压器交流耦合驱动。我之前用过AD9648的clk+和clk-内部具有偏置,可以直接交流耦合,我这次的项目也用同样的方法驱动AD7960的CNV+和CNV-以及clk+

2023-12-19 07:22:24

EVAL-AD7960FMCZ

EVAL BOARD FOR AD7960

2023-03-30 11:46:20

AD7960BCPZ是一款转换器

1970-01-01 08:00:00 至 1970-01-01 08:00:00

TRF7960 读写Mifare

需要实现TRF7960读取Mifare卡源代码

2022-01-25 11:04:23

EVAL-AD7960 EVAL-AD7960评估板

电子发烧友网为你提供ADI(ti)EVAL-AD7960相关产品参数、数据手册,更有EVAL-AD7960的引脚图、接线图、封装手册、中文资料、英文资料,EVAL-AD

2021-07-09 23:00:04

解决采样数据系统难题,应该从这几个方面入手

AD7960、ADA4899、AD8031和ADR4550的精密快速建立信号链图4. AD7960典型FFT和线性度性能这类高速、多通道数据采集系统可用于CT、DXR以及其他医疗成像应用中,这些应用都要

2019-11-06 08:00:00

EVAL-AD7960FMCZ,用于评估AD7960 18位,是一款功能齐全的评估套件

EVAL-AD7960FMCZ,评估板,用于评估18位,5MSPS PulSAR差动ADC AD7960。 EVAL-AD7960FMCZ是一款

2019-08-28 08:41:46
7天热门专题 换一换
相关标签