When I was younger, much, much younger than I am today I remember reading a novel about an ex-boxer turned petty crook who had been in so many fights that the author described him as having a face that only a mother could love. Every time I look at the MachXO3L Breakout Board, the version with SMA connectors, the description of the ex-fighter comes to mind. It's not that the board is "that" unpleasing to the eye, it's that it just looks, well, so functional and business-like.
My mother said to me, 'If you are a soldier, you will become a general. If you are a monk, you will become the Pope.' Instead, I was a painter and became Picasso - Pablo Picasso
In this blog post we gloss over the Board's less than exciting appearance and evaluate it solely on its functionality.
However, it is this functionality in terms of its MIPI D-PHY input and output interfaces and its pre-configured support for SubLVDS, which makes it worth more than the weight of the gold used to make the SMA connectors! Since we are particularly interested in SubLVDS and debugging the Raspberry Pi camera module, the board is ideal for our purposes.
The MachXO3L Breakout Development Board (SMA Edition) can be seen in the picture, below. Compared to say the DE0-Nano Development Board, the words elegance and finesse don't exactly spring to mind. However, as Michael Johnson the ungainly former 200 meters and the current 400 meters world record holder has demonstrated it's not how elegantly you cross the finishing line that counts, it's crossing it first that matters.
With this board Lattice Semiconductor are the first, as far as we know, to provide developers a FPGA development board with the functionality to develop Display Serial Interface (DSI) and Camera Serial Interface (CSI) hardware applications, off-the-shelf.
For example, we could use the FPGA, the XO3L-6900E, found on this board to investigate the inner workings of the Raspberry Pi camera module, without the development of that much additional hardware. Looking on the bright side the breakout board is delivered in a plastic presentation case.
So why is the functionality found on this breakout board so interesting? Well, for starters it is characterised by having two FPGAs, the X03L-6900C in a 256 caBGA package, which is connected to the differential SMA connectors, the General Purpose Input Output (GPIO) and PMOD headers. It also has a much smaller FPGA, the XO3L-2100E in the 49WLCSP package, exclusively connected to a MIPI-DSI input and MIPI-DSI output connectors. A description of these interfaces is presented in the Interfaces section, below.
The list of devices found in the Mach XO3L device family can be seen in the Table, above, taken from the Lattice Semiconductor website. Note that the 6900E device on the breakout board has a core voltage of 1.2V, while the 2100C has a core voltage of between 2.5V and 3.3V.
The XO3L-6900 has a reasonable number of Look-Up-Tables (LUTs) for glue logic functions and relatively modest applications. The built in DDR x 4 input and output registers, as well as the two hardened I2C controllers are expected to be very popular indeed.
The block diagrams below show the types of interfaces connected to the XO3L-6900E and the XO3L-2100C respectively. The two FPGAs are are configured through the FTDI USB configuration port or a JTAG header. They can be configured separately or together with the JTAG chain control header, which provides the option through the use of jumpers. The breakout board kit, quite generously, is accompanied by yet another mini USB cable to add to your existing collection, the type used to charge your mobile phone. I've got a shoe box full of them now.
There are two GPIO headers consisting of 20 I/O pins each, which is not an overtly generous amount of I/O, but enough to interface one or two significant devices to the X03L-6900E, like USB and Ethernet devices, for example. There are two PMDO connectors too, which provide an additional 16 I/O pins. There are families of PMOD devices available from Diligent and a nice kit available from Dallas semiconductor too, which could complement the PMOD headers rather well. I haven't actually used PMODs myself, but anticipate doing in the not too distant future.
Hence, in total one has 56 I/O pins to use to attach their own daughter boards. However, to use all the I/O pins at the same time would require the fabrication of an I/O board that will have two 2 x 12 way headers and two 2 x 6 way headers. Headers which may not be ease to obtain in small order quantities for all, especially when Surface Mount Technology (SMT) variants are required.
The jewel in the crown of the connections to the X03L-6900E are the CSI transmitters and receivers. The receivers provide two differential clock pairs and 10 differential data lines and are terminated for low power and high-speed CSI transmission modes. Likewise, the similar number of transmitters are also configured, using a resistor network consisting of 30 Ohm and 330 Ohm resistors, for low power and high-speed CSI receiver modes. The resistors are large enough, 0845s?, to allow users to replace them when emulating other transceiver standards other than MIPI D-PHY.
The other FPGA on the breakout board, the XO3L-2100C, is only connected to a MIPI input connector and a MIPI output connector. Although not installed on this SMA variant of the board the DSI headers can be purchased separately as the M50-3602542 and the M50-3122545 for input and output respectively. Each header consists of 4 differential pair data lines and a differential clock. .
Each header is also attached to the FPGA through 7 GPIOs. Although there is no interconnection between the two FPGAs, a daughter board could be fabricated that connects the GPIOs of the two boards. Alternatively, a daughter card could be designed that connects the SMA connectors connected to the 6900 to the GPIOs of the 2100E.
PCB SMA Connectors and Male -Male Connector Cables
There is always danger when one buys a breakout board with SMA connectors, as developing a daughter card to mate with the board requires one to obtain as many SMA PCB connectors and SMA male to male coaxial cables, which in this case is quite a lot. Many moons ago, when I was much younger than I am now, it would have required quite a healthy chunk of one's research budget to acquire 48 SMA connectors and the same number of male cables.
However, things have changed today, as can be seen in the screenshots above, where PCB edge mount connectors and SMA cables can be purchased online at reasonable prices. When purchasing cables we bought the 15cm in length ones, as we wanted to avoid the problem of our work area being cluttered. This typically occurs with the longer cables like those that are 1m in length. Also, it seems to be cost effective to buy the shorter ones, as the cost of the cables increases with increased length.
It should be noted that the cables shown in the screenshots above are purchasable, at the prices shown, from Hong Kong and China, respectively. Thus, they have relatively long delivery times, which could effect project deadlines. Although, I'm not sure what the difference between the two countries is, maybe it's that one uses China Post and the other Hong Kong post? Or the difference could be in the different way elections are conducted in the two places.
The Lattice Diamond (64-bit, 22.214.171.124) software is used to program the FPGAs on the breakout board and is available free of charge, when used with the MachXO3 family of devices. Installation on the Microsoft Windows platform is straight forward, as one would expect. However, the Linux version involves the separate installation of a flexlm license server, which can be tricky, but all in all the Linux version is also easy to install and will be demonstrated in a blog post soon.
The programmer is accessed through the Tools->Programmer menu item, as is seen in the screenshot below. When this programming method is chosen the FTDI USB configuration device is recognised, at least it has been on the Windows platform we tested it on. We have not yet tried the programming option on the Linux platform, which may prove to be more challenging, as the udev rules need to be written correctly. These are provided in the Lattice Diamond installation guide.
The output window, seen at the bottom of the screenshot above and repeated below, shows the cables that are automatically searched for and our one, with the FTDI USB Host chip, correctly being detected. I tried the standalone Lattice Programmer software, but did not have any success in getting it to recognise the programmer on the breakout board. It seems to support only the iCE cable, whatever that is.
The MachXO3L breakout board with SMA connectors seems to be a very specialised FPGA board that may not be suitable for everyone. It appears to be specifically targeted at DSI and CSI FPGA developers, like ourselves.
There is a cheaper version of the breakout board, which contains only the XO3L-6900E device, seen in the image opposite, which is much cheaper too than the MachXO3L breakout board with SMA connectors.
At the time of writing this post this cheaper variant seems to have only just been released and we could not determine if the I/Os had been mapped as differential pairs. If they have been then this cheaper version has a lot of potential.
We like this board and will use it, as described previously, in one of our projects. However, we do not see it being used as a general purpose FPGA development board like the other boards we have reviewed intermittently on this website. The breakout board seems ideal for use as an interfacing device, but it's lack of connectivity to peripherals will limit its experimental use in traditional FPGA application areas. For traditional applications area we would recommend the kit with the XO3L-6900E only, shown above.