Part 2 - front panel board peripherals, DIY a power supply and a Xilinx JTAG programmerBack to the printer board, I first looked up the datasheet for each integrated on the board. That's how I got an idea about the block diagram. Upon further inventory, the board was found to have the following:
- - FPGA Xilinx Spartan IIE, XC2S50E-6, 50,000 gates, i.e. 768 slices
- - 50 MHz oscillator
- - numeric keypad + several other buttons (20 push buttons in total)
- - Black/white LCD 256*64 (not sure about the resolution)
- - white backlight for LCD
- - LCD controller with EPSON S1D13503
- - 64K x 16 SRAM linked to the LCD controller
- - resistive touch screen
- - controller (ADC) for touch screen, made with ADS7846N
- - sensor for temperature and for supply voltage (included in ADS7846N)
- - an ADC channel with SAR at 125 KHz, left free from ADS7846N
- - piezo buzzer with volume control (2 bits, PWM + ON/OFF)
- - 4 LEDs + 1 bicolor LED (red + green)
- - several connections with buffers linked to a connector, 3 in + 1 out, suitable for serial, synchronous or asynchronous communication
- - Configuration PROM
- - standard JTAG connector, with 9 pins at 0.1 inch (it was not mounted, but it was very good that there were holes for it)
In terms of equipment, it is only good as a didactic board with FPGA, it has more than enough on it to develop applications in VHDL, Verilog or other HDL.
I already knew the power supplies, because I had put the oscilloscope on the connector of the board, to a functional printer. Otherwise I wouldn't have known how much to feed the board (yes, a few days after I got the boards, I took the oscilloscope from home, put it in a travel bag, and did the measurements at work, on a printer which was just having another defective panel replaced).
I got what is written in blue on the sheet in the picture. What is written in black, was added these days [in 2012].
The board needs 24V, later I would find out that they are for the LCD backlight and buzzer, and 3.3V for the logic part. I hastily whipped up a power supply, from a 24V switching power supply (salvaged from another broken printer), followed by a 12V LM7812 and an LF33 LDO which produces 3.3V. 12V was not needed, but the LF33 did not support more than 16V on the input, I could not connect it directly to 24V. So I put an LM7812 first, which supports a maximum of 36V, followed by an LF33. I don't put the diagram of the power supply anymore, I didn't even draw it. It's the one in the catalog, with a few tens of microfarads in parallel with 100 nF, both on inputs and outputs, at each stabilizer. The assembly is done in the air, it doesn't look very nice, but I was eager to start the toy.
Starting from the FPGA datasheet, I saw that the JTAG pins are dedicated, they cannot be mapped elsewhere. Following the wiring traces, I discovered that the JTAG pins go to the holes corresponding to the CN4 connector. Luckily for me, although the entire board was SMD technology and contained all sorts of hard-to-find connectors, standard 1x9 0.1 inch pin holes had been provided for CN4. Now I also had a way to talk to the FPGA, to reprogram it.
Once the JTAG connector was figured out, I needed a JTAG programmer for Xilinx Spartan IIE FPGAs, plus the rigor software.
Searching about JTAG, I found a link that explains very clearly what it is, how it came about and what can be done with JTAG.
http://www.fpga4fun.com/JTAG.htmlI recommend the entire fpga4fun website, it is very clear and concise.
After understanding better than ever what JTAG is, I looked for a programmer. Too bad and these. They are usually included with the development board you buy. There are also separate programmers, but at prices of 50-100 euros. Too much. I decided to make my own. Again, fortunately, the chip manufacturer itself, Xilinx, provided a very simple programmer schematic for the parallel port:
My computer has a parallel port, and I already had the rest of the parts around the house. Compared to the original scheme, I added an LED connected to a free gate, to see when the programmer is working. Later I would find that I did very well, the LED is particularly useful.
After some tinkering I got this:
Buuun, we have a board powered and connected to the computer.
We just need to talk to her.
Xilinx offers a free software variant for configuring and programming their FPGAs, called ISE WebPack. It's a very large package, you need a few free GBs for download and a few more for installation. Cleaned by computer, downloaded the newest version, installed and...surprise! Spartan IIE, the FPGA on my board, was not supported.
Searched the net for the problem, the last variant that supported Spartan IIE was ISE 10.1. Made more space on the hard drive, downloaded another GB, installed another GB. All this lasted one day.
Finally, I was able to talk to the FPGA and read its ID.
Total victory!