Group SD0808

From ECE Department Wiki

Jump to: navigation, search

Contents

HDTV Decoding using the USRP and GNU Radio

Group Members: Kyle Scudder, Andrew Olson, Ryan Cofell, Ray Sukalski

Advisor: Dr. Farden


Project Description

Our project entailed the investigation of ATSC HDTV demodulation using the GNU Radio software framework in correspondence with the Universal Software Radio Peripheral(USRP). The USRP provides an RF front end and AD/DA converters which allow desired incoming signals to be easily manipulated by a computer making use of the open-source GNU Radio software framework. We will be making use of this framework by writing the necessary C++ and Python coding to demodulate such a signal. Simply put, a demodulation process that is normally conducted by extensive hardware is now being done through a combination of software and minimal hardware.


General Requirements

Baseline Requirements

>Produce summarized, easy-to-read documentation for the ATSC standard

>Produce documentation for already-written ATSC-related GNU Radio blocks

>Successfully decode previously-obtained HDTV test data using our own GNU Radio ATSC program

Target Requirements

>Successfully decode a HDTV data sample obtained from our antenna and hardware

>Analyze/profile previously-written ATSC GNU Radio blocks, find bottlenecks and areas for improvement

>Rework existing code based upon the data obtained from our analysis

"Overachievement" Requirements

>Implement a GUI for the GNU Radio ATSC sample gathering and decoding procedure


The Universal Software Radio Peripheral

Below is a photo of the USRP, which is 100% of the hardware being used to demodulate the HDTV signal without inclusion of the PC.

Image:USRP22.jpg

Below is a fine shot of the interior of the USRP box.

Image:USRP23.jpg


Conceptual HDTV Decoding vs. GNU Radio Implementation

The process of decoding HDTV signals is a complex one, requiring the use of several blocks that can't be understood without a strong communications background. Here is a conceptual implementation of an HDTV receiver (usually implemented by hardware):

Image:grand_alliance.jpg

Each of these blocks is comprised of one or more smaller blocks required for implementation.

Performing this same decoding process can be done using the GNU Radio software framework. Here's a block diagram of how the structure of the HDTV decoder on our PC looks like: Image:Gnuradio2.jpeg

As you can see, the general structure of this process is the same as the conceptual receiver, with a few exceptions. There exist a few variable and stream operation blocks that obviously wouldn't exist within a hardware implementation, and the clock synchronization/timing procedure isn't quite as black-and-white as the Grand Alliance receiver. And so the point is proven, the GNU Radio software framework has created a complex communications network through software!


Brief Summary of Our Contributions

Here's some bullet-point notes as far as what we've done with the ATSC GNU Radio decoder (and things related):

>Composed thorough documentation for both the ATSC standard and ATSC-related GNU Radio blocks. The ATSC standard was obviously already documented, but the only way to get the full picture was to read into 100+ page technical documents. We've created easy-to-read, "tell-me-what-I-need-to-know" documentation for the standard. As far as the GNU Radio blocks, they simply weren't documented when we began this project. So we're pretty much the pioneers of GNU Radio ATSC decoder documentation, and hopefully our cliff notes will increase interest in the project.

>Doubled the efficiency of the previously-written GNU Radio ATSC receiver. Coming into the project, the current version of the procedure could successfully decode a data sample in approximately 8 times the total length of the data sample (in seconds). After profiling the code, finding specific bottlenecks, and spending our time rewriting these strategic areas, we've created a receiver that can decode data in 4 times the length of the data sample (or as we sometimes refer, 4 times real-time).

>Created a user-friendly GUI for a dramatic increase in the efficiency of gathering data, running the decoder, and other related tasks. When we first came into this project, we quickly became frustrated with how much unnecessary time was spent on running the scripts required for our receiver. Multiple scripts located in multiple directories needed to be run, and sometimes requiring the use of multiple console windows. We've created a simple text-based menu for picking and choosing whichever operation the user wishes to perform, whether it be looking at the frequency spectrum, gathering some HDTV data, running the GNU Radio ATSC decoder, or viewing the output video. Here's a snapshot of our utility:

Image:Gui.jpeg

Quick Links

Web site of the GNU Radio Project: http://www.gnu.org/software/gnuradio/

Web site of Ettus Research, makers of the USRP: http://www.ettus.com/

A_54 ATSC standard documentation (Download): Media:A_54a_with_corr_1.pdf