XVA1 Installation Guide
XVA1 Installation Guide
1
Installation Guide
2
Loading the Synthesizer Image File
The synthesizer image file is the core component of XVA1. It is used to configure the hardware elements inside
the FPGA, so in fact, one could say it is the synthesizer itself.
In order to load it and store it in the non-volatile flash memory in the board, a special bitloader program is used.
Here is the procedure to load the synthesizer image file:
1. Download and Install the Digilent Adept 2 software utility.
2. Connect the CMOD A7 board to your computer’s USB port (ideally, using an USB3 port).
3. Run Adept and add the board as new device.
4. Select the board in the “connect” drop-down, browse for the image loader file CMOD_A7_Loader.bit,
then select Program.
A progress bar will track the loading process, which should complete in few seconds with the
“Programming successful” message.
3
Right after completion, the CMOD A7 automatically enters the “image loading mode”.
While in this mode, it will receive the firmware image and write it into the board non-volatile flash memory.
Close Adept, and make sure the board remains powered on until the next operation completes.
5. Open a command window in the folder with the extracted binaries and run the XLoad utility program
with the following line:
4
6. Unplug the board, then plug it again to restart it.
5
Loading the Tunings Definition File
The tunings definition file contains all the available tunings for the synthesizer, including the standard tuning and
the factory-alternate tunings, or the user-created alternated tunings.
To load the tunings definition file:
1. Open a command prompt in the folder where all the XVA1 binaries are.
2. Run the following command:
XLoad “t XVA1_Tunings.bin”
The operation should take about a minute to complete.
The Tunings Definition File can be loaded into the unit at any time, which is especially useful to experiment with
the creation of alternate tunings.
6
Loading the Factory Programs Bank File
The factory programs bank is a set of example programs showing some of the sounds that XVA1 can create.
1. Open a command prompt in the folder where all the XVA1 binaries are.
2. Run the following command:
7
Setting the MIDI Channel
Setting XVA1 MIDI channel for receive is easily done using the XLoad utility program:
XLoad “* n”
Where “n” is the MIDI Channel (use 0 for omni).
After completing this procedure, you should be able to play and hear how XVA1 sounds. Enjoy!
8
Technical insights
This section is just reference technical information to understand the insights of the installation procedure.
It is not required for the installation procedure at all.
There are different types of memory in your build, and sometimes it is not clear to identify what-goes-where:
Most CMOD-A7 boards use a 32Mb (4MB) Micron N25Q032A chip. However, the Artix A35 bitstream image
file is only 17,536,096 bits of memory (2,192,012 bytes).
This leaves about half of the flash memory empty, and therefore XVA1 uses that empty space to load the
Tunings Definition file.
Unfortunately, Digilent does not provide any utility to directly upload a bitstream into the flash memory. They do
provide the free Adept 2 utility though, which allows uploading a bitstream directly into the FPGA via JTAG.
Therefore, I had to write the CMOD_A7_Loader.bit, which is loaded into the FPGA using Adept 2. It then
receives the image file and writes it down into the non-volatile flash memory.
One question I get often is “why didn’t you also use the flash memory to store the user programs, eliminating
then the need for the EEPROM”.
As you (if you are still reading) probably know, flash memories can be written at a byte-level but can only be
erased at sector-level. This works great for most common portable devices, where you have the option of an
offline formatting (think photo cameras).
On the other hand, erasing a sector is a lengthy operation which can take up to 3 seconds, which would make the
operation of editing and rewriting a program completely unsuitable for a real-time, performance oriented audio
device. This type of memory is very suitable for data which is often-read-but-seldom-written (such as the Tuning
Definition file, and the User Waveforms in XFM2).
Also, a flash memory can be only written about 100K times, while an EEPROM will last well over 1M times.
Additionally, the very inexpensive 24xx chips could be easily swapped to create ‘cartridges’ of sounds, for total
80’s retro constructions (well, without the hassle of needing batteries to preserve non-volatile settings).
Given that both the cost and added complexity of adding an I2C EEPROM chip is very low, I opted for this
design.
9
SRAM memory chip
The CMOD-A7 also features 512KB of static RAM in an external chip (an ISSI IS61WV5128BLL-10BLI chip).
XVA1 uses that memory exclusively to store the “audio of the past” for the Delay and ER effects (the
chorus/flanger/phaser/reverb effects use the internal FPGA BRAM modules).
10