USB传输ADC数据之ADC驱动设计

ADC手册解读

本文中,笔者选择的ADC芯片为AD9238,12bit ADC,其采样时钟支持20 MSPS/40 MSPS/65 MSPS,双通道芯片,CMOS并行输出数据接口,输入电压超量程会有电平指示。其ADC架构框图如下所示
在这里插入图片描述
这块ADC的驱动逻辑还是很简单的,单纯的CMOS并口逻辑,不需要做延迟对齐等操作,也不需要SPI配置一类的东西,因为笔者目前只有这块ADC,便以这块adc作为整体工程的前端,后续有机会会更新多种类型的adc

ADC驱动逻辑

module adc_drive(
    input               i_adc_clk   ,
    input               i_adc_rst   ,
    input   [11:0]      i_adc_1     ,
    input   [11:0]      i_adc_2     ,
    output  [31:0]      o_adc_data  ,
    output              o_adc_valid 
    );


reg     [15:0]          ri_adc_1    ;
reg     [15:0]          ri_adc_2    ;
reg     [31:0]          ro_adc_data ;
reg                     ro_adc_valid;

always@(posedge i_adc_clk,posedge i_adc_rst)
begin
    if(i_adc_rst) begin
        ri_adc_1 <= 'd0;
        ri_adc_2 <= 'd0; 
    end
    else begin
        ri_adc_1 <= {4'b0001,i_adc_1};
        ri_adc_2 <= {4'b0010,i_adc_2};
    end
end

always@(posedge i_adc_clk,posedge i_adc_rst)
begin
    if(i_adc_rst) begin
        ro_adc_data  <= 'd0;
        ro_adc_valid <= 'd0;
    end
    else begin
        ro_adc_data  <= {ri_adc_1,ri_adc_2};
        ro_adc_valid <= 'b1;
    end
end

其逻辑很简单,接收12位并口数据,分别给两通道打上通道标签即可,然后将两通道数据合并为一个32位数据,传输给下一级模块。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值