Sari la conținut

Transceiver Digital cu FPGA


roadrunner

Postări Recomandate

Am progresat cu proiectul de radio digital cu FPGA - am facut o placa de DAC/ADC de 14 biti (e 90% gata)

ADC -14 biti 125MSa

DAC 14 biti - 500MSa (I/Q sau doua canale independente)

Generator programabil de clock pentru ADC si DAC 

Interfata LVDS cu placa de FPGA (Zed Board) 

RR

 

DAC_ADC_14bit.png

Editat de roadrunner
  • Like 1
Link spre comentariu
Distribuie pe alte site-uri

Am terminat de rutat PCB-ul azi mai am doar niste verificari marunte si generez fisierele gerber.

Inca am cateva nedumeriri legate de clk care s-a dovedit mult mai complex decat credeam. DAC-ul de 14 biti (DAC3174) e foarte pretentios cand  vorba de clkock si are doua intrari de clock separate. Prima si cea mai importanta e cea care e folosita de circuitul de dac (care creaza iesirile analogice) si trebuie sa fie foarte precisa fara erori (jitter). Din cauza ca DAC-ul e folosit sa genereze semnal de RF daca clock-ul are jitter semnalul de iesire va fi modulat de aceste erori, deci cu cat e mai curat cu atat e mai pur spectral semnalul de iesire.

Al doilea clock este cel care vine odata cu datele din FPGA (care e o copie a primului) dar nu atat de critic din punct de vedere al jitter-ului, pentru ca datele intra intr-o memorie FIFO (ca o conducta) in ADC  si sunt preluate de clock-ul cel curat care genereaza semanlul analogic.

Am sa atasez si schema curand, dupa ce verific in FPGA daca am ales pinii corect. Verificarea asta implica sa scriu in VHDL partea de interfata cu DAC-ul  si testul de timing sa vad daca pot trimite datele cu 500MHz afara din FPGA. 

RR

 

  • Like 2
Link spre comentariu
Distribuie pe alte site-uri

Sunt curios de un aspect, exista FPGA la 500 Mhz?, poate avea aplicatii la retele neuronale?

in legatura cu sintza directa cu DAC se poate folosi, dar vor exista intodeuna cuie in banda, luma folosetede obicei DAC/PLL.

Link spre comentariu
Distribuie pe alte site-uri

Sunt curios de un aspect, exista FPGA la 500 Mhz?, poate avea aplicatii la retele neuronale?

da exista (cam acolo e limita) si da au avantaje la retele neuronale mai ales din cauza ca pot face o gramada de inmultiri in paralel si se pot face structuri exact ca retelele (data path) nemaifind nevoie sa muti datele in si din memorie (cum fac CPU/GPU)

 

Sinteza unui semnal RF are doi pasi generezi semnalul cu un NCO  numericaly controlled oscillator - (care e folosit si ca modulator daca vrei modulatie de faza sau frecventa PSK sau FSK) - partea asta e curata si foarte precisa (fractiuni de HZ rezolutie si erori froarte mici de amplitudine) dupa care esantioanele digitale se duc la DAC.  

Aici depinzi de cat de bun e DAC-ul si cat de tare vrei sa-l inpingi. Daca vrei sa generezi semnal de la 0hz la 40Mhz (unde scurte) un DAC de 500Mhz nu va avea probleme. Daca vrei frecvente mai sus adaugi un mixer dupa DAC (upconvetor) si ridici frecventa acolo unde vrei sa transmiti (VHF, UHF sau mai sus)

 

Pe placa din poza de mai sus circuitul integrat din mijloc (care genereaza clock-ul pentru ADC si DAC) e un PLL. 

RR

 

PS sunt DAC-uri in ziua de azi care au frecventa esantianelor de 6GHz (6000Mhz) si sunt sunt integrate in fpga la fel si ADC (se cheama RFSoC) dar nu ma pot apropia de ele la pret.

RR

 

Editat de roadrunner
Link spre comentariu
Distribuie pe alte site-uri

Am facut un mic design in FPGA ca sa tested timing-ul si corectitudinea la alegerii pinilor. Se pare ca nu pot depasii 300MHz intern cu FPGA-ul de pe placa mea din doua cauze. Prima cauza e ca intern cam asta e limita iar la I/O trebuie sa trimit doua stream-uri la DAC (de fapt sunt dua DAC-uri) si trebuie sa transfer DDR (double data rate) adica datele se schimba pe ambele fronturi ale semnalului de clock, adica datele la pini de iesire sunt 600MHz care de asmenea e limita la FPGA-ul meu.

mai jos e o schema generata automat dupa synthezsis (adica supa ce tool-urile au "compilat" codul vhdl)

 

Cum functioneaza:

la stanga este intrarea de clock (P si N ca e intrare diferentiala) si reset-ul. clock-ul extern de 300Mhz este dublat de un circuit PLL numit de mine clk2x care multiplica clock-ul de intrare de care am nevoie mai tarziu la iesirile DDR pentru DAC-ul extern.

