Skip to content

Current Status

suoto edited this page Mar 13, 2021 · 2 revisions

DVB-S2 Tx -- current status

  • Leveraging existing GNU Radio work to generate test vectors
  • Core logic 90% completed
    • Baseband scrambler
    • BCH encoder
    • Bit interleaver
    • Constellation mapper
    • LDPC Encoder
    • Physical layer framing
    • Modulation still WIP
  • Using industry standard AXI streaming
  • Each module tested individually for all relevant DVB-S2 base spec parameters (+ AXI streaming specifics), for a total of more than 1100 tests
    • Designed to handle parameters varying on a per frame basis
  • Continuous integration using open source tools
    • GHDL for VHDL simulation
    • VUnit for unit testing support
    • Yosys for RTL synthesis
    • Ensures code is both functionally correct and synthesis friendly
  • Resource usage using Xilinx's XC7Z007S as reference:
    Resource Utilization Utilization %
    LUT ~4,9k 34%
    LUTRAM 222 4%
    FF ~3k 11%
    BRAM 20 (~90 kB) 41%

Block diagram

dvbs2_tx block diagram
DVB-S2 Tx block diagram

Peek on how dev looks like

Tx top level single frame
DVB-S2 Tx sim -- single frame
Tx top level single frame
DVB-S2 Tx sim -- multiple frames
    0 ps - default                     -    INFO - Parsed 52 configuration(s): (dvb_sim_utils_pkg.vhd:189)
    0 ps - default                     -    INFO - - 0: config(constellation="mod_32apsk", frame_type="fecframe_short", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_32APSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 1: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c9_10", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C9_10") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 2: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 3: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c2_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C2_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 4: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c1_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C1_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 5: config(constellation="mod_32apsk", frame_type="fecframe_normal", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_32APSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 6: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 7: config(constellation="mod_8psk", frame_type="fecframe_short", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_8PSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 8: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 9: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c3_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C3_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 10: config(constellation="mod_16apsk", frame_type="fecframe_short", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_16APSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 11: config(constellation="mod_8psk", frame_type="fecframe_short", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_8PSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 12: config(constellation="mod_32apsk", frame_type="fecframe_short", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_32APSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 13: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 14: config(constellation="mod_16apsk", frame_type="fecframe_short", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_16APSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 15: config(constellation="mod_32apsk", frame_type="fecframe_normal", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_32APSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 16: config(constellation="mod_32apsk", frame_type="fecframe_short", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_32APSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 17: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c1_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C1_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 18: config(constellation="mod_8psk", frame_type="fecframe_short", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_8PSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 19: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c9_10", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C9_10") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 20: config(constellation="mod_8psk", frame_type="fecframe_short", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_8PSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 21: config(constellation="mod_16apsk", frame_type="fecframe_short", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_16APSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 22: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 23: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c1_2", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C1_2") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 24: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 25: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 26: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 27: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 28: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c3_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C3_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 29: config(constellation="mod_32apsk", frame_type="fecframe_normal", code_rate="c9_10", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_32APSK_C9_10") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 30: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 31: config(constellation="mod_16apsk", frame_type="fecframe_short", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_16APSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 32: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c9_10", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C9_10") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 33: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 34: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c2_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C2_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 35: config(constellation="mod_8psk", frame_type="fecframe_short", code_rate="c3_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_8PSK_C3_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 36: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 37: config(constellation="mod_16apsk", frame_type="fecframe_normal", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_16APSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 38: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 39: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c2_3", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C2_3") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 40: config(constellation="mod_16apsk", frame_type="fecframe_short", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_16APSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 41: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c1_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C1_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 42: config(constellation="mod_32apsk", frame_type="fecframe_normal", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_32APSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 43: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c3_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C3_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 44: config(constellation="mod_32apsk", frame_type="fecframe_normal", code_rate="c4_5", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_32APSK_C4_5") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 45: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c1_2", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C1_2") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 46: config(constellation="mod_32apsk", frame_type="fecframe_short", code_rate="c8_9", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_32APSK_C8_9") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 47: config(constellation="mod_qpsk", frame_type="fecframe_normal", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_QPSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 48: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 49: config(constellation="mod_qpsk", frame_type="fecframe_short", code_rate="c1_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_QPSK_C1_4") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 50: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c5_6", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C5_6") (dvb_sim_utils_pkg.vhd:191)
    0 ps - default                     -    INFO - - 51: config(constellation="mod_8psk", frame_type="fecframe_normal", code_rate="c3_4", base_path="dvb_fpga/gnuradio_data/FECFRAME_NORMAL_MOD_8PSK_C3_4") (dvb_sim_utils_pkg.vhd:191)
40000 ps - default                     -    INFO - Running test with: (dvbs2_tx_tb.vhd:442)
40000 ps - default                     -    INFO -  - constellation  : mod_32apsk (dvbs2_tx_tb.vhd:443)
40000 ps - default                     -    INFO -  - frame_type     : fecframe_short (dvbs2_tx_tb.vhd:444)
40000 ps - default                     -    INFO -  - code_rate      : c3_4 (dvbs2_tx_tb.vhd:445)
40000 ps - default                     -    INFO -  - data path      : dvb_fpga/gnuradio_data/FECFRAME_SHORT_MOD_32APSK_C3_4 (dvbs2_tx_tb.vhd:446)
40000 ps - default                     -    INFO - Waiting for test completion (dvbs2_tx_tb.vhd:361)
40000 ps - file_reader_t(input_stream) -   DEBUG - Waiting for all files to be read. Outstanding now: 0 (file_utils_pkg.vhd:168)
40000 ps - file_reader_t(output_ref)   -   DEBUG - Waiting for all files to be read. Outstanding now: 0 (file_utils_pkg.vhd:168)
40000 ps - file_reader_t(bb_scrambler) -   DEBUG - Waiting for all files to be read. Outstanding now: 0 (file_utils_pkg.vhd:168)
40000 ps - file_reader_t(bch_encoder)  -   DEBUG - Waiting for all files to be read. Outstanding now: 0 (file_utils_pkg.vhd:168)
40000 ps - file_reader_t(ldpc_encoder) -   DEBUG - Waiting for all files to be read. Outstanding now: 0 (file_utils_pkg.vhd:168)
Clone this wiki locally