390 likes | 652 Views
Úvod do Software Defined Radios - SDR FPGA; ASIC; DSP. GALAJDA KEMT, FEI-TU, Ko šice. 2 .1 2 .2003. FPGA or ASIC or DSP ?. Obsah. 1. Všeobecné informácie o SDR 2. Niektoré vybrané bloky SDR - Digital Down Conversion (DDC)
E N D
Úvod do Software Defined Radios - SDRFPGA; ASIC; DSP GALAJDA KEMT, FEI-TU, Košice 2.12.2003
FPGA or ASIC or DSP ? Obsah 1. Všeobecné informácie o SDR 2.Niektoré vybrané bloky SDR - Digital Down Conversion (DDC) - Digital Up Conversion (Direct Digital Synthesis- DDS) 3. Realizácia niektorých blokov SDR na KEMT - DDC (AD6620) - DDS (AD7008) 4. Realizácia niektorých blokov SDR v FPGA - všeobecné informácie o FPGA - Xilinx vs. Altera - výhody a nevýhody FPGA 5. FPGA projekt – metodológia
Termín software môže vyvolávať dojem, že rádio je realizované plne na procesorovej platforme. Podstata SDR-ka je však flexibilita riešenia. Flexibilita riešenia predstavuje možnosť prepojenia vzduchom prostredníctvom viacerých kanálov pričom v riešení ma byť možnosť ľahko a rýchlo meniť charakter spracovania signálov. DSP mikroprocesory neuspokojujú aritmetické alebo I/O požiadavky súčasných moderných komunikačných prostriedkov pre spracovanie signálov. Pokročilé FPGA technológie (vďaka ich rekonfigurovateľnosti) však poskytujú možné riešenia. Koncepcia FPGA prijímača (BTS) je na obr.3. 1. Všeobecné informácie o SDR
1. Všeobecné informácie o SDR Dva podsystémy (procesory) Dve spätné väzby
2. Niektoré vybrané bloky SDR • Built from digital oscillator, mixer and decimating filters • FPGAs provide more flexible and adaptable solution that DDC ASSP (Application specific standard products) chips
1. Všeobecné informácie o SDR Vytváranie viacerých kanálov, digital up-convertion, korekcia skreslenia, modulácia, tvarovanie lúča pre smart antény
2. Niektoré vybrané bloky SDR • Allows more flexibility and customization that ASSP equivalents • Designs can be modified at any stage by simply reconfiguring the FPGA
3. Realizácia niektorých blokov SDR na KEMT • DDC (AD6620): • Je digitálny decimačný prijímač s možnosťou výberu úzkopásmového kanálu. • Je určený na prepojenie medzi rýchlym A/D prevodníkom (65MSPS, 12 bitový) a univerzálnym DSP. • Vysoké rozlíšenie číslicovo riadeného oscilátora (NCO) dovoľuje vybrať jednu nosnú frekvenciu z veľmi rýchleho dátového toku. • Veľký dynamický rozsah decimačných filtrov zo širokým rozsahom decimačných faktorov dovoľuje vybrať aj úzkopásmové, aj širokopásmové nosné frekvencie. • Architektúra založená na pamäti RAM dovoľuje jednoduchú rekonfiguráciu pre rôzne aplikácie.
3. Realizácia niektorých blokov SDR na KEMT Bloková schéma AD6620 (DDC)
DDS (AD7008): Na základe informácie v binárnom tvare generuje požadovaný sínusový signál na výstupe. Obvod umožňuje realizovať: amplitúdovú moduláciu, fázovú moduláciu, frekvenčnú moduláciu, kvadratúrnu moduláciu. Hodnota výstupnej frekvencie môže byť nastavená od 0 do 66MHz s krokom 0,015Hz. Sériové a paralelné rozhranie obvodu dovoľuje pracovať nezávisle na DDS hodinách. 3. Realizácia niektorých blokov SDR na KEMT
3. Realizácia niektorých blokov SDR na KEMT Bloková schéma AD7008 (DDS)
FPGA = Konfigurovateľné pole buniek prepojené konfigurovateľnou prepojovacou sieťou Základná bunka = LUT (LookUp Table) + registre Prepojovacia sieť na rôznych úrovniach - vnútri LUT - krátke (medzi skupinou buniek) - stredné (medzi skupinami buniek) - dlhé (row/column interconnect) - špeciálne (clock nets) SRAM technológia (5 tranzistorov/bit)(existuje aj FLASH technológia) Cena produktu takmer nezávislá od množstva ks 4. Realizácia niektorých blokov SDR v FPGA FPGA = Field Programmable Gate Array
4. Realizácia niektorých blokov SDR v FPGA Xilinx: Configurable Logic Block (CLB) of Virtex-E Device Xilinx vs. Altera Altera: Logic Element (LE) of Stratix Device
4. Realizácia niektorých blokov SDR v FPGA Moderné FPGA • Vyhradené RAM bloky • DSP bloky (multiplier, MAC- multiply-accumulate unit)výkon moderných FPGA = 10 * výkon moderných DSP uP • Digital Clock Management (PLLs)možnosť vygenerovania akejkoľvek frekvencie na čipe • Embedded Processor Coremožnosť realizácie komplexného HW/SW systému na jednom čipe Altera: ARM, Xilinx: IBM PowerPC • Soft Processor Cores Altera: NIOS, Xilinx: MicroBlaze • množstvo I/O štandardovsingle ended, diferenčné (LVDS) Clock Data Recovery (rýchlosti prenosu dát rádovo GB/s) • dnes už hovoríme o „System on Chip“ architektúre (uP core, IP bloky poprepájané pomocou on-chip bus-u). Typické parametre súčasných FPGA • 30K až 8M hradiel • 0.15 µm technológia • napájanie 1.5V, I/O 3.3V • frekvencie 200 až 400 MHz • až 8 prepojovacích metalických vrstiev • do 1100 I/O pinov
4. Realizácia niektorých blokov SDR v FPGA FPGA - Výhody a nevýhody Výhody • dostupnosť • rekonfigurovateľnosť (jednoduchý upgrade existujúcich zariadení) • krátky čas realizácie obvodu oproti ASIC (dostupné prostr. modelovania testovania) • nízke náklady na SW vybavenie a infraštruktúru • možnosť kompletnej realizácie na PC (nízke náklady) aj LINUX • modelovanie a popis pomocou HDL jazykov • jednotná metodológia návrhu (technológie sa menia, ale návrhová metodológia zostáva; jednoduchý redesign pre iné typy FPGA) • pinová kompatibilita (napr. XC2V40FG244 = XC2V80FG244)Nevýhody • návrhár je limitovaný počtom: - buniek, prepojení - vyhradených hodinových liniek v FPGA • nutnosť inicializovania FPGA po zapnutí napájania • iba synchrónne návrhy („clock gating“ nie je možný) • vyššia prúdová spotreba obvodov (málo používané v prenosných zariadeniach)
Štúdium možností riešenia problému návrhu obvodu- základná špecifikácia produktu- aké algoritmy použijem na dosiahnutie výsledku, výhody/nevýhody, dopad na cenu, rýchlosť, ...- overím si nejasnosti simuláciami (MATLAB) alebo na čiastkových prototypoch Návrh koncepcie obvodu- ktorú časť realizujem v SW, ktorú v HW- interfacing, dostupnosť obvodov, puzdrá, technical support- odhad spotreby, testovanie, cena- tvorba špecifikácií (dokumentácia) Popis obvodu v HDL jazyku (VHDL, Verilog)- kódovanie s ohľadom na syntetizovateľnosť Simulácia obvodu, časové priebehy signálov- napr. ModelSim- porovnanie výsledkov s „Golden Reference“ Logická syntéza obvodu (napr. Leonardo Spectrum)- voľba finálnej technológie- výstup netlistu pozostávajúceho z primitívnych buniek danej technológie P&R (Place and Route), Fitting- priradenie pinov- rozmiestnenie blokov obvodu na čipe- prepojenie logických buniek (routovanie) Štúdia Koncepčný návrh Kódovanie v HDL Simulácia Logická Syntéza P&R, Fitting 5. FPGA projekt – metodológia FPGA/ASIC Postup návrhu (Design Flow) Configuration mgmt Dokumentácia
5. FPGA projekt – metodológia Príklad FPGA projektu • Koncepčný návrh • Návrh blokovej schémy FPGA • Zhrnutie požiadaviek na FPGA • Výber vhodného FPGA s ohľadom na možné rozširovanie produktu v budúcnosti • Priradenie pinov • Mapa registrov • Návrh a kódovanie jedného z blokov, generovanie vyhradených RAM blokov • Verifikácia • Logická syntéza • Place & Route • Oživenie HW, testovanie
5. FPGA projekt – metodológia FPGA projekt: Digitálny prijímač
5. FPGA projekt – metodológia Interná štruktúra digitálneho prijímača v FPGA
5. FPGA projekt – metodológia Rekapitulácia požiadaviek na FPGA • Počet I/O signálov 112 I/O • Hodinová frekvenica 61.44 MHz(*) vychádzame zo systémových požiadaviek na digitálne spracovanie signálu • Počet HW násobičiek 5 HW násobičiek - 1x Hilbert FIR filter - 2x Demodulator - 1x FIR filter - 1x GAIN control • Počet RAM blokov 5 RAM blokov - DDS SIN function lookup table (2x DP RAM) - Hilbert delay line (1x RAM) - Hilbert coefficients (1x DP RAM) - FIR delay line (1x RAM) - FIR coefficients (1x DP RAM) • Konfigurácia FPGA slave serial pomocou uC(mikroprocesor generuje dáta aj hodinový signál)
5. FPGA projekt – metodológia Výber vhodného FPGA Problém: Koľko zdrojov (LUT, registrov, RAM, vyhradených blokov) budeme potrebovať ? Riešenie: - spočítať I/O piny - spočítať požiadavky na RAM, vyhr. bloky - odhadnúť počet DFF (registrov) Altera: Xilinx:
5. FPGA projekt – metodológia Priradenie pinov FPGA
5. FPGA projekt – metodológia Komunikácia FPGA <-> uC FPGA funguje ako slave uC uC komunikuje s FPGA prostredníctvom množiny registrov (R, W, R/W) cez svoju štandardnú zbernicu. Tabuľka registrov: • podklad pre vývojárov SW • takmer vždy:- VERSION register- TEST register- GLOBAL CONTROL reg.- GLOBAL STATUS reg. • ďalšie detaily o registroch:- R/W- správanie sa pri resete, hodnota po resete- význam jednotlivých bitov registra
5. FPGA projekt – metodológia Návrh DDS (Direct Digital Synthesis) bloku Princíp DDS f = fclk / 2M fclk = 1.92 MHz (vzorkovacia frekvencia systému) pre požadovanú f = 2 kHz => faktor 2M = 960 Záver:- fázový akumulátor je nutné realizovať pomocou modulo aritmetiky- SIN(x) tabuľka bude mať 960 položiek, M = N- W = 16 bitov (S/N = 96 dB)- bez použitia modulo aritmetiky by pri M=10 bolo f = 1.875 kHz
5. FPGA projekt – metodológia Bloková schéma DDS bloku • Príklad systému s kvadratúrnym (SIN aj COS) výstupom • Použijeme Dual-Port RAM bloky • Port A: uC má možnosť zapísania akejkoľvek hodnoty do RAM. Môžeme definovať napr. pílovitý signál. Tento port je Write Only • Port B: DDS – fázový akumulátor poskytuje adresu, výstupom je napr. sínusovka. Port je Read Only. Dedikované RAM blokydanej technológie1024 x 16 bitsNutné vygenerovať v tzv.„CORE Generatore“
5. FPGA projekt – metodológia Core Generator • Xilinx -> Core Generator System – vygenerovanie DDS a RAM blokovTerminológia: IP Core – Intelectual Property Core • Altera -> MegaCore function • - množstvo hotových „plug-in“ blokov- základné bloky od Xilinx sú zadarmo (pamäte, DSP, Math, ...)- prístup k obrovskému množstvu ďalších blokov prostredníctvom Internetu(prehliadanie zadarmo, ich použitie je však spoplatnené)- vysoko parametrizovateľné- optimalizované pre danú technológiu- výstupom je: - EDIF netlist - simulačný model bloku- DDS blok je súčasťou základnej ponuky Xilinx (free)
5. FPGA projekt – metodológia DDS core • DDS Core parameters- W (output width)- M (phase acc. width.)- B (phase increment width)- sine/cosine output, both- memory: - distributed - block memory- interface pinsZáver: DDS core neumožňuje realizovať fázový akumulátor pomocou modulo aritmetikyXilinx DDS core je nepoužiteľná, nutné popísať manuálne
5. FPGA projekt – metodológia Dual Port RAM core • SIN_RAM a COS_RAM- Width A, depth A- Width B, depth B = F(depth A)- R/W options- addtional registers- handshaking- initialization of RAM (MIF, COE file)- SIN_RAM aj COS_RAM inicializujeme príslušnými hodnotami, ktoré špecifikujeme vo vstupnom súbore pre CORE Generator (sin_ram.mif, alebo sin_ram.coe)- ten istý inicializačný súbor je použitý aj pri simulácii- po nakonfigurovaní FPGA budú RAM obsahovať príslušné hodnoty. Tieto sa nestratia ani pri resete FPGA (iba po odpojení napájania)
5. FPGA projekt – metodológia FIR Filter core
5. FPGA projekt – metodológia DDS - VHDL kód Súbory: • Entita: DDS_.vhd • Architektúra: DDS_rtl.vhd • Konfigurácia: DDS_rtl_cfg.vhdSúbory sú umiestnené v jednom adresári.Používať version management system (napr CVS) Príklad kódu (viď vpravo): • inštancia SIN_RAM, COS_RAM blokov ktoré boli yygenerované v CORE Generatore • prepojenie s ostatnými signálmi a I/O(port map) • procesy pre registre fázového inkrementu a fázového akumulátora Kódovanie pre FPGA: • definovanie RESET podmienky v každom procese • synchrónne procesy (rozhodovanie vždy vo vetve IF clk‘event AND clk = ‚1‘ THEN...) Coding Style: • extenzívne používanie poznámok • Interné signály: s_*Vstupné signály: *_iVýstupné signály: *_o Coding style = lepšia čitateľnosť, lepšia prenositeľnosť , možnosť tímového vývoja, VHDL kód ako súčasť dokumentácie
5. FPGA projekt – metodológia DDS - verifikácia Testbench = Stimuli generator + DUT + Observer + Control: Modelsim > run -all ---------------------------------------------------------- ----- File : commands.txt ----- Date : 2002/03/15 ----- Description : Bus commands for DDS testbench ---------------------------------------------------------- note_ *************** START OF SIMULATION **************** note_ Setting DDS frequency 628 kHz wrbus 1 314 wait_ 1500 us note_ Setting DDS frequency 100 kHz wrbus 1 50 wait_ 1500 us note_ Setting DDS frequency 2 kHz wrbus 1 1 wait_ 1500 us _end_ XilinxCoreLib WORK - tb_dds_rtl- dds_rtl_cfg- dds_rtl- sin_ram- cos_ram - block_mem_package- mem_init_package- mem_constants ....
VHDL kód We_o S_we_toggle D Q D Q S_we_sync1 S_we_sync2 5. FPGA projekt – metodológia Logická syntéza - Leonardo Spectrum Logická syntéza process1: PROCESS ( clk_i, rst_i, s_we_toggle, s_we_sync1 ) BEGIN IF rst_i = '1' THEN s_we_sync1 <= '0'; s_we_sync2 <= '0'; ELSE IF clk_i'event AND clk_i = '1' THEN s_we_sync1 <= s_we_toggle; s_we_sync2 <= s_we_sync1; END IF; END IF; END PROCESS process1; we_o <= s_we_sync1 AND s_we_sync2; Výsledok syntézy • FPGA technology setup (family, device, speed grade) • Input files setup • Definition of constraints (area/timing) • Optimization • Reports (delay, area)Delay - uses average delay model to estimate delay of interconnections • EDIF-netlist writer
Fitting = vsadenie navrhnutej logickej schémy do štruktúry FPGA Plne automatický process Obmedzenia: - navrhnuté priradenie pinov- obmedzený počet hodinových vstupov- pevná (avšak konfigurovateľná) prepojovacia sieť Výstupom je programovací súborpre FPGA 5. FPGA projekt – metodológia Altera MaxPlus II tool P&R, Fitting
5. FPGA projekt – metodológia P&R, Fitting Cores TOP.EDF COS_RAM.EDF SIN_RAM.EDF Implementation constraints Fitter (mapper) TOP.UCF - clock speed- pad to pad delays- pin assignments- grouping (modules, signals)- module locking • Skúsenosti:- nastavenie parametra “Register Fanout” značne ovplyvňuje časové parametre (pozor, aj plochu!)- rozloženie I/O pinov značne ovplyvňuje časové parametre- manuálnym zásahom do P&R procesu (zadaním rôznych obmedzení) dosiahneme iba mierne zlepšenie časových parametrov (rádovo pár percent)- namiesto zásahu do P&R je efektívnejšií redesign architektúry obvodu, redesgn HDL kódu • Zásady:- kódovať časovo kritické časti veľmi starostlivo - venovať veľkú pozornosť rozloženiu pinov P&R Exaktný časový model TOP.HEX TOP.VHO
5. FPGA projekt – metodológia HW Bring-up a merania RF generator Analog RF signal Serial link (UART) Oscilloscope Hyperterminal, running test SW (menu driven): Menu: M - Menu I - Init FPGA E - rEset FPGA W <addr> <val> - Write register R <addr> - Read Register > Your choice: I Initialization O.K.> Your choice: R 0 Value read from address 0 is: 001F > Your choice: W 1 00FF Value written to address 1: 00FF > Your choice: