Il chip SID
Caratteristiche HW
Registri e comandi
Note d'uso
Progetto Hardware
Il modulo picSID
Modulo ausiliario auxSID
Ingegnerizzazione
Progetto Protocollo
Progetto Firmware
Schema a blocchi
Il Firmware
Progetto Software
in preparazione
Il SID (Sound Interface Device) è un circuito integrato con funzioni di sintetizzatore / generatore audio di effetti speciali.
Esso genera 3 voci simultanee con selezione indipendente della frequenza, della forma d'onda e dell'inviluppo (volume).
Ciascuna voce può generare anche contemporaneamente (**) 4 diversi timbri: segnale triangolare, a dente di sega, a impulso
(con Duty Cycle variabile) e pseudo-rumore bianco.
Un filtro interno, configurabile con responso Passa Bassa, Passa Alto e Passa Banda (anche in sovrapposizione) modifica
il contenuto timbrico delle 3 voci + un ulteriore segnale audio esterno; del filtro si può configurare sia la
frequenza centrale di taglio sia la pendenza della risposta (risonanza).
La frequenza o l'ampiezza della voce 3 (OSC3) può essere utilizzata per modulare le altre 2 voci (OSC1 e OSC2).
2 ingressi analogici (POT X e POT Y) possono essere connessi a potenziometri per generare un ulteriore
segnale di modulazione e controllo.
Tutte le funzioni del SID sono comandate tramite un'interfaccia dati per microprocessore a 8 bit, una serie
di 29 Registri programmabili e 4 linee di comando.
Qui di seguito sono riportate le informazioni principali sul SID; per le altre caratteristiche si rimanda
al Datasheet del SID
(**) le diverse forme d'onda selezionate sono in effetti soggette a un'operazione di AND logico, con risultati quindi peculiari e diversi dalla somma istantanea analogica.
Il chip è in un package 28 Pin DIL 600mil, ovvero 'largo' il doppio dei normali integrati.
ATTENZIONE: il circuito è molto sensibile alle
cariche elettrostatiche, in particolare i pin I/O audio.
NOTA BENE:
i chip 6581 e 6582/8580 sono identici e differiscono solo nella tensione di alimentazione (+12V per il 6581 e +9V per il 6582/8580).
Anche i valori dei condensatorei CAP1 e CAP 2 sono diversi (220pf per il 6581 e 6800pf per il 6582).
I pin del SID |
||||||||||||||||||||||||
|
Il chip è in un package 28 Pin DIL 600mil, ovvero 'largo' il doppio dei normali integrati.
Funzione dei pin
|
||||||||||||||||||||||||
Note sui pin
|
Lo schema a blocchi |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
I Registri |
|||||||||||||||||||||||||||||||||||||||||||||||
|
I 5 bit di indirizzo A0..A5 selezionano uno dei 29 (h00..h1C) registri disponibili (gli indirizzi 30-32 non sono utilizzati).
Ciascuna delle 3 voci dispone di un banco consecutivo di 7 registri ( h00..h06 , h07..h0D , h0E..h14 ) rispettivamente per OSC1, OSC2 e OSC3). Funzione dei Registri VOCII registri Freq Lo e Freq Hi stabiliscono il valore da h0000 a hFFFF della frequenza dell'oscillatore, come indicato nella tabella più avanti I registri PWM Lo e PWM Hi stabiliscono il valore da h0000 a hFFF della modulazione d'ampiezza per il segnale a onda quadra. Il valore h800 rappresenta un'onda quadro con Duty Cycle = 50%. Gli ultimi 2 registri selezionano i valori dei 4 parametri (Attack, Decay, Sustain, Release) dei modulatori di inviluppo (ADRS), come indicato nella tabella più avanti. |
||||||||||||||||||||||||||||||||||||||||||||||
Il registro Control stabilisce il modo di funzionamento dell'oscillatore come indicato di seguito:
Funzione dei Registri FILTRI
Registro Res/Filt
Registro Mode/Vol
Funzione dei Registri MISC
|
|||||||||||||||||||||||||||||||||||||||||||||||
Significato e valori dell'ADSR |
|||||||||||||||||||||||||||||||||||||||||||||||
|
L'inviluppo del segnale è suddiviso in 4 parti, rispettivamente: A = Attacco (Attack): tempo impiegato per portare il segnale di uscita da 0 al valore massimo (Peak Amplitude). D = Decadimento (Decay): tempo impiegato per passare dal valore di picco al valore stabilito da 'Sustain'. S = Sostegno (Sustain): valore intermedio di ampiezza del segnale (16 livelli possibili). R = Rilascio (Release): tempo impiegato dal segnale per passare dal valore intermedio al valore 0. L'avvio del segnale ADSR è dato dal comando di Gate (bit 0 del Control Register). Non appena Gate va a 1, inizia il tempo di Attacco, a cui segue il Decadimento; il segnale si assesta quindi al valore stabilito da Sostegno finchè il comando di Gate torna a 0. A questo punto inizia il periodo di Rilascio. E' importante notare che il ciclo può essere interrotto in qualsiasi momento portando il Gate = 0; in questo caso inizierà la fase di Rilascio indipendentemente dal valore attuale raggiunto. Un nuovo comando di Gate = 1 riprenderà immediatamente il ciclo dal valore corrente. |
||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
Note sul comando del SID
E' importante ricordare che questo chip è stato pensato per accoppiarsi alle CPU della famiglia 65xx/68xx usate
nei computer Commodore (e anche Apple, Atari e altre).
Tali CPU dispongono nativamente dei segnali 02 (clock), R/W e RST; anche il segnale CS è normalmente generato dalla
decodifica diretta dell'indirizzo presente sul bus. Questo significa che un'operazione di lettura scrittura nella
mappa di memoria riservata al SID genera automaticamente e con la corretta temporizzazione questi segnali.
Ben diverso è pilotare il chip con un moderno processore tipo PIC; non è possibile avere l'abilitazione del chip
e/o la scelta tra lettura e scrittura contemporanemente all'operazione di trasferimento dati.
Occorre quindi seguire una sequenza corretta e precisa nel codice assembler di comando.
In sostanza, i passi da seguire sono:
- portare a inattivo (1) il CS
- caricare nella CPU il dato da trasferire
- emettere sulla porta assegnata il dato precedente
- selezionare l'operazione di lettura o scrittura modificando il bit relativo al pin R/W
- caricare nella CPU l'indirizzo del registro da selezionare
- emettere sulla porta indirizzi il valore dalla CPU
- portare a 0 il pin CS
- inserire un eventuale ciclo di attesa (NOP), anche in funzione della velocità di clock della CPU
- riportare a 1 il pin CS
Purtroppo (e questo è l'aspetto frustrante del SID) non esiste alcun tipo di riscontro che la sequenza abbia
funzionato, se non il fatto che il SID suoni o varii il suono corrente.
Ovvero, se c'è anche un unico errore da qualche parte, il chip sta zitto e vai a capire dove qualcosa è andato storto
(personalmente ho perso 3 settimane di prova/modifica/ritenta).