Skip to main content
Bumped by Community user
Bumped by Community user
added 2 characters in body
Source Link
Marcus Müller
  • 32.5k
  • 4
  • 35
  • 62

I'm trying to convert a signal from analog to digital and back to analog to observe the working of ADC and DAC, I use AD9248 as ADC and AD9767 as DAC, both of them are available on THDA ADA Altera board. I use the same clock for both DAC and ADC but I got nothing on the DAC output. The data output of ADC go inside an FPGA target and it give back the same data when clock edge to DAC. Here is my verilog code! Can someone tell me that it is even possible I receive a similar signal as the input at output? module dac_adc( input wire i_master_clk, input wire [13:0] i_adc_data, //ADC output wire o_adc_clk_a, // PLL clock input for ADC output wire o_adc_clk_b, // PLL clock input for ADC output wire o_adc_enable_signal_a, // ADC_OEA output enable pin for channel A output wire o_adc_enable_signal_b, // ADC_OEA output enable pin for channel A output wire o_adc_power_on, // POWER_ON pin, need to set it = 0 to enable both channel A and B // DAC output wire o_dac_clk_a, // PLL_OUT_DAC1 output wire o_dac_clk_b, // PLL_OUT_DAC2 output wire o_write_signal_dac_a, // DAC_WRTA use the same signal with clock output wire o_write_signal_dac_b, // DAC_WRTA use the same signal with clock output wire o_mode_select, // DAC_MODE, mode select for DAC DAC_MODE = 1 is dual port, = 0 is interleaved output wire [13:0] o_dac_data ); wire w_analogclk; wire w_adc_enable_a = 0; wire w_adc_enable_b = 0; wire w_adc_power_on = 0; wire w_mode_select = 1; reg [13:0] r_adc_data; // connect master clock = inner wire assign w_analogclk = i_master_clk; // set mode for ADC assign o_adc_enable_signal_a = w_adc_enable_a; assign o_adc_enable_signal_b = w_adc_enable_b; assign o_adc_clk_a = w_analogclk; assign o_adc_clk_b = w_analogclk; assign o_adc_power_on = w_adc_power_on; // set mode for DAC assign o_mode_select = w_mode_select; assign o_write_signal_dac_a = w_analogclk; assign o_write_signal_dac_b = w_analogclk; assign o_dac_clk_a = w_analogclk; assign o_dac_clk_b = w_analogclk; // each data in and out in each clock edge always @(posedge w_analogclk) r_adc_data <= i_adc_data;

assign o_dac_data = r_adc_data; // assign output of ADC = input of DAC endmodule

module dac_adc(
               input wire         i_master_clk,
               input wire [13:0]  i_adc_data,
               //ADC
               output wire        o_adc_clk_a, // PLL clock input for ADC
               output wire        o_adc_clk_b, // PLL clock input for ADC
               output wire        o_adc_enable_signal_a, // ADC_OEA output enable pin for channel A
               output wire        o_adc_enable_signal_b, // ADC_OEA output enable pin for channel A
               output wire        o_adc_power_on, // POWER_ON pin, need to set it = 0 to enable both channel A and B
               // DAC
               output wire        o_dac_clk_a, // PLL_OUT_DAC1
               output wire        o_dac_clk_b, // PLL_OUT_DAC2
               output wire        o_write_signal_dac_a, // DAC_WRTA use the same signal with clock
               output wire        o_write_signal_dac_b, // DAC_WRTA use the same signal with clock
               output wire        o_mode_select, // DAC_MODE, mode select for DAC DAC_MODE = 1 is dual port, = 0 is interleaved
               output wire [13:0] o_dac_data 
               );
   wire                           w_analogclk;
   wire                           w_adc_enable_a = 0;
   wire                           w_adc_enable_b = 0;
   wire                           w_adc_power_on = 0;
   wire                           w_mode_select = 1;
   reg [13:0]                     r_adc_data;
   // connect master clock = inner wire
   assign w_analogclk = i_master_clk;
   // set mode for ADC
   assign o_adc_enable_signal_a = w_adc_enable_a;
   assign o_adc_enable_signal_b = w_adc_enable_b;
   assign o_adc_clk_a = w_analogclk;
   assign o_adc_clk_b = w_analogclk;
   assign o_adc_power_on = w_adc_power_on;
   // set mode for DAC
   assign o_mode_select = w_mode_select;
   assign o_write_signal_dac_a = w_analogclk;
   assign o_write_signal_dac_b = w_analogclk;
   assign o_dac_clk_a = w_analogclk;
   assign o_dac_clk_b = w_analogclk;
   // each data in and out in each clock edge
   always @(posedge w_analogclk)
     r_adc_data <= i_adc_data;

   assign o_dac_data = r_adc_data; // assign output of ADC = input of DAC