Blocul NCO  genereaza doua stream-uri in quadatura (sinus si cosinus - sau I/Q) si le prezinta pe un bus de 32 de biti (din care sunt folositi 28 de biti - 14 biti pentru I si 14 biti pentru Q) - dupa care datele intra in blocul de iesire care le face DDR (practic intra 28 de biti la 300MHz si ies 14 biti la 600MHz) sau mai bine zis la 300MHz dar se schimba pe ambele fronturi ale semnaluli de clock - datele de iesire sunt insotite de semnalul de clock cu care au fost generate si vor calatorii pe PCB impreuna ca sa nu existe diferente de faza (trasele pe pcb sunt de aceesi lungime)

toate liniile de date si clock-ul sunt diferentiale si conform standardului LVDS (low voltage differential signaling) si pcb-ul a fost proiectat sa respecte impedanta diferentiala de 100 Ohmi. 

RR

 

image.thumb.png.11a588ccfb8eedea9341f7b1e9365a00.png

Editat de roadrunner
Link spre comentariu
Distribuie pe alte site-uri

Citat

Posibil sunt colegi radioamatori interesati, care ar fi pretul?

Nu cred ca ar fi interesati dpdv al pretului.  Placa de dezvoltare care o folosesc e 499 USD, iar asta care o construiesc deocamdata e 150-200 USD.  pentru mine e doar un poiect de hobby. In cel mai bun caz o sa public totul intr-o carte poate.

 

*****

Ma felicit ca am facut testul asta minor de corectitudine al alegerii pinilor la FPGA  ca mi-am dat seama ca bank-ul de pini care trimite datele la DAC trebuie alimentat cu 2.5V (sunt niste jumperi pe placa de dezvoltare) si asta ma forteaza sa alimentez si partea digitala a DAC-ului la 2.5V (o aveam la 1.8V) mi-am corectat schema si o sa corectez si pcb-ul.

 

Treaba nasoala e ca ADC-ul trimite totul pe linii diferentiale si e alimentat la 1.8V iar receiver-ele diferentiale LVDS din FPGA sunt alimentate la 2.5V - acolo am un semn de intrebare si nu voi stii decat dupa ce fac primul PCB, teoretic ar trebui sa fie ok (da' practica ne omoara)

 

Un lucru usor enervant e ca proiectul asta e interdisciplinar: FPGA, PCB, notiuni de radio si DSP, progamare C (ca trebuie sa setez niste parametrii la ADC, DAC, PLL pe un bus SPI) are de toate si probabil esta e si motivul pentru care m-am apucat de el.

RR

 

 

Editat de roadrunner
Link spre comentariu
Distribuie pe alte site-uri

  • 7 months later...

Refolsesc topicul asta ....

 

Am facut un transmitator digital FM pe banda de 2m (144 Mhz) - transmite voce (cu toate ca e implementat digital, pleaca de la un microfon digital cu iesire PDM (pulse density modulation) - dupa care decimez (incetinesc) si filtrez trece jos ca sa obtin esantioane audio dupa care intru intr-un modulator DDS (direct digital synthesis) care moduleaza putatoarea FM.

In toata aventura asta cu radioul (care merge spre surpriderea mes) am descoperit ca semnalul audio de la microfonul digital avea si o componenta de curent continuu care a trebuit s-o elimin pentu ca imi muta frecventia centrala a modulatorului FM (cu alte cuvinte emiteam un pic pe langa frecventa dorita)

Mai jos e un video pe care l-am pus pe youtube despre cum am eliminat componenta continua in domeniu digital si l-am subtitrat si in Romana (m-a ajutat google in mare parte) - nu stiu cat de folositor e video-ul dar il pun aici poate cine stie motiveaza pe cineva.

 

RR

 

 

Link spre comentariu
Distribuie pe alte site-uri

Interesant. Adica chestia asta sa introduci un bloc software ca sa scoti partea dc offset dintr-un semnal.... e ceva UAU pentru studentul roman, pentru cei mai putini familiarizati cu programarea FPGA.

Un link la acea documentatie in format PDF se poate posta? :smile:

Link spre comentariu
Distribuie pe alte site-uri

linkul e in descrierea de pe youtube il cunosc pesonal pe autorul doumentului (am fost colegi la Xilinx)

https://docs.xilinx.com/v/u/en-US/wp279

de fapt  e un block hardware nu software, scris in VHDL 

RR

 

pun mai jos video-ul cu design-ul original unde am descoperit de ca microfoanele au offset. (din nou poate inspira pe cineva)

 

 

 

Editat de roadrunner
Link spre comentariu
Distribuie pe alte site-uri

  • 6 months later...

Am pus un video cu constructia placii de ADC-DAC de 14 biti pentru aplicatii radio - unde arat si schema si cablajul

montez cateva placi in cateva zile si urmeaza niste video-uri cu constructia si pornitul (probabil ca nu o sa plece din prima)

RR

 

Editat de roadrunner
  • Thanks 1
Link spre comentariu
Distribuie pe alte site-uri

  • 2 weeks later...

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.

ATENTIE !!! Functionarea Tehnium Azi depinde de afisarea de reclame.

Pentru a putea accesa in continuoare site-ul web www.tehnium-azi.ro, va rugam sa dezactivati extensia ad block din browser-ul web al vostru. Dupa ce ati dezactivat extensia ad block din browser dati clic pe butonul de mai jos.

Multumim.

Apasa acest buton dupa dezactivarea extensiei Adblock