Friday, 1 May 2015

Back to the Zynq project

Zynq + MyriadRF in 19 inch draw

Now that work is starting to wind down on DATV-Express I have started to look at
what to do next on the DATV front. 

Lime Microcircuits have recently reduced the price of their LMS6002D FPRF chip,
also the price of Zynq based CPU/FPGA boards is starting to come down, for
example the Z Turn   so I thought it was time to look again at the Zedboard I bought
used a while ago.

The picture shows a Zedboard connected via a low density FMC socket to a MyriadRF
board plugged into a Zipper adapter. The PSU to the left is a DC-DC supply for a
car computer and supplies 12v 5v and 3v3 at reasonable current levels to power the

The last few days I have been attempting to create a PetaLinux BSP for the hardware,
after a lot of work I finally have managed to create a basic Linux install for the system
with I2C and SPI support. I hit all the problems that everyone else seem to hit, mainly
with the configuration of the device tree. While this has been very frustrating it has
forced me to learn quite a lot about low level Linux support on ARM platforms.

The next job will be to write the code to configure the MyriadRF then I have to decide
on how I intend to do the signal processing.

For those not familiar with the Zynq, it is basically an FPGA with two ARM cores
connected in the fabric, it also has all the usual ARM peripherals like I2C, SPI,
Ethernet etc.

What I would like to do is to implement the DATV-Express software on it to begin
with, then to add the DPD (Digital Pre Distortion), then DVB-S/T receive. There
may be other things like video capture and MPEG encoding that could be added
but that would be a lot of work and I may not bother as even low end ARM boards
can do that sort of thing now.

My current thoughts are to use one CPU for Linux and the other (in combination
with the programmable logic) to do the DVB-S/T encoding / decoding and DPD.

Even with all these goodies the system still looks expensive, the solution maybe
to throw in a SDR transceiver as well. For the moment this will just be a personal
project. I will let you know how things progress.

Wednesday, 8 April 2015

Follow up to my previous post

On air tests of NIM software

DATV being streamed to an iPhone 5

This shows the initial results of my tests with the Sharp STB0899 based NIM tuner.
On the transmit side I used a USB webcam who's output was captured using Vmix
this was then exported as a DirectShow source to a graphedit script that converted
it into an MPEG2 encoded transport stream. The transport stream was then sent
across my LAN to a remote Odroid-C which was running Express-server software.
The signal was then translated to RF by a DATV-Express transmitter board and
transmitted on 1249 MHz @ 4MS/s FEC=1/2 DVB-S. The signal was received
using a 5 Euro Sharp Tuner module donated by Rob. The resulting transport stream
was sent to a Linux computer using a cheap Chinese EZ-USB board. Once received
on the Linux machine it was sent to the VLC player using UDP packets via
the loop-back  address for display. You can see the received picture on the left screen.

The code used to control the tuner is far from a state where it could be used in action
but at least it shows things are moving in the right direction and all the components work.
I have to thank both Evariste F5OEO and Rob M0DTS for getting the project to this

Saturday, 28 March 2015

I get easily diverted

Sharp BS2F7VZ0164 Tuner
Rob M0DTS sent me a couple of tuner modules that he had bought on eBay.
I added a cheap Chinese EZ-USB module (also available on eBay). To produce a
standalone DVB-S/S2 receiver.

So far I have been able to read and write to the various registers in the chips on
both the tuner and USB2 board using a modified version of the firmware I wrote
for Express. Usually under Linux this is all done using a Kernel module however
I am doing it in user space using libusb, just like I do with Express.

The demodulator chip used in this module is the STB0899 which is the same one
used in the excellent Tutioune software by Jean Pierre F6DZP. Evariste F5OEO
is also working on code for this tuner module as is Rob M0DTS. There is also a
Kernel module available for Linux. This all means that there is more support
available for this rather elderly chip than for many others. The only thing that
needs figuring out is how to program the frontend as it is different to the
TT budget S2-1600 and S2-3200 modules currently being used

I am hoping to use the work done by our fellow Amateurs to get my unit going.
There is no point in re-inventing the wheel so I will be lazy and let them sort
out the configuration information for me.

Unfortunately manufacturers of digital TV chip sets do not like to share information
on their chips with the likes of us Amateurs. It is possible to implement receivers
in software and in fact it has been done. Unfortunatly because of the nature of the
algorithms used it is much more efficient to implement them in an ASIC consuming
a few milliwatts rather than a large PC consuming hundreds of watts.

I have looked at doing this in an FPGA but the cost both in hardware and in time
would be prohibitive.

There are some multi-standard chips available now that do DVB-T/T2/S/S2 and
it would be really nice to use these but while it is always possible to find someone
that will sell you the chips getting hold of the programming information is
something else. While Amateurs follow consumer standards we are always
likely to have these problems.

The broadcasters are trying again to get mobile TV chips into smartphones, DVB-H
was a bit of a failure but now they are pushing DVB-T2 for mobile TV. Sony I
believe are about to release a mobile with TV support so we shall see if they have
any more luck this time. Ron Economos W6RZ has done a nice implemetation of
DVB-T2 for GNURadio, so we are ready!. 


Monday, 9 March 2015

Server Developments

Configuration over a LAN
Express Server Box

I continue to work on my remote TV system. DATV-Express and Odroid-C1 fit
nicely into a standard Hammond box (as can be seem in the bottom picture).
Above that is a Techno-Trend Connect S2-3600 DVB-S/S2 satellite receiver
which is now fully supported in the distribution of Linux that the Odroid runs.
Unfortunately the S2-3600 is no longer on sale but that is what happens in
the consumer electronics business. PC Linux tends to be behind the curve on
the devices it supports and ARM Linux is behind PC Linux.

The top picture is the configuration screen viewed on an iPhone 5. Before you
ask why the iPhone is so fat, it is because it is plugged into a FLIR IR camera body

I have yet to install a opto-isolator board into the server so I can do TX/RX and
band switching remotely. Also I have to add support for the receiver so I can
stream video across my LAN to various devices. I have some example code to
work from for the receive streaming so it shouldn't be too long before I have that

I am awaiting arrival of a Black Magic HDMI capture card. I finally got around to
reading the manual for my Cannon Legria HF-S30 Camcorder so I now know how
to stop it going to sleep every few minutes.

I am hoping to get this all done so we can re-start TV activity in the Worthing area
soon. I would also like to start trialling HEVC (h.265) transmissions now that
the codec in ffmpeg has started to mature.

Tuesday, 17 February 2015


Live transmission using vMix

Transmitter graph
Windows Server Application
This picture shows DATV-Express transmitting a 4 MSymbol/sec signal all running
on Windows 8. The video mixing software is the free version of vMix  which is adding
a caption to the picture. The output is then sent via a directShow capture filter to a
filter graph which does the sound and vision encoding, it is then sent to DATV-Express
via UDP. The rather washed out picture is then being received on a Satlink receiver. It
is only washed out because of the difference in light between the two display screens
was too much for my still camera.
This example was done to show what is possible with a bit of imagination and is not
supported by the DATV-Express group.

The video capture in the picture above used a Logitech C920 webcamera.
vMix is capable of supporting many other devices and formats. The only other
input format I have tried so far is Firewire but that adds a 1/2 second delay. I am
looking at adding HDMI capture. 

The free version of vMix only supports 2 SD input capture devices but is useful for
the budget conscious Ham.

Tuesday, 10 February 2015

Gone to the dark side I have

Windows Streaming

Here is a screen shot of a Windows version of express_server. The orange and purple
window is a very basic filter graph taking input from a Logitech C920 web camera and
encoding it in MPEG2, then streaming it via UDP to DATV-Express using my new
Windows server. I am using GraphStudio rather than GraphEdit as the later is not
very stable on my PC. The Satlink receiver at the bottom right shows the received
picture. Most of the CPU load visible in the Windows task manager is down to the
MPEG2 encoding. This is mainly a proof of concept system which I only got working
this afternoon.

Thursday, 5 February 2015

Digital Pre-Distortion, express_server and the Zedboard

A number of projects are ongoing here. With the help of Rob M0DTS
I have been investigating DPD or Digital Pre-distortion.
This is a method of pre-distorting a signal to compensate for the distortion
introduced by the power amplifier and in theory can have a huge effect on
the IMD performance of an amplifier. Our initial tests involved
using a SkySpy SDR to monitor the output of the amplifier and then
pre-distorting the transmitted signal inside the DATV-Express FPGA.
We only corrected for the AM/AM distortion (no phase correction),
The best we were able to achieve was around a 10 dB improvement.
This is well short of what is possible.

Having read an appnote from the guys that gave you MATLAB it became
obvious that it would be necessary to correct for phase and for memory effects.
The approached I had used with the Express board would not have been feasible
to use anymore. The reason being a lot of information has to passed about
in hard realtime to make the corrections possible. The system needs to
continuously track the transmitted signal and make fine adjustments it also
has to remember what was previously transmitted as that too can effect the
amplifier's current transfer characteristic. For more information have a look
at these files Mathworks DPD

I have been looking for a reason to use the MyriadRF board I have and to play
with the new generation of FPGA SOCs. I have now started to move towards
Xilinx parts mainly because of the large amount of free IP available from them.
I was able to buy at a good price a Zedboard on eBay.

So far I have done a bare metal tutorial on the Zedboard (flashing some LEDs
under control of an ARM core). I have installed FreeRTOS on the board and
more recently PetaLinux (Xilinx's own version of Linux).

I am now working on a BSP (Board Support Package) customised for use with
the MyriadRF/Clipper board. The idea is to produce a proof of concept system
for investigating what if anything will replace DATV-Express.

I was dreading having to write a load of code to program the hundreds of registers
in the Lime Microsystems devices but I see there is now an open source project
up and running to provide libraries to do just that. The libraries are aimed at the
LMS7002M chip rather than the 6002 I have but they are very similar.

If this ever went into production it would probably use the MicroZed SOM
and a bespoke carrier board.

Going back to DATV-Express a number of people have been able to use the
DATV-Express server code project I placed on Github. This is just a basic
DVB-S transmitter that accepts a transport stream either via stdin or UDP.
The feedback I have received form various people has been of great help in fixing
bugs and making improvements. I am also pleased to see that a number of people
plan to publish what  they have done. Amateur radio is about self learning so it
makes my efforts seem worthwhile when other use or improve on what I have done.