Monday, February 21, 2011

ATLYS HDMI

Followup to my previous post, related to Kaveh's comment. This post describes how I set up HDMI TX and RX.
To test HDMI TX and RX, I loaded the HDMI switch example from Xilinx App Note 495. Loaded Top-level files dvi_demo.v and dvi_demo.ucf into ISE WebPACK, along with all the lower-level modules they require. Everything is in xapp495.zip from Xilinx.
Board configuration:
JP6&JP7 in: link SCL/SDA between TX&RX.
JP11 in: boot from USB stick.
JP5 in: Enable J1 HDMI input.
Connected J2 to display, J3 to source (J1 sometimes works as well).
I load dvi_demo.bit from a USB stick - takes about 30 seconds each time.
Tested with a Samsung TV and DirecTV box and Samsung BluRay.
The LED's show that RX is sync'ing with the signal and the display shows up on the TV. Tried several channels at different resolutions (no 1080p ones available). Sometimes had to unplug and replug the HDMI cables to get things to sync up. Just video, no audio passing through yet for some reason.
So that's my progress so far.

Wednesday, January 12, 2011

Atlys and HDMI on Linux

Xilinx App Note 495 describes sample implementations of DVI/HDMI receiver and transmitter on the Digilent Atlys board. I built the code using WebPACK 12.4, and it works as advertised: The colorbar test pattern displays nicely on my HDMI monitor.

Also installed Digilent's Linux version of their Adept tools for FPGA programming. They don't seem to have the full GUI version available, but the command-line tool was able to load my test code (as a WebPACK-generated .bit file) into the Atlys FPGA with no problem. Don't see any way to load code into the SPI flash: it appears that Windows-based tools are still needed for that.

Only one minor glitch: I use Debian, which isn't one of Digilent's supported distributions. In recent versions of Debian, the udev package doesn't allow plugin devices to have protection mode 0666, which means that the Digilent tools will only work if run as root.
The fix is to edit "/etc/udev/rules.d/52-digilent-usb.rules" and add a group:
SYSFS{idVendor}=="1443", MODE="666" GROUP="plugdev"
then any user in the "plugdev" group can run the Digilent tools. The /etc/group file should have a line like
plugdev:x:46:jr
where "jr" is my username.

Wednesday, December 29, 2010

Digilent Atlys

For Christmas, Santa Claus brought a Digilent Atlys development board for the Xilinx Spartan-6 FPGA's. Nice board, with a bunch of peripherals (Ethernet, USB, audio, HDMI!, etc).
The HDMI interface and protocol is implemented as firmware in the FPGA. My only test so far was to connect an HDMI output to a monitor and power up the board. It generates a test pattern of colored squares right out of the box. Nice. 2011 is going to be interesting.
While setting it up, I also noticed that Digilent now provides tools for Linux programming and communication with their FPGA boards. Need to check those out as well.

Wednesday, November 24, 2010

Saltwater immersion testing

I've been working on a project that uses a custom A/D-FPGA board to generate and process sonar signals. Basic functionality is working, so the client took it to the dock for some live testing.
The testing included an "unscheduled" saltwater immersion experiment, with power applied to the board no less.
It was recovered after 24 hours; effects on the circuit were not beneficial.
So far, it looks as if the flash memory and A/D converters survived with just minor corrosion on the leads. The FPGA is interesting: definitely nonfunctional, and there's a pit where the epoxy case is crumbly. I suspect that the 1.2 volt switching regulator went out of range and fried the FPGA core.
Next time we plan to use a waterproof case.

Friday, November 6, 2009

Grub-ing

Just got a nice Gateway quad-core PC to speed up FPGA designs, so time to install Debian Linux on it. Install went smoothly, until I tried to boot into Linux for the first time. Then I get error messages:
ata1: softreset failed (device not ready)
ata2: softreset failed (device not ready)
and Linux hangs.
After a lot of Google-ing and hacking (and hair-pulling), I finally found the problem: The Debian installer set the boot partition on the SATA drive to /dev/sdb3, and it really should have been /dev/sda3. Still get the "softreset failed" errors, but Linux boots and seems to operate normally.
Thinking about the problem: I used a USB DVD drive for the install, and then disconnected it before booting. I suspect the DVD was sda and the sata disk was sdb during the install, and the sata became sda when booting without the DVD drive.

Monday, August 10, 2009

915MHz signal with a 100MHz A/D

I've been using a Radiotronix DP-1205 RF transceiver that operates in the 915MHz unlicensed ISM band. The power level, operating frequency, FM deviation, etc., are set using the SPI serial interface. So I decided to see if my MHZ100Q A/D PCB could see the signal. I bypassed the antialiasing filter and associated buffer, and then coupled the transceiver signal to the input.
It Works! The signal is low amplitude (less than 10% of full scale), and there are a lot of spurs 20dB down or so, but the carrier is clearly visible. The 902 to 928 MHz band is being undersampled at 100 MHZ so it shows up at 2 to 28 MHz in the digitized signal (in full compliance with Nyquist's rules).
The A/D is only spec'ed to 550 MHz, so I wouldn't trust the signal and distortion levels, but it's definitely a usable signal.
More details on the MHZ100Q project site at Source Forge.

Wednesday, April 15, 2009

MHZ100Q - on sourceforge

I can now digitize one signal at 100MHz using my A/D card, capture in the Digilent Xilinx FPGA board, and upload to a PC via the USB port. I'm using Octave to upload and display the data, making a sort of oscilloscope. So I decided it's time to create a sourceforge open-source project.
It's http://mhz100q.sourceforge.net . Code is all in Subversion. It's all there, but I still need to create some build instructions and other documentation.