0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Vivado的AD9680 FPGA芯片测试

FPGA设计论坛 来源:FPGA设计论坛 2026-03-18 11:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基于vivado的ad9680 FPGA芯片测试1g采样率lane4 verilog编写,包括配置ad,配置时钟,jesd204b接收

在FPGA开发领域,与高速ADC芯片如AD9680协同工作是一项充满挑战但又极具乐趣的任务。今天咱们就聊聊基于Vivado平台,针对AD9680芯片,实现1G采样率且4通道(lane4)的FPGA测试程序,并且是用Verilog语言来完成哦。

配置AD

初始化设置

首先,我们要对AD9680进行配置。AD9680有一系列的寄存器需要我们去设置,以确保它能按照我们期望的模式工作。下面来看一段简单的Verilog代码示例:

module ad9680_config (

input wire clk,

input wire rst,

output reg [15:0] ad9680_reg_data,

output reg ad9680_reg_wr

);

always @(posedge clk or posedge rst) begin

if (rst) begin

ad9680_reg_data <= 16'h0000;

ad9680_reg_wr <= 1'b0;

end else begin

// 这里开始写入寄存器配置值

ad9680_reg_data <= 16'h1234; // 示例配置值,实际根据需求更改

ad9680_reg_wr <= 1'b1;

end

end

endmodule

在这段代码里,ad9680config模块负责生成对AD9680寄存器的写操作。clk是时钟信号,rst用于复位。当复位信号有效时,寄存器数据和写信号都被清零。而在正常工作时,我们会向ad9680regdata中写入特定的配置值,并且拉高ad9680reg_wr信号来完成寄存器写入。这个配置值16'h1234只是个示例,实际应用中,你得根据AD9680的手册,设置正确的寄存器值,比如采样模式、增益等参数。

配置时钟

生成稳定时钟

稳定的时钟对于AD9680准确采样至关重要。在FPGA中,我们可以使用PLL(锁相环)来生成所需的时钟信号。以下是一个简单的PLL使用示例代码(这里假设使用Xilinx FPGA的原语):

