芯路恒电子技术论坛

 找回密码
 立即注册

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

热搜: 合集
查看: 21886|回复: 1

【产品资料】【扩展模块】ACM2108高速ADC+DAC模块资料和使用说明

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 443

    主题

    834

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16437
    QQ
    发表于 2022-10-17 17:47:13 | 显示全部楼层 |阅读模式


    AD9280/MS9280 是一款 8 位高速模数转换器 (ADC),最高采样率可达 32MSPS,采用并行输出接口。其主要时序特性如下:
    • 时钟信号 (CLK):输入时钟,决定采样率,上升沿有效
    • 数据输出 (D0-D7):8 位并行数据输出
    • 帧同步信号 (FS):用于同步多通道操作,低电平有效


    时序关系:
    • 数据在 CLK 上升沿被锁存并输出
    • 输出数据相对于 CLK 上升沿有固定延迟 (t_Delay)
    • 建立时间 (t_Setup) 和保持时间 (t_Hold) 需满足数据稳定要求

    FPGA 驱动 AD9280 的设计思路
    硬件连接:
    • FPGA 提供 CLK 时钟信号给 AD9280
    • FPGA 的 GPIO 连接 AD9280 的数据输出 D0-D7
    • 根据需要连接 FS 帧同步信号

    时序约束:
    • 确保 FPGA 输出的时钟信号质量满足 AD9280 要求
    • 对输入数据信号设置合适的时序约束,满足建立 / 保持时间

    数据采集逻辑:
    • 在 CLK 上升沿锁存 AD9280 输出的数据
    • 可添加数据校验或格式转换逻辑
    • 设计 FIFO 缓存采集的数据,便于后续处理






    1. module ad9280_data_capture (
    2.     input  wire         sys_clk,        // 系统时钟
    3.     input  wire         sys_rst_n,      // 系统复位,低电平有效
    4.    
    5.     // AD9280硬件接口
    6.     output wire         ad_clk,         // AD9280时钟输出
    7.     input  wire [7:0]   ad_data,        // AD9280数据输入
    8.     output reg          ad_fs,          // AD9280帧同步信号
    9.    
    10.     // FIFO写入接口
    11.     output reg  [7:0]   fifo_wr_data,   // 写入FIFO的数据
    12.     output reg          fifo_wr_en      // FIFO写使能
    13. );

    14. // 信号定义
    15. reg [7:0] ad_data_reg;        // AD数据寄存器
    16. reg ad_clk_en;                // AD时钟使能信号
    17. reg [3:0] clk_div_cnt;        // 时钟分频计数器

    18. // 时钟分频逻辑 - 生成AD9280所需的时钟
    19. // 假设系统时钟频率是AD时钟的整数倍
    20. always @(posedge sys_clk or negedge sys_rst_n) begin
    21.     if (!sys_rst_n) begin
    22.         clk_div_cnt <= 4'd0;
    23.         ad_clk_en   <= 1'b0;
    24.     end else begin
    25.         // 这里可以根据需要调整分频系数
    26.         clk_div_cnt <= clk_div_cnt + 4'd1;
    27.         ad_clk_en   <= (clk_div_cnt == 4'd7);  // 例如八分频
    28.     end
    29. end

    30. // 生成AD9280时钟 (使用使能而非门控)
    31. assign ad_clk = sys_clk & ad_clk_en;

    32. // 帧同步信号生成
    33. always @(posedge sys_clk or negedge sys_rst_n) begin
    34.     if (!sys_rst_n) begin
    35.         ad_fs <= 1'b1;  // FS低电平有效,复位时置高
    36.     end else begin
    37.         // 每采集1024个数据发送一次帧同步
    38.         if (clk_div_cnt == 4'd0 && ad_clk_en) begin
    39.             ad_fs <= 1'b0;  // 帧同步信号有效
    40.         end else begin
    41.             ad_fs <= 1'b1;  // 帧同步信号无效
    42.         end
    43.     end
    44. end

    45. // AD数据采集 - 在AD时钟上升沿锁存数据
    46. always @(posedge sys_clk or negedge sys_rst_n) begin
    47.     if (!sys_rst_n) begin
    48.         ad_data_reg  <= 8'd0;
    49.         fifo_wr_data <= 8'd0;
    50.         fifo_wr_en   <= 1'b0;
    51.     end else begin
    52.         // 当AD时钟使能有效时采集数据
    53.         if (ad_clk_en) begin
    54.             ad_data_reg  <= ad_data;          // 锁存AD数据
    55.             fifo_wr_data <= ad_data_reg;      // 准备写入FIFO的数据
    56.             fifo_wr_en   <= 1'b1;             // 使能FIFO写操作
    57.         end else begin
    58.             fifo_wr_en   <= 1'b0;             // 关闭FIFO写操作
    59.         end
    60.     end
    61. end

    62. endmodule

    复制代码



    模块介绍

    本模块基于国产知名模拟器件设计和制造商杭州瑞盟公司的8位 35M采样速率高速ADC 芯片MS9280(完全兼容AD9280)和125Msps转换速率的高速DAC芯片MS9708(完全兼容AD9708)。配合前端模拟信号调理电路,实现了±5V电压范围内信号的高速采样,以及模拟信号输出。以下为模块实物图。
    ACM2108.jpg




    本模块可用于小梅哥全系列FPGA、SOC 、Zynq开发板,包括国产开发板和各核心板的评估底板。
    AC620、AC6102、ACX720、ACZ702、AC609、智多晶FPGA开发板(AC208-SA5Z)、AC608评估底板、AC601评估底板、AC675评估底板。。。。。。。。更多可联系我们确认

    本模块可用于友晶的FPGA开发板、SOC开发板,如:
    DE2-35、DE2-70、DE2-115、DE1-SoC、DE10-Stander、DE0-SoC-nano。。。。。。更多可联系我们确认



    原理图
    ACM2108.pdf (885.01 KB, 下载次数: 3534)


    芯片datasheet
    C1509022_数模转换芯片DAC_MS9708_规格书_杭州瑞盟数模转换芯片DAC规格书.PDF (2.42 MB, 下载次数: 2565)
    C130297_模数转换芯片ADC_AD9280ARSZRL_规格书_ADI(亚德诺)_LINEAR(凌特)模数转换芯片.pdf (432.69 KB, 下载次数: 1923)


    接各开发板的管脚信息表
    ACM2108开发板管脚信息表.xlsx (11.25 KB, 下载次数: 1526) ACX750接ACM2108模块管脚定义表.xlsx (12.12 KB, 下载次数: 863)


    例程

    基于AC609开发板,DAC输出正弦波,quartus使用signaltap抓取ADC采集数据并显示为模拟波形
    ac609_acm2108_test_gpio0.rar (120.45 KB, 下载次数: 1623)
    ac609_acm2108_test_gpio1.rar (156.51 KB, 下载次数: 1450)

    基于AC620开发板,DAC输出正弦波,quartus使用signaltap抓取ADC采集数据并显示为模拟波形
    ac620_acm2108_test_gpio0.rar (133.11 KB, 下载次数: 1638)

    基于AC208-ep4ce10开发板,DAC输出正弦波,quartus使用signaltap抓取ADC采集数据并显示为模拟波形
    ac208_ep4ce10_acm2108_test_gpio0.rar (140.43 KB, 下载次数: 1533)


    基于ACZ702开发板纯逻辑设计的测试工程,DAC输出模拟波形,Vivado使用ILA抓取ADC采集数据并显示为模拟波形
    ACZ702_ACM2108_Test_010.rar (917.9 KB, 下载次数: 2143)
    ACZ702_ACM2108_Test_020.rar (957.9 KB, 下载次数: 2152)

    基于ACX720开发板纯逻辑设计的测试工程,DAC输出模拟波形,Vivado使用ILA抓取ADC采集数据并显示为模拟波形
    ACX720_ACM2108_Test_35T.rar (601.25 KB, 下载次数: 2522)
    ACX720_ACM2108_Test_100T.rar (506.75 KB, 下载次数: 2102)
    ACX720_ACM2108_Test_200T.rar (503.21 KB, 下载次数: 2066)

    基于ACX720开发板的数据采集例程,数据采集后存储在DDR3存储器中,然后由串口发送到电脑端,再通过matlab绘制波形
    ACM108/ACM2108数据采集DDR3缓存串口发送实验
    http://www.corecourse.cn/forum.php?mod=viewthread&tid=29232



    基于ACX750开发板的数据采集例程,数据采集后存储在DDR3存储器中,然后由串口发送到电脑端,再通过matlab绘制波形
    ACM2108数据采集DDR3缓存串口发送实验
    acx750_acm2108_ddr3_uart.zip (1.96 MB, 下载次数: 1944) 基于ACX750开发板纯逻辑设计的测试工程,DAC输出模拟波形,Vivado使用ILA抓取ADC采集数据并显示为模拟波形
    ACX750_ACM2108_Test_35T.zip (262.44 KB, 下载次数: 610)

    基于AC208-sa5z开发板,DAC输出正弦波,hqfpga使用在线逻辑分析仪抓取ADC采集数据并显示为模拟波形
    ac208_sa5z_acm2108_test.rar (191.09 KB, 下载次数: 1665)




    【软件下载】AAA-Tina-TI  官方汉化版软件下载链接
    http://www.corecourse.cn/forum.php?mod=viewthread&tid=29217


    MS9280前端信号调理电路仿真图.TSC (22.86 KB, 下载次数: 1523)






    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 443

    主题

    834

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16437
    QQ
     楼主| 发表于 昨天 09:30 | 显示全部楼层

    1. # AD9280 ADC接口时序约束

    2. # 1. 时钟约束
    3. # 假设AD9280工作时钟为32MHz(最大支持32MSPS)
    4. create_clock -name AD_CLK -period 31.25 [get_ports ad_clk]  ;# 32MHz时钟,周期31.25ns

    5. # 系统时钟约束(假设系统时钟为128MHz,根据实际情况修改)
    6. create_clock -name SYS_CLK -period 7.8125 [get_ports sys_clk]  ;# 128MHz时钟,周期7.8125ns

    7. # 2. 输入延迟约束(AD9280到FPGA的数据信号)
    8. # 根据AD9280数据手册,数据相对于AD_CLK的输出延迟典型值为3ns
    9. # 约束输入延迟为时钟周期的30%~40%,留有余量
    10. set_input_delay -clock AD_CLK -max 12.5 [get_ports ad_data[*]]    ;# 最大输入延迟
    11. set_input_delay -clock AD_CLK -min 3 [get_ports ad_data[*]]      ;# 最小输入延迟

    12. # 3. 输出延迟约束(FPGA到AD9280的控制信号)
    13. # 假设外部电路的时序要求,输出延迟设置为时钟周期的20%
    14. set_output_delay -clock AD_CLK -max 6.25 [get_ports ad_fs]       ;# 最大输出延迟
    15. set_output_delay -clock AD_CLK -min 1 [get_ports ad_fs]          ;# 最小输出延迟

    16. # 4. 时钟不确定性和裕量设置
    17. set_clock_uncertainty -setup 0.5 [get_clocks AD_CLK]
    18. set_clock_uncertainty -hold 0.2 [get_clocks AD_CLK]

    19. # 5. 时钟抖动约束
    20. set_clock_jitter -period 0.5 [get_clocks AD_CLK]

    21. # 6. 物理约束(根据实际PCB布局调整)
    22. # 设置AD数据信号为高速信号组,施加布线约束
    23. set_property IOSTANDARD LVCMOS33 [get_ports {ad_data[*] ad_clk ad_fs}]
    24. set_property PACKAGE_PIN AA1 [get_ports ad_clk]   ;# 根据实际引脚分配修改
    25. set_property PACKAGE_PIN AB2 [get_ports ad_fs]   ;# 根据实际引脚分配修改

    26. # 数据信号引脚分配示例(需根据实际PCB修改)
    27. set_property PACKAGE_PIN AC3 [get_ports ad_data[0]]
    28. set_property PACKAGE_PIN AD4 [get_ports ad_data[1]]
    29. set_property PACKAGE_PIN AE5 [get_ports ad_data[2]]
    30. set_property PACKAGE_PIN AF6 [get_ports ad_data[3]]
    31. set_property PACKAGE_PIN AG7 [get_ports ad_data[4]]
    32. set_property PACKAGE_PIN AH8 [get_ports ad_data[5]]
    33. set_property PACKAGE_PIN AI9 [get_ports ad_data[6]]
    34. set_property PACKAGE_PIN AJ10 [get_ports ad_data[7]]



    复制代码

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2025-9-15 20:02 , Processed in 0.052804 second(s), 30 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表