ArSid - Arduino Sid Synthesizer

Sat 24-Aug-19
18:36:49




FPGA-Sids

Datum: Fri 07 June 2019
Samenvatting: Twee Fpga-Sids op e plaats van 4 Sids.
 Soort Artikel: Electro
Status: Maken



[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]
fpgasids_01-schema.jpg
1/16: fpgasids_01-schema.jpg.
fpgasids_02-printontwerp.jpg
2/16: fpgasids_02-printontwerp.jpg.
fpgasids_03-printcut.jpg
3/16: fpgasids_03-printcut.jpg.
fpgasids_04-print_fpga.jpg
4/16: fpgasids_04-print_fpga.jpg.
fpgasids_05-smdprint.jpg
5/16: fpgasids_05-smdprint.jpg.
fpgasids_06-smdsoldeer.jpg
6/16: fpgasids_06-smdsoldeer.jpg.
Meer
[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]

Allereerst nogmaals een korte samenvatting van de FpdaSid. Het geheel is gebouwd op een kleine print (48mm bij 31mm - iets groter dan de originele Sid-Chip). Omdat men twee Sids in een FPGA gaat implementeren, komen er ook twee aparte Audio-signalen uit, bijvoorbeeld voor Stereo-geluid. 1 signaal via de oorspronkelijke Sid-Chip pin, het andere signaal via een extra connector op de FPGA-Sid print. Een FpgaSid heeft onder andere de volgende extra hardware mogelijkheden:

  • Er zijn twee audio-uitgangen (2 audio-kanalen).
  • Voor het tweede kanaal kan er geschakeld worden tussen diverse adres-bereiken. Hier is gekozen voor het bereik "$D420", wat overeenkomt met selecteren met Adres-lijn A5.

De afmetingen van de FpgaSids-print moeten dezelfde zijn als van de Sid-print, ook de bevestigingsgaten dienen op dezelfde positie te zitten. Dit om te voorkomen dat de bodem van de ArSid een gatenkaas gaat worden. De opbouw van deze print is vergelijkbaar met de Sids-print. De koeling van de Sids wordt verwijderd.

Omdat het verder ontwerpen van de ArSid abrupt onderbroken werd op het moment dat ik met de uitgangsversterker bezig was, liggen er nog geen audio-kabels in en is de lengte daarvan nog niet definitief bepaald. De kabels voor de voedingsspanningen en voor de bussen (adres, data, control), inclusief hun connectoren, liggen echter wel vast, dus die positie moet behouden worden. Wel anders is dat de connectors bij deze print enkel is uitgevoerd. Het stapelen van de prints kan geschieden met doorprik connectoren ... mits de hoogte in het apparaat het toestaat, natuurlijk.

Het schema.

Het schema ziet er in grote lijnen hetzelfde uit als dat van de Sids-print. Een uitbreiding zijn de twee transistor trappen, die het ruwe audio-signaal (van Sid1) moet versterken. Deze hebben dezelfde opbouw als in de commodore 64, maar enkele verschillen vallen wel op:

  • De transistor heeft hetzelfde type nummer gekregen dat ook op de FpgaSid wordt gebruikt in het tweede kanaal, een BC847A-smd.
  • De Condensatoren van 10µF zijn hier High Cap Ceramic condensatoren in plaats van Elco's, ook omdat deze op de FpgaSid zijn gebruikt.

Ook nieuw in dit schema zijn de Ferrit-kraaltjes FB1 t/m FB4, deze zijn er om hoog-frequente (digitale) signalen tegen te houden.

Bovendien is het gebrek aan de (polystyrene) filter-condensatoren opvallend (rond de Pinnen 1..4 van de Sids), want alle filteringen worden rekenkundig (en dus digitaal) in de FpgaSid gerealiseerd.

In het schema staan ook twee AND-poorten getekend. Hiermee moet het mogelijk zijn om met 2 Enable-signalen toch 1 (en dezelfde) FpgaSid te kunnen selecteren. De oorsprong voor die AND-poorten ligt bij de decoder-print. Het omsolderen van draden van de betreffende Sid-Decoder is daar zoveel werk (er liggen meer draden naar de betreffende IC-pin), dat het handiger is om dat op deze print op te lossen.

De gedachte is dan een AND-poort te beschouwen is als een N-NOR-poort, of te wel een NOR-poort met ge-inverteerde ingangen. Dit werkt hier, juist omdat alle Enable en Chip Select lijnen ook ge-inverteerd zijn. De volgende tabel maakt dit duidelijk.

Ingang 1Ingang 2 Uitgang Opmerking:
0 0 0 1 ingang is 0 (de andere ook, maar dat doet niet meer ter zake)
0 1 0 1 ingang is 0
1 0 0 1 ingang is 0
1 1 1 Alle ingangen zijn 1

Voor 1 print worden de FpgaSids dan als volg geaktiveerd, de tabel is inclusief de Sid-nummer in 1 FpgaSid en inclusief de print-nummer. Hoewel het totale ontwerp nog steeds uitgaat van de mogelijkheid dat er twee printen gestapeld kunnen worden, ziet het er naar uit dat er hier maar 1 print gebruikt gaat worden.

Adres 74138 7408-d AND, c.q. N-NOR 7408-c AND, c.q. N-NOR Opmerkingen:
8 7 6 5 Sid En 0/4En 1/5CS 0/4 En 2/6En 3/7CS 0/4 FpgaSidFpgaSid-Sid.nrPrint Nr.Software-Sid
x - - - - 0 0 0 0 0 0 Niet mogelijk!, want de 74138 (Decoder) voorkomt dit
1 0 0 0 0 0 1 0 1 1 1 0 1 1 0
1 0 0 1 1 1 0 0 1 1 1 0 2 1 1
1 0 1 0 2 1 1 1 0 1 0 2 1 1 2
1 0 1 1 3 1 1 1 1 0 0 2 2 1 3
1 1 0 0 4 0 1 0 1 1 1 4 1 2 4
1 1 0 1 5 1 0 0 1 1 1 4 2 2 5
1 1 1 0 6 1 1 1 0 1 0 6 1 2 6
1 1 1 1 7 1 1 1 1 0 0 6 2 2 7
0 x x x n.a. 1 1 1 1 1 1 Geen Sid, maar de registers op de Latches.

Het selecteren tussen de twee Sids.

Het selecteren tussen de twee Sids per FpgaSid wordt hier gedaan door de extra aansluiting A5 (Gele extra draad) voor te gebruiken, juist zoals in het oorspronkelijke idee voor de FpgaSid.

Een idee was om deze aan te sluiten op 1 Enable-signaal (En0/4 en/ of En2/6), maar er zouden timing problemen kunnen ontstaan, juist vanwege de AND-poorten. Komt de CS (Chip Select) van de FpgaSids wel op tijd, ten opzichte van het A5-signaal? En valt de CS wel op tijd weg, of valt het Enable-signaal (op de print) eerder weg?

Daarom is hier gekozen om toch de adres-lijn 5 van de Arduino door te trekken naar de FpgaSid-print (en dus om de adres-bus uit te breiden) en wel vanaf de adresbus-connector op de decoder-print.

Het bouwen van de print.

Wat gebleven is, is het solderen van de vele losse draadjes op de print, hoewel het er nu wel de helft minder is geworden. Het valt nu op dat de print minder vol is. De foto's laten een print-ontwerp zien met en zonder FpgaSid. De afbeelding zonder FpgaSid toont de draden, die juist door de FpgaSid worden verstopt.

Net als bij de oude Sids-print, worden ook hier enkele condensatoren (per FpgaSid) in de IC-voeten "verstopt" (en wel bij de pinnen 23..25). In het print-ontwerp staan deze buiten de FpgaSids getekend.

Om de SMD-Transistoren te kunnen gebruiken, is gekozen om hiervoor adapter-printjes te maken van een stukje vera-board (met het patroon van eilandjes per 3 gaatjes). Hiervan zijn stukjes geknipt van 2 bij 4 gaatjes en zijn de zijkanten op maat geschuurd (met behulp van een schuur-trommeltje in de kolomboormachine). Zo past de transistor mooi op het isolatie kruispunt. Daarna is het een questie van de transistor goed leggen en de enkele aansluit-zijde (de collector) vast te solderen. Nu kan de transistor nog rechtgelegd worden. De andere 2 aansluitingen (basis en emiter) zijn gesoldeerd en ten slotte is er een stukje montage-draad gesoldeerd over de twee eilandjes aan de zijde van de collectors (de enkele transistor aansluiting). Zo ontstaat er een soort van hole-thru transistor, maar wel 1 die wat meer ruimte inneemt dan een standaard BC547. Je moet wat doen voor gelijk-klinkend geluid.

De IC-voeten, de losse componenten, de voedingsdraden en enkele losse draden zijn gesoldeerd. De condensatoren binnen de IC-voeten zijn lichtjes omgebogen. En dan komt weer de vervelende klus om alle data-, adres- en controlbus draden te solderen. Bij deze bussen zijn de zelfde kleuren aangehouden als op de Sids-print.

D0 .. D3 Groen/Zwart
D4 .. D7 Wit/Groen
A0 .. A4 Geel/Zwart
Extra ChipSelectsWit/Rood
Reset Groen
Φ2 en R/~W Wit/Geel

Alle solderingen zijn getest met een Ohm-meter op zowel een juiste verbinding als op eventuele kortsluitingen (die er natuurlijk niet mogen zijn).

En dan is het tijd om de klemmetjes van de extra aansluitingen (c.q. de losse draden van de FpgaSids) af te knippen. Deze aansluitingen zijn bedoeld om de tweede Sid te kunnen activeren en voor de extra Audio Out (van de tweede Sid) (met ingebouwde Transistor Versterker trap). Deze draden zijn (rechtstreeks) gesoldeerd aan de print.

