The FPGASID Configuration Tool

The FPGASID can be configured in every detail of it's operation.

All configurations are done by accessing special registers in a rather complex register map in the SID's address space. Of course every good C64 programmer can do this with a couple of PEEKs and POKEs or with several dozen lines of assembly code.

But for all others (that do not want to have so much fun in configuring a FPGASID) this work has been already done.

The result is the configuration tool "ConfiGuru".

ConfiGuru runs on every commodore 64 equipped with a FPGASID with FPGA-Firmware revision 6 or above. For older Firmware revisions or when no FPGASID is found, ConfiGuru runs in a Demo mode that shows most of the functions but does not work correctly. So please beware of this fact when you should use an older firmware.

Navigation inside ConfiGuru is done with the keyboard by pressing the key corresponding to the desired function or option. The corresponding keys are marked with a red background so it's always visible which keys have a certain function. Just press the correct key to activate the function.

A configuration becomes effective immediately after each key press. It will remain active when you quit the program. Even after a hardware reset the configuration will be kept. But it will be lost after a power off-on cycle. When you like your FPGASID to wake up with your personal dream configuration on power-up, you can save your configuration to flash memory to make it permanent even after a power cycle.

The Easy Configuration Screen

From everywhere inside ConfiGuru just press E to enter the easy screen. In this screen you can select a couple of basic configurations that should fit for most needs:

Mono mode: both SIDs are allocated to the base address $D400 and play back the same tune.

Pseudo stereo: Like mone, but SID1 plays only voice 1&2 whilst SID2 plays voice 2&3. This can be used to generate a stereo effect for Games and Music that is composed in mono for just one SID. Great for playing Games!

Full stereo: SID1 is still at $D400, but SID2 is addressed at $D420 and $D500. This way most of the existing stereo SID tunes will play back properly resulting in 6 individually audible voices.

ConfiGuru easy mode

SID type: Press either 1 or 2 to switch the SID type of each SID to either 6581 or 8580. To achieve another fancy pseudo stereo effect, configure FPGASID to mono but choose a different SID type for each SID. Due to the different filter characteristics all filter centric tunes will produce a pseudo stereo effect.

Digifix: 8580 SIDs cannot playback digitized sound by using the volume register such as 6581 SIDs can do. In the past the so called 'digifix' was invented to overcome this situation. The original 'digifix' consists in an external pull-up resistor that will be soldered to one pin of the original 8580 SID. FPGASID can exactly mimic this fix without any soldering by just doing the correct configuration. When digifix is active use the cursor keys to adjust the digifix strength (volume of digitized sound). This setting will only have an effect on the SIDs that are configured to 8580 mode.

Saving configuration: As stated above, there is no need to save the configuration each time it was changed. But to make a configuration permanent across power cycles, it has to be saved into flash memory. There are two flash memory locations that can be used to save the data. Location 'A' and location 'B'. An external hardware switch can be connected to the FPGASID to switch between the two configurations in both flash locations (For details on the hardware switch consult the installation documentation). To save the current configuration just press A or B; to delete all configuration from flash press C.

The Expert Configuration Screen

Expert screen

From everywhere inside ConfiGuru just press X to enter the expert screen. In this screen you can configure each single detail of you FPGASID.

You can navigate through the screen with the cursor keys. Press RETURN to modify a setting, digifix values can be adjusted with the cursor keys after selection.

EXTIN: anain = analog input, mute = external input is muted, SIDx = choose the other's SID output as input, digfx = use digifix value

Read: Configure the behavior of register reading. For write registers: value = read the register value, zero = always read 0, bitrot = read the last value written for a certain time - the time is different between 6581 and 8580 mode (seldomly used for SID-type detection).

For read registers: regdly configures the timing of register readback to match either 6581 or 8580 (the timing is often used for SID-type detection)

Mute: Single voices can be muted - used to achieve pseudo stereo mode

MxWav: Switch mixed waveforms between 6581 and 8580

DAC: Use nonlinear 'crunchy' 6581 DACs or linear 8580 DACs.

