0 Members and 1 Guest are viewing this topic.
Nope but that should be doable.I have implemented sigma-delta DACs on FPGA just using regular IOs, for higher sample rate, yes I guess I could just aggregate the output in wider chunks and pass it to a SERDES.Thing is, the sigma-delta part would have to run fast enough and would probably need to be written differently.
Given, that an FPGA usually has more pins than needed, an R-2R DAC makes sense.We did that with 4 bit R-2R, generating VGA signal for monitors, Spartan 3, so it wasn't even that fast. That's ballpark the same frequency.
Quote from: tszaboo on August 18, 2022, 10:03:20 pmGiven, that an FPGA usually has more pins than needed, an R-2R DAC makes sense.We did that with 4 bit R-2R, generating VGA signal for monitors, Spartan 3, so it wasn't even that fast. That's ballpark the same frequency.A simple R2R dac for a 150Mhz sine wave?Good luck on flatness, overtone, third harmonics, power supply interference adjacent pin cross-talk, ground bounce...
PDM_process: process(dac_clk_i, dac_enable, data_fifo_out, err) begin if(dac_enable = '0') then dac_pdm_o <= '0'; err <= X"0000"; y_out <= X"0000"; else if(rising_edge(dac_clk_i)) then if (unsigned(data_fifo_out) >= unsigned(err)) then dac_pdm_o <= '1'; y_out <= X"FFFF"; else dac_pdm_o <= '0'; y_out <= X"0000"; end if; err <= std_ulogic_vector(unsigned(err) + unsigned(y_out) - unsigned(data_fifo_out)); end if; end if; end process;
For a fixed frequency output, you can also (better because more flexible) just generate the 1-bit sequence for one whole period of sine outside of the FPGA, store it in EBR and replay the sequence in loop through a SERDES. That eliminates the issue of running a sigma-delta DAC in real-time @several GHz.
That's the idea with SHE (generate a bitstream offline, play It endlessy). SHE is just a way to generate the bitstream minimizing the low order harmonics.