endmodule

I'm trying to convert a signal from analog to digital and back to analog to observe the working of ADC and DAC, I use AD9248 as ADC and AD9767 as DAC, both of them are available on THDA ADA Altera board. I use the same clock for both DAC and ADC but I got nothing on the DAC output. The data output of ADC go inside an FPGA target and it give back the same data when clock edge to DAC. Here is my verilog code! Can someone tell me that it is even possible I receive a similar signal as the input at output? module dac_adc( input wire i_master_clk, input wire [13:0] i_adc_data, //ADC output wire o_adc_clk_a, // PLL clock input for ADC output wire o_adc_clk_b, // PLL clock input for ADC output wire o_adc_enable_signal_a, // ADC_OEA output enable pin for channel A output wire o_adc_enable_signal_b, // ADC_OEA output enable pin for channel A output wire o_adc_power_on, // POWER_ON pin, need to set it = 0 to enable both channel A and B // DAC output wire o_dac_clk_a, // PLL_OUT_DAC1 output wire o_dac_clk_b, // PLL_OUT_DAC2 output wire o_write_signal_dac_a, // DAC_WRTA use the same signal with clock output wire o_write_signal_dac_b, // DAC_WRTA use the same signal with clock output wire o_mode_select, // DAC_MODE, mode select for DAC DAC_MODE = 1 is dual port, = 0 is interleaved output wire [13:0] o_dac_data ); wire w_analogclk; wire w_adc_enable_a = 0; wire w_adc_enable_b = 0; wire w_adc_power_on = 0; wire w_mode_select = 1; reg [13:0] r_adc_data; // connect master clock = inner wire assign w_analogclk = i_master_clk; // set mode for ADC assign o_adc_enable_signal_a = w_adc_enable_a; assign o_adc_enable_signal_b = w_adc_enable_b; assign o_adc_clk_a = w_analogclk; assign o_adc_clk_b = w_analogclk; assign o_adc_power_on = w_adc_power_on; // set mode for DAC assign o_mode_select = w_mode_select; assign o_write_signal_dac_a = w_analogclk; assign o_write_signal_dac_b = w_analogclk; assign o_dac_clk_a = w_analogclk; assign o_dac_clk_b = w_analogclk; // each data in and out in each clock edge always @(posedge w_analogclk) r_adc_data <= i_adc_data;

assign o_dac_data = r_adc_data; // assign output of ADC = input of DAC endmodule

I'm trying to convert a signal from analog to digital and back to analog to observe the working of ADC and DAC, I use AD9248 as ADC and AD9767 as DAC, both of them are available on THDA ADA Altera board. I use the same clock for both DAC and ADC but I got nothing on the DAC output. The data output of ADC go inside an FPGA target and it give back the same data when clock edge to DAC. Here is my verilog code! Can someone tell me that it is even possible I receive a similar signal as the input at output?