Filter: Use 6581 or 8580 filter model. For the 6581 you can control the filter bias from -8 (low) to +7 (high).

Adressing: For SID2 the base address can be selected between $D400, $D420, $D500 and $DE00 and combinations of the latter three addresses. Please note the the address $DE00 often conflicts with expansion port modules and should only used when the implications are known. To protect the hardware in case of such an address conflict, the address range at $DE00 is write only - no reading of FPGASID registers is possible from that location.

LEDs: Enable or disable the idle blinking of the LEDs (heartbeat). Press V to enable or disable the voice-gate blinking of the LEDs.

Output: Select between dual and mix.

dual: Audio channel 1 = SID1, Audio channel 2 = SID2 - perfect for stereo setups with two speakers.

mix: Audio channel 1 = SID1+SID2, Audio channel 2 = SID1+SID2 - good for mono setups with a single speaker.

Saving configuration: Same as for the easy screen: Saving is usually not required unless a setting should be made permanent accross power cycles.

The Diagnostic Screen

From everywhere inside ConfiGuru just press D to enter the diagnostic screen. This screen allows you to check the operation of your FPGASID and have a deeper look inside.

ID: Should always be F51D which means FPGASID.

Revision: Revision numbers for CPLD, FPGA and PCA (printed circuit assembly).

Hwid: A unique ID of your FPGASID.

Addressing: All address and chip select lines are checked to see if all addresses are reachable. All 4 addresses should be green. In case any is red this indicates a problem with the additional wires that have to be installed with the FPGASID.

The Address $DE00 can also interfer with a module conneced to the expansion port. Remove the module once you experience such problems.

ConfiGuru diagnostic screen

LED check: The three FPGASID LEDs should light in the same pattern as displayed on the screen.Audio Channel: A beep tone should be audible on the first SID's channel (left) and the second SID's channel (right). When 'extin' is highlighted, any signal fed to the extin analog input should be audible.

Paddle X/Y: Connect paddles to your C64 to move the bars and read the current paddle value.

PHI2 period: Period of the Φ2 clock - should be around 1.025 for PAL machines and 0.980 for NTSC machines.

Switch A/B: Current position of the configuration hardware switch.

Configuration: Stored configuration values and their index position in the flash page.

The Flash Screen

ConfiGuru flash screen

From everywhere inside ConfiGuru just press F to enter the flash screen. This screen allows you to update the FPGA firmware of your FPGASID.

Updating the firmware is done in two steps:

In the first step, the firmware disk is checked to assure that all files are available and readable. The firmware files do not fit on a single 1541 floppy disk so they come as two .d64 image files - one for each disk side. During operation you will have to turn to the second disk side to continue the operation. Users of alternative mass storage devices such as the 1581 Disk drive, a SD2IEC etc can copy all firmware files onto a single disk/directory and run the flash procedure from there in one single run.

In the second step the firmware is read from disk and written to flash memory. Also here it may become necessary to turn the disk to the second side when you are using 1541 disks.


When the second step is interrupted by a power cycle, your FPGASID will become unusable until it gets flashed again via the JTAG interface. This complicated task has to be done from a PC by using a JTAG programmer hardware ('USB-Blaster'). So please be careful not to switch off too early.

In case the computer should hang up during flashing DO NOT SWITCH OFF!!!

In such a case the only way to save your FPGASID is to press the reset button (in case you have one) and restart from the beginning by loading ConfiGuru and starting from step 1 again.

Check disk: Start the disk check (step 1).

Use disk: Toggle the drive number between 8 and 9. Do this before starting the disk check.

Run flash: Start the actual flashing of your FPGASID (step 2).

Due to the loading time of the firmware files, steps 1&2 can take very long! Especially when you update from a standard 1541 disk drive the overall time is almost 20 minutes. Therefore the use of a floppy-speeder is highly recomended. This will reduce the time to a few minutes. So far ConfiGuru has been succesfully tested with the speeder JiffyDos. Please refer to the table below for measured flashing times.

Summary of total flashing times*: