Newsgroup: it.hobby.elettronica.digitale
Titolo: Dubbio Atroce

Salve
Mi sto avvicinando alla programmazione VHDL perchè per alcune applicazioni 
particolari i PIC sono inutilizzabili.
I primi approccii pero' ho deciso di farli a livello schematico :
utilizzo il tool come se fosse orcad; piazzo i componenti e poi gli faccio 
generare il file di programmazione.
Ho realizzato uno schema con diversi sommatori digitali a 16 bit
e latches sempre a 16 bit.
I dubbi sono questi :
Perchè se, con lo schema sopra menzionato, genero il file di programmazione 
per una CPLD il tool mi consiglia un chip dal costo di quasi 70 euro 
(XC95288) , e se
invece,sempre per lo stesso schema, genero un file per FPGA mi consiglia un 
chip da 10 euro (XC3S50)?
(Uso Xilinx ise 7.1)
Da varie ricerche su internet le due tipologie sembrano essere quasi 
equivalenti per la maggior parte delle applicazioni.
E' molto probabile che sia la mia inesperienza e la scarsa conoscenza del 
tool a farmi ottenere questi risultati, ma gradirei che qualcuno mi facesse 
un po' di luce sulla questione.
Altra domanda : per fare le varie prove con i miei primi programmi avrei 
bisogno di acquistare dei chip facilmente saldabili su una basetta da 
prototipi, ma, da quello che ho visto dai datasheets, i packages di questi 
chip sono assurdi per un hobbista e richiedono uno stampato a regola d'arte. 
Esistono soluzioni tipo zoccoli o adattatori per rendermi la vita piu' 
facile?
Grazie anticipatamente per le risposte.
 Massimo IW0HKG
 

 facile?
Qui hai messo il dito sulla piaga. Tutti i componenti piu' recenti sono
in contenitori SMD con passo a 0,5 mm o, peggio ancora, in BGA
assolutamente ingestibili da hobbisti e non esistono zoccoli che
possano aiutarti.
Forse esiste ancora qualche vecchio componente in contenitore
DIP ma non te lo consiglio. L'unico contenitore ancora abbastanza
usato per dispositivi medio-piccoli e' il PLCC. Hanno passo
a 1,27 mm pero' gli zoccoli si trovano facilmente e si inseriscono
nelle normali basette millefori a passo 2.54 mm. Per fare qualche
esperimento ti consiglierei di selezionare il CPLD o FPGA in
base alla disponibilita' di questo contenitore piuttosto che ad altre
caratteristiche.
In alternativa, potresti acquistare una scheda per valutazione o
sviluppo, di solito le forniscono gli stessi produttori dei chip.

Ciao
Per usare SMD a livello hobbistico esistono dei circuiti stampati con vari
footprint  (credo anche RS)
che poi terminano con un normale 2.54 quindi puoi puo usare tanquillamnte il
tuo componente
e toglierlo e metterlo dove vuoi anche fu 1000fori
Il piů č saldare la cpld sulla basetta di adattamento devi trovare
l'atrzzatura ... punta concava,  flussante e mano ferma  :-)
Ciao

 Ciao
Uno dei problemi con quegli adattatori e' che non ti permettono
di saldare i condensatori di disaccoppiamento dell'alimentazione
vicino ai piedini dell'integrato. La cosa e' molto importante per
gli FPGA perche' hanno dei grandi picchi di assorbimento di
corrente. A volte basta la resistenza+induttanza di una pista di
alimentazione di pochi centimetri per abbassare la tensione di
alimentazione, gia' bassa di per se', a valori critici.

Grazie infinite per le risposte.
I vostri consigli mi sono stati utili innanzitutto per ottimizzare le
ricerche in mezzo alla valanga di documenti che ho trovato in rete:
stavo per fare la fine del mulo che e' morto di fame perche' non si decideva
di scegliere almeno uno degli enormi mucchi di fieno che aveva a 
disposizione per mangiare.
Per quanto riguarda i packages credo che mi affidero' (ci affideremo visto 
che
sto studiando con altri due amici) a qualche ditta specializzata per 
realizzare
dei cs. ad hoc(i prezzi sembrano "quasi" abbordabili per piccole serie).
Per quanto riguarda la saldatura dei chip piu' difficili per fortuna non ci 
sono problemi; un mio amico
lavora in un laboratorio ben attrezzato al proposito.
In merito alla questione di saldare condensatori di disaccoppiamento
molto vicino alla VDD dei chip, ne so qualcosa.
Ho bruciato un paio di  PIC18F458 prima di rendermi conto del problema.
A presto e grazie ancora per il prezioso supporto
Massimo 