I/O2 Rood 3-polige witte connector
A8 Zwart
A5 Geel
Sid2 OutRood 2-polige witte connector

Als laatste is de print in de ArSid geplaatst. Met alleen de voeding is aangesloten is gekeken of de spanningen daar terecht komen, waar ze gepland zijn, namelijk de pinnen 7 en 14 van de 74hct08 en de pinnen 14 , 25 en 28 van de beide FpgaSid.

En dan kom je er achter dat ik het IC 74hct08 helemaal niet in huis heb !! Een noodoplossing is om draadbrugjes te leggen tussen de pinnen 2 met 3 en de pinnen 5 met 6. Dan wordt er in elk geval iets geselecteerd.

De test-connector van mijn test-luidsprekertjes is in ieder geval aangepast aan de nieuwe print

De FpgaSids op de print plaatsen.

De FpgaSid-modules zijn op de print geprikt. Het lijkt al aardig op het print-ontwerp. Na het aanzetten van de ArSid knipperen alle Leds op de beide FpgaSids. Of dit zo hoort, is nog niet bekend, maar er zit leven in.

Er is wat gespeeld met instellingen van de bekende Sid-registers. Maar na anderhalf-jaar is er wat kennis weggezakt welke knop precies welke instelling regelt. Er is wat geluid uit gekomen en wellicht moet ik van het programma enkele delen herschrijven, zoals de delen van het aansturen van de Sids.


Eerst een 74hct08 regelen en dan ...

Verder Met Het Testen Van De Print.




[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]

Afbeeldingen

fpgasids_01-schema.jpg
1/16: fpgasids_01-schema.jpg.
fpgasids_02-printontwerp.jpg
2/16: fpgasids_02-printontwerp.jpg.
fpgasids_03-printcut.jpg
3/16: fpgasids_03-printcut.jpg.
fpgasids_04-print_fpga.jpg
4/16: fpgasids_04-print_fpga.jpg.
fpgasids_05-smdprint.jpg
5/16: fpgasids_05-smdprint.jpg.
fpgasids_06-smdsoldeer.jpg
6/16: fpgasids_06-smdsoldeer.jpg.
fpgasids_07-print.jpg
7/16: fpgasids_07-print.jpg.
fpgasids_08-printsmd.jpg
8/16: fpgasids_08-printsmd.jpg.
fpgasids_09-voetcond.jpg
9/16: fpgasids_09-voetcond.jpg.
fpgasids_10-bedraad.jpg
10/16: fpgasids_10-bedraad.jpg.
fpgasids_11-bussen.jpg
11/16: fpgasids_11-bussen.jpg.
fpgasids_12-draden.jpg
12/16: fpgasids_12-draden.jpg.
fpgasids_13-spanning.jpg
13/16: fpgasids_13-spanning.jpg.
fpgasids_14.jpg
14/16: fpgasids_14.jpg.
fpgasids_15.jpg
15/16: fpgasids_15.jpg.
fpgasids_30-extra-regs.jpg
16/16: fpgasids_30-extra-regs.jpg.

[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]

De aansluitingen van FpgaSids

Diverse tests van de FpgaSids

Arduino Mega

Pwr USB ?
 
?
aref
gnd Gnd's
? d13 Lr = Backlight Blauw
ioreff d12 Lg = Backlight Groen
Reset reset d11 Lb = Backlight Rood
+3.3v d10
+5V L+ = LCDBacklight +5v d9
Gnd's gnd d8
Gnd's gnd
Vin d7
d6
Potmeter 0 a0 d5
Potmeter 1 a1 d4
Potmeter 2 a2 d3
Potmeter 3 a3 d2
Potmeter 4 a4 d1
Potmeter 5 a5 d0
Potmeter 6 a6
Potmeter 7 a7 d14
d15
Potmeter 8 a8 d16
Potmeter 9 a9 d17
Potmeter A a10 d18 Tx1 = Midi Out
Potmeter B a11 d19 Rx1 = Midi In
Potmeter C a12 d20
Potmeter D a13 d21
Potmeter E a14 /~\
Potmeter F a15 \_/
Onderconnector
D0 = Data 0 d22 | d23 D1 = Data 1
D2 = Data 2 d24 | d25 D3 = Data 3
D4 = Data 4 d26 | d27 D5 = Data 5
D6 = Data 6 d28 | d29 D7 = Data 7
 | 
A7 = Adres 7 d30 | d31 A6 = Adres 6
A5 = Adres 5 d32 | d33 A4 = Adres 4
A3 = Adres 3 d34 | d35 A2 = Adres 2
A1 = Adres 1 d36 | d37 A0 = Adres 0
 | 
~Reset d38 | d39 Lcd (hier niet nodig)
R/~W d40 | d41 phi2
 | 
~Enable Adres d42 | d43
d44 | d45
d46 | d47
d48 | d49 A8 = Adres 8
 | 
d50 | d51
d52 | d53


[Tekst] [Afbeeldingen] [Aansluitingen] [Broncodes]