My Website

modified:10 September 2024 04:20:12.

Purpose:

The purpose is to experiment with making a custom FPGA board. And to get the FPGA to function.

Design:

12-Aug-2024

The PCB is 4 layer. With most of the components on the bottom of the board. On two of the boards I had the PCB manufacturer put the FPGA chip on the board, as the pin spacing of the FPGA is too fine for me to be comfortable soldering myself.

Schematic Circuit Diagram

PCB Top PCB Top

PCB Bottom PCB Bottom

Programing the Flash memory:

31-Aug-2024

Using a blank PCB, I populated the 3.3V regulator and the Flash memory chip. Then connected a QTPy board to the programing pins.

I wrote a Python program on my laptop which sends commands/data to the micro via the micros virtual serial port. The micro then uses the SPI protocol to program the Flash memory on my board.

My first attempt to program the QTPy using its native python worked only just. I kept having trouble with running out of memory. I think the python interpreter was itself using too much memory. I also hadn't finished with other things the micro needed to do. So this was unlikely to work fully.

So for my second attempt I switched to using the Arduino system.
This proved much more successful. The current C code works well. It isn't finished yet, there are more things it needs to do, like controlling the FPGA reset signal. The code uses a simple Finite State Machine to control its operation.

The Python program that controls the micro isn't finished yet.
It can only program page 0 of the Flash memory with a pre-defined page of data. And read that page back.
When sending a page to the micro it sends a 16 bit CRC code as well, this is used by the micro to make sure that the data received is exactly what was sent.

Program OuputThis is the program output. The first page dump is what is going to be writen. Then there is the output of, first erasing the Flash and then writing the page to the micro. And last is a dump of what is read from the Flash of page 0.