ehm... a quale problema ti riferisci ? non mi risulta che si possa bruciare un micro per mancanza di condensatori di
bypass. Forse avevi un'alimentazione sporca (nel senso di spike che eccedevano le specifiche di VDD) a monte del micro.
In ogni caso il problema non si risolve (in genere) con condensatori di bypass.
--
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking at it (Robert A. Pease)
zsimone...@zliberoz.it
 (Rimuovere i caratteri di zorro per rispondere via mail)

 bypass.
Non ti nascondo che qualche dubbio mi e' rimasto sulla possibilita' che
sia stato il solo condensatorino a risolvere il mio problema, ma non riesco 
a
trovare altre spiegazioni.
Visto che sono un chiacchierone e che mi hai provocato adesso ti sorbisci
tutta la storia. :)
In realta' non ho assistito alla morte del primo micro e non ho potuto
ascoltare le sue ultime parole riguardo l'assassino.
Al mattino funzionava tutto correttamente, poi sono tornato dal lavoro e
ho trovato "stecchito" il primo PIC.
Una volta appurato che l'alimentazione era corretta come voltaggio non ho
esitato a sostituire il micro (anche se qualche altra verifica
non avrebbe guastato).
Dopo una mezzoretta dalla sostituzione ho iniziato a sentire quella puzzetta
di "scaldata" tanto nota agli hobbisti.
Il circuito funzionava ancora ma il PIC sostituito era bollente.
Ho eseguito varie accensioni e spegnimenti e ho notato che il fenomeno del
surriscaldamento non si presentava con regolarita'.
Non riuscivo a capire. Ho sostituito il 7805 pensando che fosse lui
ogni tanto ad autooscillare.
Ho controllato possibili cortocircuiti con i pin non utilizzati, ma era
un controllo insensato visto che li avevo configurati tutti come ingressi.
Ho anche pensato che qualche tensione potesse entrare in VDD tramite
le porte del micro, ma il problema persisteva anche lasciavo lavorare
il circuito collegato solo all'alimentazione.
Quando ho iniziato a dare la colpa alle influenze aliene ho capito che 
dovevo
rilassarmi e prendermi una pausa.
Tutto e' rimasto in balia della polvere per qualche giorno finche' non ho
fatto la prova dei condensatori vicinissimi
ai pin VDD e VSS sotto consiglio del mio datore di lavoro.
Il circuito, sempre con lo stesso chip, ha subito nuovamente il ciclo delle
riaccensioni e spegnimenti e il micro ha continuato sempre a funzionzionare 
senza
scaldarsi.
Per precauzione ho ri-sostituito il micro scaldato (che funzionava ma per 
cui non provavo piu'
molta fiducia) e da allora non ho avuto piu' problemi.
Il circuito e' tuttora funzionante, FRESCO e operativo tutto il giorno:
genera il segnale di riferimento del PLL della mia radio FM "di strada".
Qualche dubbio poteva venire dal 7805 che alimentava il micro, ma era
provvisto dei canonici condensatori da 100 nano e 100 micro sia in
in ingresso che in uscita e inoltre prendeva i 12 Volt in ingresso
dall'alimentatore del mio PC che gode di buona salute.
mah.....

 surriscaldamento non si presentava con regolarita'.
Sembra l'esatta descrizione di un fenomeno di latch-up.
Di solito l'evento trigger arriva da un input, ma ho avuto
sorprese di questo tipo anche con un alimentatore
che all'accesione mandava delle sovratensioni.
Non avevo ancora messo condensatori di bypass perche'
era un circuito in fase di progettazione+montaggio e ho
fumato due integrati da 50 mila prima di capire cosa stava
succedendo.

 piu' facile?
Credo che ci siano ancora CPLD in package PLCC, quindi montabili su
zoccoli... Dai un'occhiata al sito della Xilinx o dell'Altera...
Ciao,
A.D.

 BGA...
Dovro' attrezzarmi.
Grazie

 anche in UHF con una risoluzione  piu' ridotta.
