52 lines
1.2 KiB
Verilog

`timescale 1ns / 1ps
module ADS412x_driver(
// input sys_rst_n,
input user_clk,
output [11:0] user_rd_data,
output adc_sclk, // sclk
output adc_sdata, // sda
output adc_reset,
output adc_sen,
input [11:0] adc_data,
input adc_clk,
output adc_samp_clk
);
wire sys_rst_n;
assign sys_rst_n = 1;
wire adc_config_done;
wire rst_n;
reg [11:0] adc_data_r;
reg [11:0] adc_data_rr;
assign adc_samp_clk=user_clk;
assign rst_n = ((adc_config_done == 1'b1) && (sys_rst_n == 1'b1)) ? 1'b1 : 1'b0;
assign user_rd_data=adc_data_rr;////
ADC_CFG u_ADS4128_CFG(
.clk ( user_clk ),
.rstn ( sys_rst_n ),
.sclk ( adc_sclk ),
.sdata ( adc_sdata ),
.sen ( adc_sen ),
.adc_rst ( adc_reset ),
.cfg_done ( adc_config_done )
);
always @ (posedge adc_clk) begin
if (rst_n == 1'b0) begin
adc_data_r <= 12'h000;
adc_data_rr <= 12'h000;
end
else begin
adc_data_r <= adc_data;
adc_data_rr <= adc_data_r + 12'b1000_0000_0000;
end
end
endmodule