axis_red_pitaya_adc.v 912 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. `timescale 1 ns / 1 ps
  2. module axis_red_pitaya_adc #
  3. (
  4. parameter integer ADC_DATA_WIDTH = 14
  5. )
  6. (
  7. // System signals
  8. input wire aclk,
  9. // ADC signals
  10. output wire adc_csn,
  11. input wire [15:0] adc_dat_a,
  12. input wire [15:0] adc_dat_b,
  13. // Master side
  14. output wire m_axis_tvalid,
  15. output wire [31:0] m_axis_tdata
  16. );
  17. localparam PADDING_WIDTH = 16 - ADC_DATA_WIDTH;
  18. reg [ADC_DATA_WIDTH-1:0] int_dat_a_reg;
  19. reg [ADC_DATA_WIDTH-1:0] int_dat_b_reg;
  20. always @(posedge aclk)
  21. begin
  22. int_dat_a_reg <= adc_dat_a[15:PADDING_WIDTH];
  23. int_dat_b_reg <= adc_dat_b[15:PADDING_WIDTH];
  24. end
  25. assign adc_csn = 1'b1;
  26. assign m_axis_tvalid = 1'b1;
  27. assign m_axis_tdata = {
  28. {(PADDING_WIDTH+1){int_dat_b_reg[ADC_DATA_WIDTH-1]}}, ~int_dat_b_reg[ADC_DATA_WIDTH-2:0],
  29. {(PADDING_WIDTH+1){int_dat_a_reg[ADC_DATA_WIDTH-1]}}, ~int_dat_a_reg[ADC_DATA_WIDTH-2:0]};
  30. endmodule