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 ScreenFrom 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. 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. 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 ScreenFrom 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. 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 ScreenFrom 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. Caution! 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.
*Time for steps 1&2 excluding the time for changing disks **format min:sec. |