Create a CPLD program using Lattice Diamond#
The main goal of this section is to describe the necessary steps for creating a simple program for the
MACHXO2
CPLDs on the UltraZohm \(\geq\) Rev05.
All signals from the FPGA to the digital adapter cards have to pass through the CPLDs.
D-Slot CPLDs#
Everything is programmed inside the project uz_d_slots.ldf
.
It is located in the repository at MACHXO2/D_Slot_CPLD_LCMXO2-2000HC-4TG100C/uz_d_slots/
.
Here we can create additional implementations
for the CPLD.
The advantage of having all CPLD programs within one project is that VHDL code from other files can be used, but every file has its own constraints (e.g. all signals function as inputs versus all signals function as outputs).
Step-by-step#
Open Lattice Diamond and there the project
uz_d_slots.ldf
. ClickOpen
.

For creating a new CPLD program click
Clone Implementation
by right click on the templatetemplate_dslots
and the subsequent contex menu.

Provide a proper
Name
and give theDirectory
the same name. Select theDefault Strategy
to Strategy1 and check the boxCopy files into new implementation source directory
. ClickOK
.

In order to modify your new implementation, right click on it an
Set as Active Implementation
.

The template
VHDL File
is copied to the source directory. Remove it by right clicking theInputFile
andRemove
.

Right click the project file and
Open Containing Folder
.

Edit the template
VHDL File
and name it according to your project.

Add the renamed
VHDL File
to your project by right clicking theInputFiles
-Add
-Existing File
.

Checkout
Files of type:
-All Files
, navigate to your source directory and add your previously renamedVHDL File
.

Write VHDL Code for the CPLD and save it.

When saving Diamond automatically checks the code and gives feed back. If everything is fine it looks as below.

Switch to the
Process
view.

Start the processes shown below by double-clicking on them, one after another.

If every process passed it looks as shown below. You can now use the exported
JEDEC File
to flash a CPLD with the Diamond Programmer Programming the CPLD.

15. Constraints for the D-Slot CPLDs are provided in the existing uz_d_slots.ldf
project. If ever needed, one can check and modify the
constraints by opening the Spreadsheet View
.

S3C#
The same procedure can be applied to create a program for the S3C.
Everything is programmed inside the project UZ_Rev05_S3C.ldf
.
It is located in the repository at MACHXO2/S3C_CPLD_LCMXO2-4000HC-4TG144C/
.
Danger
Modifying the bitstream of the S3C fundamentally alters the startup and power-down behavior of the UZ. Such changes may render the carrier board inoperative, requiring physical recovery through soldering. Exercise caution in your actions within this context.
Note
Check the schematic from the Carrierboard to see, which signals are inputs/outputs or bidirectional. The Pins have a dedicated direction and cannot be freely configured.