Ehm...armoniche UHF ? Non sono un esperto, ma uno studio dello spettro di uscita l'hai fatto ? Farsi le cose da soli è
bello ma sui DDS ci sono un paio di cosucce di cui tenere conto, come il rumore di fase "a dente di sega" originato dal
NCO. Sul sito Analog Device c'è un simpatico applicativo in java che ti mostra quanto sono "non filtrabili" quelle righe
spurie dentro lo spettro, anche se, probabilmente, non necessitando di un D/A, per te le cose sono un po' più semplici.
Puoi integrare alcuni trucchetti (un PRNG, per esempio) che "spiani" di qualche dB le frequenze spurie, ma lo spettro in
uscita di un DDS resta sempre una brutta bestia. Soprattutto fino a che la frequenza di uscita è vicina a Fclock/2.
saluti


 frequenza di uscita è vicina a Fclock/2.
Forse stavi scherzando, ma un PRNG come si potrebbe fare?
Generatore di rumore e convertitore A/D?
Lettura sequenziale di una tabella di valori casuali?
Non mi sembra qualcosa di molto economico in termini di tempo e risorse, ma
sono completamente
a digiuno e non saprei cosa risponderti.
Comunque non credo che le colonnine spurie siano troppo vicine alla
"portante" al punto di non poterle
attenuare molto con un filtro stretto, altrimenti non avrebbe senso la
produzione e la diffusione di questi dispositivi.
Purtroppo l'applet l'ho aperto ma mi genera degli errori in explorer 
chiudendolo e poi da quello che ho capito la simulazione e' possibile 
secondo i modelli di quei dispositivi, e io non ho ancora ne un modello ne 
un dispositivo.
Vabbe', comunque se riesco a fare qualcosa magari malfunzionante, avremo
un'altra occasione
di dialogo.
Ciao
Massimo

 produzione e la diffusione di questi dispositivi.
Eh..., antica questione, se devi aggiungere a valle del DDS un filtro molto stretto, che senso ha avere un generatore
cosě intrinsecamente "programmabile" ?
Saluti,


 Interessante.
All'interno di molti FPGA puoi trovare NCO e moltiplicatori gia' pronti
realizzati in hardware. Guarda bene le brochure delle varie famiglie e
i datasheet dei componenti prima di iniziare il progetto.

 risoluzione  piu' ridotta.
L'idea è buona, ma il problema è come riuscire a togliere le armoniche
non volute, che potrebbero dare fastidio... (un filtro selettivo
programmabile?!?)
Ciao,
A.D.

 programmabile?!?)
Si, e' un signor problema.
Una volta ottenuto il prototipo ci sara' da divertirsi a trovare le 
soluzioni
ai problemi da voi esposti e anche a quelli non esposti.
A me innanzitutto interessa il "mentre".
Voglio imparare ad utilizzare le logiche programmabili e il DDS mi
sembra abbastanza intrigante per iniziare(vada come vada).
Simone, grazie per il link.
Ciao Massimo

> Simone, grazie per il link.
Naturalmente rinnovo i rigraziamenti a tutti gli altri 

 pronti realizzati in hardware.
E' vero in alcuni modelli ci sono dei moltiplicatori, perň non degli
NCO...
Si tratta piů che altro di PLL sotto varia forma, che sebbene possano
dare frequenze (clock) praticamente arbitrarie, e anche piů segnali
con sfasamenti programmabili, non possono essere programmati a run
time, ma solo a design time! Questo limita molto il loro utilizzo.
Ciao,
A.D.

 time, ma solo a design time! Questo limita molto il loro utilizzo.
Sul fatto che siano PLL e non NCO probabilmente hai ragione.
Pero', almeno in alcuni FPGA della famiglia Virtex che conosco, ti
confermo che i DCM sono proprio riconfigurabili dinamicamente "run time".

 di Hertz con clock a 100 MHz.
Eh già. Siccome mi si è riaccesa la passione per i DDS, che per l'appunto, è una delle prime cose che ho provato a fare
su una CPLD qualche tempo fa, ieri sera ho fatto un paio di simulazioni su Quartus, utilizzando una EPM240, con un NCO
da 24 bit.
Se non ho visto male, il timing analyser mi stimava un clock massimo di 300MHz (o 180MHz... boh, ad un certo punto la
vista si è annebbiata).
Ho impostato la frequenza di uscita a 1/5 fclok, corrisponedente a 20MHz con 100MHz di clock, e ho fatto correre il
simulatore per qualche microsecondo.
L'idea era di valutare lo spettro del segnale in uscita. Ok, ho salvato la simulazione come 'tbl' e passato i dati a
Matlab. Effettivamente, con 7000 campioni, non ho visto righe strane ma devo dire che sono crollato prima di verificare
il tutto per bene. Soprattutto ho qualche dubbio sulla griglia di simulazione, forse dovrei stringerla un po' per fare
un'operazione di FFT sensata, non so...
Se qualcuno è interessato, domani mi porto il progetto in ufficio e lo piazzo da qualche parte.


 Matlab. Effettivamente, con 7000 campioni,