`timescale 1ns / 1ps

module clk_gen (

input wire clk_in,

output wire clk_out

);

(* DONT_TOUCH = "yes" *)

(* USE_POWER_PIN = "yes" *)

(* XILINX_LEGACY_PRIM = "PLL_BASE" *)

PLLE2_BASE #(

.BANDWIDTH("OPTIMIZED"),

.CLKFBOUT_MULT(10),

.CLKFBOUT_PHASE(0.0),

.CLKIN1_PERIOD(10.0),

.CLKOUT0_DIVIDE(10),

.CLKOUT0_DUTY_CYCLE(0.5),

.CLKOUT0_PHASE(0.0),

.DIVCLK_DIVIDE(1)

)

u_PLL (

.CLKFBIN(clk_fb),

.CLKIN1(clk_in),

.RST(1'b0),

.PWRDWN(1'b0),

.CLKOUT0(clk_out),

.CLKFBTOUT(clk_fb),

.LOCKED(locked)

);

endmodule


这段代码通过PLLE2BASE原语实现了一个PLL。clkin是输入时钟,我们通过设置CLKFBOUTMULT和CLKOUT0DIVIDE等参数,来调整输出时钟clkout的频率。在这个例子里,假设输入时钟clkin周期为10ns,经过PLL配置后,输出时钟clkout的频率将根据我们设置的参数改变。这里CLKFBOUTMULT设置为10,CLKOUT0_DIVIDE设置为10,意味着输出时钟频率与输入时钟频率相同,但实际应用中,你可能需要根据AD9680的1G采样率需求,灵活调整这些参数,以得到合适的采样时钟。

JESD204B接收

协议实现要点

JESD204B是AD9680常用的数据传输协议,实现其接收功能是整个测试程序的关键部分。下面是一个简化的JESD204B接收模块框架代码:

module jesd204b_rx (

input wire clk,

input wire rst,

input wire [31:0] data_in,

output reg [31:0] data_out

);

// 状态机状态定义

typedef enum reg [2:0] {

IDLE,

SYNC,

RECEIVE

} jesd_state;

jesd_state current_state, next_state;

always @(posedge clk or posedge rst) begin

if (rst) begin

current_state <= IDLE;

data_out <= 32'h00000000;

end else begin

current_state <= next_state;

end

end

always @(*) begin

next_state = current_state;

case (current_state)

IDLE: begin

// 检测同步信号

if (data_in == 32'hABCD1234) begin // 假设同步字

next_state = SYNC;

end

end

SYNC: begin

// 同步后准备接收数据

next_state = RECEIVE;

end

RECEIVE: begin

data_out = data_in;

// 这里可添加数据处理逻辑,比如解串等

end

endcase

end

endmodule

在这个模块中,我们使用状态机来处理JESD204B数据接收。IDLE状态下,模块等待同步信号,这里假设同步字为32'hABCD1234,当检测到同步字时,进入SYNC状态,然后很快切换到RECEIVE状态,在该状态下接收并处理数据。实际的JESD204B接收会更复杂,比如涉及到8B/10B解码、多通道数据对齐等操作,但这个框架代码为我们提供了一个基本的思路。你需要根据具体的JESD204B协议规范,在RECEIVE状态里进一步完善数据处理逻辑,确保准确无误地接收AD9680传来的数据。

通过以上对AD9680配置、时钟配置以及JESD204B接收的代码实现与分析,我们就搭建起了基于Vivado的AD9680 FPGA芯片测试程序的基础框架。当然,实际应用中还需要根据具体需求进行更多的优化和完善,但希望这些内容能给你的开发工作带来一些启发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22571

    浏览量

    640790
  • 芯片测试
    +关注

    关注

    6

    文章

    185

    浏览量

    21192
  • 时钟信号
    +关注

    关注

    4

    文章

    511

    浏览量

    30171
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71515

原文标题:基于Vivado的AD9680 FPGA芯片测试

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Questions for AD9680

    I want to driver AD9680 with DC couple.I find that it is very difficult to handlethe common mode
    发表于 08-06 06:07

    国产替代AD9680芯片

    看到国产替代AD9680芯片,分享给大家看看!GM4680_1000_500数据手册 -.rar (6.81 MB )
    发表于 08-05 23:55

    关于ad9680的时钟等信号输入输出问题

    1.我在查看ad9680的FMC原理图时,发现SPI的CSB线只有CSB_FPGA_TO_DUT和CSB_FPGA_TO_AD9526,请问用FPGA控制
    发表于 09-24 15:10

    ad9680和zcu102的sysref信号

    sysref_to_DUT(在FMC上)和sysref_to_FPGA(在SMA接头上)。2.ad9680原理图上有一个ad9526的ic,但我百度了一下好像没有ad9526,不知道是什么东西,不知道有没有知道的朋友3.我看到一个CSB_
    发表于 09-25 10:35

    关于ad9680外围电路设计

    主要就是ad9680fpga相连就可以,主要是ad9680的外围电路,不用实现什么功能。
    发表于 06-26 15:48

    AD9680 S-Parameters

    AD9680 S-Parameters
    发表于 01-31 13:15 3次下载
    <b class='flag-5'>AD9680</b> S-Parameters

    AD9680 MATLAB Model

    AD9680 MATLAB Model
    发表于 02-01 10:47 2次下载
    <b class='flag-5'>AD9680</b> MATLAB Model

    AD9680 S参数

    AD9680 S参数
    发表于 03-23 10:44 1次下载
    <b class='flag-5'>AD9680</b> S参数

    AD9680 MATLAB模型

    AD9680 MATLAB模型
    发表于 03-23 12:54 7次下载
    <b class='flag-5'>AD9680</b> MATLAB模型

    AD9680 AMI型号

    AD9680 AMI Model
    发表于 03-24 16:58 3次下载
    <b class='flag-5'>AD9680</b> AMI型号

    AD9680 MATLAB ADIsimADC

    AD9680 MATLAB ADIsimADC
    发表于 03-24 18:07 8次下载
    <b class='flag-5'>AD9680</b> MATLAB ADIsimADC

    AD9680/AD6674 IBIS型号

    AD9680 / AD6674 IBIS Model
    发表于 03-24 21:08 1次下载
    <b class='flag-5'>AD9680</b>/AD6674 IBIS型号

    AD9680 AMI型号

    AD9680 AMI型号
    发表于 06-03 21:01 8次下载
    <b class='flag-5'>AD9680</b> AMI型号

    AD9680德尔福型号

    AD9680德尔福型号
    发表于 06-04 12:53 2次下载
    <b class='flag-5'>AD9680</b>德尔福型号

    AD9680 AD6674 IBIS型号

    AD9680 AD6674 IBIS型号
    发表于 06-06 19:13 8次下载
    <b class='flag-5'>AD9680</b> AD6674 IBIS型号