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位数据,传输给下一级模块。