mah, ripensandoci, mi sa che le righe corrispondenti al rumore di fase non le vedo di certo con solo 7000 campioni.
Probabilmente per fare una FFT significativa ci vogliono un numero di campioni poco maneggevole, probabilmente la via
analitica è quella che porta alla verità.
Ora, caffè.

 piazzo da qualche parte.
Aspetto eccitato e con ansia. 

 "run time".
Si, li conosco e li ho usati spesso i DCM, e devo dire che sono dei
componenti estremamente versatili! Però mi pare che siano come dici tu
"riconfigurabili dinamicamente a run-time", e non semplicemente
"configurabili" (lo sono solo per qualche parametro). Nel migliore dei
casi quindi dovresti preparare più bit-stream (magari differenziali)
per le frequenze che ti servono e riconfigurare parzialmente l'FPGA
ogni volta! E anche se questo si può fare pure "da dentro" (usando la
periferica ECAP), è sempre una bella seccatura! :-)
Quasi quasi conviene implementare un DDS vero e proprio, che tra
l'altro può essere utilissimo anche per creare dei
modulatori/demodulatori (AM, FM, PSK...).
Ciao,
A.D.

 modulatori/demodulatori (AM, FM, PSK...).
Prendo atto che conosci meglio di me la faccenda.
Comunque prima o poi voglio verificare come funziona
la storia.
Tornando al DDS  mi piacerebbe avere una
vostra opinione su come generare un onda quadra.
Mi pare che il metodo usato generalmente sia quello di
prendere semplicemente il MSB dell'accumulatore di fase.
Pero' in questo modo si ottiene un segnale sempre piu'
affetto da rumore di fase man mano che ci si avvicina
a Fck/2. In questo momento non so quantificarlo bene,
ma gia' a Fck/40 di ha un segnale molto "sporco".
La cosa invece avviene in modo molto piu' ridotto se
l'accumulatore di fase viene convertito in seno e poi in
analogico con un DAC e filtrato p.b. come di solito avviene
in tutti  i DDS per usi non digitali, tipicamente per telecomunicazioni.
Mi era percio' venuta l'idea di generare un onda quadra
partendo dal segnale sinusoidale e squadrandolo, invece
che prendere il MSB.
Puo' avere senso un'operazione di questo tipo?

 partendo dal segnale sinusoidale e squadrandolo
Per segnale sinusoidale intendo ovviamente quello finale,
filtrato dal passa basso. Grazie.


niente da fare, ho avuto da fare, se ne riparla lunedě...
Saluti

 Puo' avere senso un'operazione di questo tipo?
Non saprei... ma a occhio mi sembra che le cose si complichino molto
senza forse ottenere un grande vantaggio. Probabilmente meglio fare
uscire direttamente un'onda quadra piů "pulita" usando un PRNG nella
parte bassa dell'accumulatore.
Ciao,
A.D.

 ma devo dire che sono crollato prima di verificare
Credo che per vedere qualcosa dovresti usare un numero di punti
dell'ordine (o multiplo) di 2 elevato al numero di bit
dell'accumulatore
che sono stati tralasciati.
Ciao,
A.D.

Mi sono finalmente ricordato di prendere il progetto del NCO a 24 bit. Il progetto è stato realizzato a tarda sera su
Quartus II, sintetizzato per una EPM240, famiglia MAX II ed è disponibile anche un file 'waveform' per la simulazione,
in cui il master clock è fissato a 100MHz e l'accumulatore genera una frequenza di uscita pari a F/5, ovvero 20MHz.
Riguardo alla velocità, ammetto il mio errore, i 300MHz sono riferiti allo shifter register in cui immettere
l'accumulatore. A quanto vedo dal timing analyser, il ritardo tra il master clock e il clock di uscita viene stimato in
4.7 ns circa, che corrispondono a un paio di centinaia di MHz. Non ho avuto tempo di verificare se questo dato
rappresenta, in relazione al sommatore, il worst case o no.
Il progetto sta qui:
http://mio.discoremoto.virgilio.it/simone.bern/
Per ulteriori info sulle CPLD MAX II:
http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp
Le CPLD presso il distributore EBV:
http://snipurl.com/kj6q
Saluti