module dac_adc(
               input wire         i_master_clk,
               input wire [13:0]  i_adc_data,
               //ADC
               output wire        o_adc_clk_a, // PLL clock input for ADC
               output wire        o_adc_clk_b, // PLL clock input for ADC
               output wire        o_adc_enable_signal_a, // ADC_OEA output enable pin for channel A
               output wire        o_adc_enable_signal_b, // ADC_OEA output enable pin for channel A
               output wire        o_adc_power_on, // POWER_ON pin, need to set it = 0 to enable both channel A and B
               // DAC
               output wire        o_dac_clk_a, // PLL_OUT_DAC1
               output wire        o_dac_clk_b, // PLL_OUT_DAC2
               output wire        o_write_signal_dac_a, // DAC_WRTA use the same signal with clock
               output wire        o_write_signal_dac_b, // DAC_WRTA use the same signal with clock
               output wire        o_mode_select, // DAC_MODE, mode select for DAC DAC_MODE = 1 is dual port, = 0 is interleaved
               output wire [13:0] o_dac_data 
               );
   wire                           w_analogclk;
   wire                           w_adc_enable_a = 0;
   wire                           w_adc_enable_b = 0;
   wire                           w_adc_power_on = 0;
   wire                           w_mode_select = 1;
   reg [13:0]                     r_adc_data;
   // connect master clock = inner wire
   assign w_analogclk = i_master_clk;
   // set mode for ADC
   assign o_adc_enable_signal_a = w_adc_enable_a;
   assign o_adc_enable_signal_b = w_adc_enable_b;
   assign o_adc_clk_a = w_analogclk;
   assign o_adc_clk_b = w_analogclk;
   assign o_adc_power_on = w_adc_power_on;
   // set mode for DAC
   assign o_mode_select = w_mode_select;
   assign o_write_signal_dac_a = w_analogclk;
   assign o_write_signal_dac_b = w_analogclk;
   assign o_dac_clk_a = w_analogclk;
   assign o_dac_clk_b = w_analogclk;
   // each data in and out in each clock edge
   always @(posedge w_analogclk)
     r_adc_data <= i_adc_data;

   assign o_dac_data = r_adc_data; // assign output of ADC = input of DAC
endmodule
Source Link

Convert analog to digital and back to analog

I'm trying to convert a signal from analog to digital and back to analog to observe the working of ADC and DAC, I use AD9248 as ADC and AD9767 as DAC, both of them are available on THDA ADA Altera board. I use the same clock for both DAC and ADC but I got nothing on the DAC output. The data output of ADC go inside an FPGA target and it give back the same data when clock edge to DAC. Here is my verilog code! Can someone tell me that it is even possible I receive a similar signal as the input at output? module dac_adc( input wire i_master_clk, input wire [13:0] i_adc_data, //ADC output wire o_adc_clk_a, // PLL clock input for ADC output wire o_adc_clk_b, // PLL clock input for ADC output wire o_adc_enable_signal_a, // ADC_OEA output enable pin for channel A output wire o_adc_enable_signal_b, // ADC_OEA output enable pin for channel A output wire o_adc_power_on, // POWER_ON pin, need to set it = 0 to enable both channel A and B // DAC output wire o_dac_clk_a, // PLL_OUT_DAC1 output wire o_dac_clk_b, // PLL_OUT_DAC2 output wire o_write_signal_dac_a, // DAC_WRTA use the same signal with clock output wire o_write_signal_dac_b, // DAC_WRTA use the same signal with clock output wire o_mode_select, // DAC_MODE, mode select for DAC DAC_MODE = 1 is dual port, = 0 is interleaved output wire [13:0] o_dac_data ); wire w_analogclk; wire w_adc_enable_a = 0; wire w_adc_enable_b = 0; wire w_adc_power_on = 0; wire w_mode_select = 1; reg [13:0] r_adc_data; // connect master clock = inner wire assign w_analogclk = i_master_clk; // set mode for ADC assign o_adc_enable_signal_a = w_adc_enable_a; assign o_adc_enable_signal_b = w_adc_enable_b; assign o_adc_clk_a = w_analogclk; assign o_adc_clk_b = w_analogclk; assign o_adc_power_on = w_adc_power_on; // set mode for DAC assign o_mode_select = w_mode_select; assign o_write_signal_dac_a = w_analogclk; assign o_write_signal_dac_b = w_analogclk; assign o_dac_clk_a = w_analogclk; assign o_dac_clk_b = w_analogclk; // each data in and out in each clock edge always @(posedge w_analogclk) r_adc_data <= i_adc_data;

assign o_dac_data = r_adc_data; // assign output of ADC = input of DAC endmodule