Previous Messages |
|
Posted By
Bionic on 2007-01-14 16:05:16
| Re: SID-supported software ???
the download link for the vhdl code is http://jderogee.tripod.com/vhdl_SID_downloads/SID.zip, the link on the vhdl page appears broken.
Looks like a clean room SID implementation. The most difficult parts are missing though: The filter and some DAC.
I have seen several other SID implementations on the web. It is not that complicated actually, apart from the analog part. A TED core or 6510 processor core is much more challenging.
|
|
Posted By
Solder on 2007-01-14 14:25:40
| Re: SID-supported software ???
Tim, Levente: Did you see the source code of SID VHDL? What do you think about it.
http://jderogee.tripod.com/vhdl_SID.htm
|
|
Posted By
Sidius on 2007-01-12 03:36:45
| Re: SID-supported software ???
Ah, well...then I probably do not have this function [ add effect ]... But in such a way as it is now, it helps me already very much!
@Csabo: Many thanks for the advancement!
|
|
Posted By
Csabo on 2007-01-11 09:43:53
| Re: SID-supported software ???
I added the right for most of you to edit ProgramEffects. There should be an [ add effect ] button. The effects listings page can be reached either by typing the URL directly, or better yet, clicking on an effect link from a program that has one. E.g. if you're looking at Genetic Faulty, you can click all the effects.
Eventually I will make that page better and somehow incorporate it into the menu, but right now it's very plain. One thing I'd like to add on there is to list all the effect types first with links to Encyclopedia entries (I wrote Bobs recently, if anyone has the time, you can add/edit glossary type entries for the other effects).
|
|
Posted By
Sidius on 2007-01-11 08:03:48
| Re: SID-supported software ???
And how do I come to this listing, if I do not use the linkwhich Csabo had given?
|
|
Posted By
Sidius on 2007-01-11 07:54:56
| Re: SID-supported software ???
@Luca:
Oh, this is great...but only the Admins are able to do such a thing?
|
|
Posted By
Luca on 2007-01-11 05:16:45
| Re: SID-supported software ???
Ok, I'd begun tagging some stuff as SID driven, several others will be added too...
|
|
Posted By
Bionic on 2007-01-11 02:50:13
| Re: SID-supported software ???
Csabo: Nah.. just make some effort
|
|
Posted By
Bionic on 2007-01-11 02:49:38
| Re: SID-supported software ???
TLC: It is a bit too late to back off on sigma-delta DACs They are almost used exclusively in consumer applications where digital to analog conversion is required. A 1 bit sigma delta DAC can easily reach the SNR requirements for 24bit conversion. I have seen higher quality SD-DACs with up to 6 bits, which helps to solve the jitter issue. Btw.. you will notice that even audiophiles talk a lot about jitter in CD players, and they are right about that one. (imo most of their other stuff is purely esoteric, though)
In regards to the noise shaping and filtering: Look at the link I gave to you. It shows the frequency response of some noise shaping functions. It is obvious that these are easily filtered out.
|
|
Posted By
Sidius on 2007-01-11 01:04:59
| Re: SID-supported software ???
Oh Csabo, you make my day !!! But where and how the "Effect" is put with the programs? Anyhow I see no new button...
|
|
Posted By
Csabo on 2007-01-10 22:32:48
| Re: SID-supported software ???
Well here's a failed attempt at some humor. This is what the average Plus/4 scene member gets from the above discussion:
The omega-alpha has a very smorg ploink rate, but the zitter and the built in 16-bit QPH makes up for it.On the other hand, we could get some cheap paraplunks, the noise-to-potatoes ratio is very semi-linear.
(My Firefox spelling filter is going crazy at that one.) Anyway, kudos for the hardware gurus, I actually like to "listen" in, even though I don't get it at all.
Now getting back to the original topic. A while ago I added a new data structure called Program Effect (can't even remember if I announced it or not). This can be used exactly for what Sidius is asking. You can now mark any program as having SID support by adding a new effect to it, and specifying "SID support" as the effect. You can enter the card type supported into notes, etc. See them here. That is all.
|
|
Posted By
TLC on 2007-01-10 16:56:23
| Re: SID-supported software ???
Bionic: you were right in that subject of sigma-delta dac's...
I confused two types of d/a conversion by each other... which are similar in principle to the point that at the heart, both are based on '1-bit' d/a conversion, but are different otherwise.
The method of d/a conversion I was referring to first was in fact "delta modulation". There, it's true that the output can be either increased or decreased by a single step in a cycle. The more the steps, the higher sampling frequency is needed to achieve high slew rates.
The delta-sigma dac is not like that... the output of this dac is a high frequency digital stream of +vref and -vref, whose "average" gives the signal. These (amongst other things) utilize digital filters to achieve "noise shaping", ie. reduce the quantization noise in the passband at the price of generating excessive noise above the passband (which is said to be easy to filter out by a simple rc filter).
...My nose still tells me not to use delta-sigma DACs. IMHO, the only, inherently linear _and_ inherently low-noise D/A conversion method would be the delta modulator way (if operated at a fast enough internal frequency). Delta-sigma modulation, at this sight, asks me the same question that originally multibit dac's were sweared at... For multi-bit dacs, it was said (amongst other things) that it's almost impossible to build a feasible reconstruction filter (ie. it's hard to build a filter that has good roll-off, so that everything above the passband can be filtered out, and has low phase-distortion + ringing). With sigma-delta dac's, it's said these are unneccessary... even a simple rc filter will do... But for me, it asks the same question. What would happen with the generated, high-level, high-frequency noise of the sigma-delta dac?... It's unlikely that these could be filtered out by a simple RC, if it's close to the passband and it's "strong" (as it's seen even on the diags of the manufacturers). ...Are these dac's smart enough to shift the noise spectra _so_ high that there's no (or low) noise even far beyond the passband?... I'd have a couple of other questions left, but that's a different story.
|
|
|
Posted By
Bionic on 2007-01-08 17:28:16
| Re: SID-supported software ???
TLC: ?? The biggest problem is actually clock jitter, not slew rate. You remove the high frequency noise by the analog output filter.
I found this link, which is a nice refresher: http://www.digitalsignallabs.com/presentation.pdf
|
|
Posted By
TLC on 2007-01-08 17:19:48
| Re: SID-supported software ???
Bionic: Those sigma-delta DACs work like "steering" an analog voltage (the output voltage) by means of a 0-1 stream of -Vref and +Vref... this operation results in a situation where high frequency noise level and good slew rate would be concurrent parameters. As for the SID, yes, that should be the best. (Actually, it could be funny to emulate a SID to its full extent, including its true ~1Mhz operation... I don't think that it would be hard to in an FPGA, even if lots of multiplications must be done... hell, today's FPGAs have multipliers that execute 16-bit signed multiplications in a single cycle... =-) Actually, not even DACs capable of 1Mhz sampling frequency are expensive... :D )
|
|
Posted By
Bionic on 2007-01-08 15:33:10
| Re: SID-supported software ???
Best solution for a SID-Card on FPGA would probably be an external DAC. They are cheap.
|
|
Posted By
Bionic on 2007-01-08 15:31:03
| Re: SID-supported software ???
TLC:
I have to disagree a bit. My signal processing class was some years ago, but if I remember correctly than the idea behind a sigma-delta DAC is that you use signal processing to move the quantization noise up in frequency. Therefore you need much less than 2^16 times oversampling to get an acceptable SNR for 16bit and thus less clock rate than the PWM approach. Also the first analog part behind the DAC is a low pass filter, so I do not really see the issue with the slew rate.
AFAIK the DTV is manufactured in a 0.35 micron process which would easily allow multiple 100MHz clock frequency (Think Pentium II/AMD K6). I would rather guess that Jeri did not implement a very good DAC. Chip space limitations and a bad low pass filter may also be issues..
|
|
Posted By
TLC on 2007-01-07 18:53:10
| Re: SID-supported software ???
Bionic: the only problem with sigma-delta D/As is, that they need to operate at very high frequency to provide reasonable slew rates (since slew rate is the key here to achieve low distortion and low noise). For a 16-bit 44.1Khz sigma-delta dac, one would ideally need 65535*44100 = 2.89Ghz internal sampling frequency to be able to do a full magnitude step in one sampling cycle. ...Not even commonly used "so-called" hifi but otherwise professional DACs are up to this task. Lower operational frequency is acceptable, as long as the available slew rate (limited by the resolution and the operational frequency together) is "high enough". Otherwise, one introduces distortion. With something like the SID where sharp/high amplitude waveforms are generated, keeping high slew rate should be mandatory, to avoid this distortion. (That's why I'm also suspecting this behind the DTV's bad sound quality... With a cheap FPGA (or this ASIC), the usual operating freq is in the order of 10Mhz's, maybe, 1-200Mhz at the top, with extra attention). ...BTW, high-end DACs are usually still multi-bit DACs of some sort (see the PCM1704 and the PCM1796 from Burr-Brown)... as it seems, "true" high dynamic range with low overall noise is still hard to achieve with sigma-delta dac's.
|
|
Posted By
Bionic on 2007-01-07 17:56:45
| Re: SID-supported software ???
oh, my previous reply to MikeD's posting.
tlc: Well, the problem is not only that it is a digital process, you also simply don't design that way using MOS transistors Using a pass transistor in linear region as a voltage controlled resistor simply asks for trouble, especially in NMOS. My guess is that the filter is some kind of last minute addition. If you look at the layout you will also notice it is cramped in between the pads..
They fixed this in the 8580 by using proper circuit and layout techniques. But it came at the price of quite a bit of die area.
Also, "1-bit" D/A converters are much better than R2R if done right (sigma delta etc..). But I would not be surprised if Jerri used some kind of hack..
|
|
Posted By
Bionic on 2007-01-07 17:45:10
| Re: SID-supported software ???
That is one way to put it
The circuit is actually somewhat straightforward. The problem is that nobody knows that actual characteristics of the transistors used, let alone the parasitics. In theory there are several ways to reverse engineer this, but nobody put in the time and money so far..
|
|
Posted By
TLC on 2007-01-07 17:44:56
| Re: SID-supported software ???
Commenting on the SID on FPGA-question: actually, the SID emulation in the DTV sounds surprisingly bad (software emulation, like reSID/SidPlay2 on PC sound far better). Though, I'd suspect the low sampling frequency of the engine and the implemented "1-bit" D/A converters, rather than a buggy or too simplified emulation engine.
The SID is a very special chip. Except for the oscillators and the control logics, everything inside is analog... Remember the SID block diags?... Imagine each SID oscillators as 24-bit counters (they're incremented by the 16-bit frequency value you set for each SID clock cycles, ie. 985Khz), whose upper bits are fed to a digital waveform selector logic, then fed to R/2R ladders... from now on, the sound signal is analog. This analog signal is fed through another, digitally controlled "multiplying" R/2R ladder (the ADSR envelope generator D/A...), then routed either to the filter or directly to the mixer (where the analog signals of the 3 channels + the external signal input are mixed together), then the "master volume" multiplying D/A (another r/2r ladder). All, except for the digital controlling logic, is analog. If that wasn't enough, the really tricky part is the filter. This is a two-stage, resonant multimode filter, implemented right on the NMOS chip... in a manufacturing technology originally designed for digital chips. The "amplifiers" (linearized NMOS inverters) in the filter aren't really linear. Because of that, the filter response is not really predictable; besides the cutoff frequency and resonance settings, the output signal would also be distorted if either of the amplifier stages gets nonlinear (and in return, this would also modify the filter response). This gives the SID a very typical "warm" sound, especially for the 6581.
There's also a little quirk: the older NMOS technology produced chips with high deviation; because of that, you could hardly find two, similarly sounding SIDs... With time, Commodore improved and HMOS-2 (in which 8580s were manufactured) happened to introduce less deviation. 8580s sound basically the same. (Well, this should be of no problem for an emulation anyway).
For emulating it in an FPGA... well, most things should work ok. There's no possibility to manipulate analog signals in an FPGA, everything must be done digitally. There would be (as far as I can see) two tricky parts: 1.) the filter, 2.) the D/A conversion. The filter is not (yet) modelled by anyone. reSID / Sidplay2 does a fairly good job at emulating the SID at both the digital and analog level, but emulating the non-linearity of the filter is avoided even here. Emulating the filter (without non-linearity) is a question of the algorithm and the processing power of the FPGA itself. The D/A conversion might be special, as it either needs an extra chip (that FPGA engineers like to avoid if possible =-) ), an r/2r ladder (lots of space + stealing lots of i/o pins that FPGA engineers like to avoid if possible :-D ) or implementing a "1-bit" D/A on-chip. This latter might result in disastrous D/A conversion quality, if not done properly (1-bit D/A converters are tricky and need to operate at very high sampling frequency).
BTW... for a platform like the Plus/4, I guess most of us could live with an emulated SID in an FPGA, which avoids emulating the nonlinearity of the filter. ...The SID isn't native to the Plus/4 anyway.
|
|
Posted By
indi on 2007-01-07 15:13:57
| Re: SID-supported software ???
Ah...so you mean no one actually knows how it works
|
|
Posted By
Bionic on 2007-01-07 14:28:20
| Re: SID-supported software ???
The external capacitors are no problem. The issue is that the 6581 SID filters were designed in a way one usually does not do it. (Big hack to save chip area). Unfortunately due to this the filter behave nonlinear and not according to the specifications.
|
|
Posted By
indi on 2007-01-07 13:49:27
| Re: SID-supported software ???
Doesn't the SID use a couple of external capacitors for filters? Being a hardware/software solution, theres nothing to stop a FPGA doing the same is there?
|
|
Posted By
Bionic on 2007-01-07 05:03:18
| Re: SID-supported software ???
SID in FPGA would be nice, but it will still be a far shot from the real thing. Even ReSID is does not emulate the filters correctly.
|
|
Posted By
Bionic on 2007-01-07 05:01:50
| Re: SID-supported software ???
Sidus: I understood what you meant. But my point was that you could make a new SID card compatible to the software, not the other way around
And actually that is quite simple..
Solder: I thought along the same lines. A 32macrocell CPLD could do that and a lot of other stuff like letting the SID run at the proper clock frequency and managing a flash rom with external software and configuration data. Well, actually I tested most of this in a prototype some time ago, but I had to take it apart again..
|
|
Posted By
Luca on 2007-01-06 08:06:15
| Re: SID-supported software ???
I would buy a couple of SIDcards though without SID chip.
|
|
Posted By
indi on 2007-01-06 06:01:16
| Re: SID-supported software ???
Oooo..SID on an FPGA would be very handy! Doesn't the Commodore One project already have one that someone can use? Its a complete FPGA C64 isn't it? (as used in the DTV64)
|
|
Posted By
Solder on 2007-01-06 05:01:39
| Re: SID-supported software ???
@Bionic: It's a good idea. This best way is an additional register at unused SID-address $fd5d which controls the access. By default the SID is accessible with $fd40 and $fe80. By using the register you can select just $fd40 or $fe80 or select write access $d400 for registers 0 to 24. (Are registers 27 & 28 not used for music-players?)
I have some ideas and if I would plan a new card, the GAL will be replaced by an CPLD with more functionality . The register can included in this CPLD.
But otherwise: The SID is a very special Commodore IC and not available. I heard that the project SID on FPGA will be continued. Maybe, this is a better solution.
Solder
|
|
Posted By
Sidius on 2007-01-06 02:58:08
| Re: SID-supported software ???
Oh, there you have misunderstood me - there I have probably expressed myself a little bit wrong!
I meant more the software which there is here on Emucamp for download...
Example: I look for demos (here on Emucamp) which support or need the SID. Now I would need a button or something similar which indicates exactly these demos to me.
Do you understand now what I mean?
Actually, just a filter function for this side here...
|
|
Posted By
Bionic on 2007-01-05 13:28:58
| Re: SID-supported software ???
If a new sid card is designed it would be possible to make it read from $d400 optionally. Then almost all software will be sid compatible as all the wave and frequency converters usually emulated a sid at that address.
|
|
Posted By
Sidius on 2007-01-05 08:14:40
| SID-supported software ???
Now, for some of us the dream of a own SID -Card could come true soon... or if it is already!
Would not be it practical, if was indicated with the software (Demo, Game, etc.) , that the SID/SID-Card is supported or is required?
In any case, such a point would make it very much easier to search for such a software...
What do you say in addition?
|
|