ATSC: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
(→‎Setting up SMPlayer: reflect that the UDP sink block is now included with the core blocks and say to use a UDP vs. TCP stream, as suggested on the internet)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
This page represents the documentation for all of the ATSC blocks, simply because they are intended to be used together, and most of the blocks have no parameters.   
This page represents the documentation for all of the ATSC blocks, simply because they are intended to be used together, and most of the blocks have no parameters.   


GNU Radio's ATSC (Advanced Television Systems Committee) module contains everything needed to transmit or a receive an ATSC signal.  ATSC uses "8VSB" meaning 8-level vestigial sideband modulation.  Each symbol includes two bits from the MPEG transport stream, which are then trellis modulated to produce a third bit.  The 6 MHz channel used for broadcast ATSC carries a symbol rate of 10.76 megabaud, a gross bit rate of 32 Mbit/s, and a net bit rate of 19.39 Mbit/s of usable data.
GNU Radio's ATSC (Advanced Television Systems Committee) module contains everything needed to transmit or a receive an ATSC 1.0 signal.  ATSC 1.0 uses "8VSB" meaning 8-level vestigial sideband modulation.  Each symbol includes two bits from the MPEG transport stream, which are then trellis modulated to produce a third bit.  The 6 MHz channel used for broadcast ATSC 1.0 carries a symbol rate of 10.76 megabaud, a gross bit rate of 32 Mbit/s, and a net bit rate of 19.39 Mbit/s of usable data.


Note that on the receive side, ATSC Receive Pipeline is a hier block defined [https://github.com/gnuradio/gnuradio/blob/master/gr-dtv/python/dtv/atsc_rx.py here].
Note that on the receive side, ATSC Receive Pipeline is a hier block defined [https://github.com/gnuradio/gnuradio/blob/master/gr-dtv/python/dtv/atsc_rx.py here].
== ATSC 1.0 vs ATSC 3.0 ==
[[File:ATSC04-Ch38.jpg|thumb|ATSC 1.0 spectrum and spectrogram. This is the version of ATSC signal that Gnu Radio's "ATSC" blocks can transmit and receive.]]
[[File:ATSC-Ver3-Ch25-02.png|thumb|ATSC 3.0 spectrum and spectrogram. Gnu Radio's ATSC blocks cannot currently transmit nor receive these signals.]]
These blocks do not currently work with ATSC 3.0. ATSC 3.0 is based on orthogonal frequency division multiplexing (OFDM) of multiple quadrature amplitude modulated (QAM) signals, as opposed to ATSC 1.0's use of 8VSB, as discussed above.


== Parameters ==
== Parameters ==
Line 21: Line 29:
#* allow hard frame drop
#* allow hard frame drop
# Under the cache tab, uncheck 'auto', and set cache for streams to 8096
# Under the cache tab, uncheck 'auto', and set cache for streams to 8096
# To open stream, do Open > URL > and use the address tcp://127.0.0.1:8800
# To open stream, do Open > URL > and use the address udp://127.0.0.1:8800


You will also need to install the OOT gr-grnet, to serve the stream to SMPlayer
A UDP sync block is now included in the core blocks under the Core - Networking Tools section.  You can can set the port to 8800 for this block to start serving to SMPlayer.


== Example Transmit Flowgraph ==
== Example Transmit Flowgraph ==

Latest revision as of 18:43, 16 June 2024

This page represents the documentation for all of the ATSC blocks, simply because they are intended to be used together, and most of the blocks have no parameters.

GNU Radio's ATSC (Advanced Television Systems Committee) module contains everything needed to transmit or a receive an ATSC 1.0 signal. ATSC 1.0 uses "8VSB" meaning 8-level vestigial sideband modulation. Each symbol includes two bits from the MPEG transport stream, which are then trellis modulated to produce a third bit. The 6 MHz channel used for broadcast ATSC 1.0 carries a symbol rate of 10.76 megabaud, a gross bit rate of 32 Mbit/s, and a net bit rate of 19.39 Mbit/s of usable data.

Note that on the receive side, ATSC Receive Pipeline is a hier block defined here.

ATSC 1.0 vs ATSC 3.0

ATSC 1.0 spectrum and spectrogram. This is the version of ATSC signal that Gnu Radio's "ATSC" blocks can transmit and receive.
ATSC 3.0 spectrum and spectrogram. Gnu Radio's ATSC blocks cannot currently transmit nor receive these signals.

These blocks do not currently work with ATSC 3.0. ATSC 3.0 is based on orthogonal frequency division multiplexing (OFDM) of multiple quadrature amplitude modulated (QAM) signals, as opposed to ATSC 1.0's use of 8VSB, as discussed above.

Parameters

On the receive side, the only real parameter is the oversampling ratio, a.k.a. the samples per symbol. The default is 1.5 but people have used 1.1 as well (someone please explain this).

On the transmit side, none of the blocks have any parameters.

Setting up SMPlayer

If on Linux, SMPlayer is a great video player for viewing the ATSC stream. Follow the instructions below to install and configure SMPlayer:

  1. sudo apt-get install smplayer
  2. In SMPlayer go to options -> preferences
  3. Under the performance sidebar item check the boxes:
    • allow frame drop
    • allow hard frame drop
  4. Under the cache tab, uncheck 'auto', and set cache for streams to 8096
  5. To open stream, do Open > URL > and use the address udp://127.0.0.1:8800

A UDP sync block is now included in the core blocks under the Core - Networking Tools section. You can can set the port to 8800 for this block to start serving to SMPlayer.

Example Transmit Flowgraph

This is the example ATSC transmitter which can be found here. You can transmit this signal by removing the Throttle block and adding an SDR sink to the output of the FFT filter.

Atsc-tx.png

Example Receive Flowgraph

This is the example ATSC receiver which can be found here. Feel free to change the File Source type to complex (and remove the converter block) if that's the format of your IQ data. You can also replace the File Source and converter with an SDR source block.

Atsc-rx.png