Izmantojiet Xilinx sistēmas ģeneratoru, lai ieviestu vienkāršu DDS

HOW TO GET CLEAR SKIN FAST! | KĀ IZMANTOJIET SKAIDRO ĀDU! | Beauty Tips (Jūnijs 2019).

$config[ads_text] not found
Anonim

Izmantojiet Xilinx sistēmas ģeneratoru, lai ieviestu vienkāršu DDS


Šajā rakstā mēs apspriedīsim vienkāršā tiešā digitālā sintezatora (DDS) ieviešanu, izmantojot Xilinx sistēmas ģeneratoru.

Sistēmas ģenerators ir spēcīgs instruments, kas integrē Xilinx FPGA projektēšanas procesu ar MATLAB Simulink, kas izmanto augsta līmeņa aprakstu, lai viegli realizētu sarežģītu sistēmu. Mēs vispirms izstrādājam sistēmu un pārbaudām tās funkcionalitāti Simulink vidē. Simulink grafiskais augstā līmeņa apraksts ievērojami atvieglo dizaina modelēšanu, imitēšanu un analīzi. Pēc tam mēs varam ģenerēt VHDL dizaina aprakstu un pievienot to mūsu projektam Xilinx ISE programmatūrā.

Šajā rakstā mēs apspriedīsim vienkāršā tiešā digitālā sintezatora (DDS) ieviešanu, izmantojot Xilinx sistēmas ģeneratoru.

Sistēmas ģeneratora palaišana

Pirms sistēmas ģeneratora palaišanas jānorāda divi punkti:

  1. Pārliecinieties, vai jūsu System Generator versija ir saderīga ar MATLAB versiju, kuru izmantosit.
  2. Saistīt MATLAB programmatūru ar jūsu sistēmas ģeneratoru.

Šajā rakstā es izmantošu ISE 14.7 ar MATLAB 2013a. Ieteicamais veids, kā sākt sistēmas ģeneratoru, ir Windows izvēlnes "Visas programmas" izvēlēšanās "Xilinx Design Tools \ ISE Design Suite 14.7 \ System Generator \ Sysgen Generator". Tas atvērs "Simulink bibliotēkas pārlūku", kas parādīts 1. attēlā.

1. attēls

Kā parādīts attēlā, bibliotēku sarakstā tiek pievienotas šādas trīs Xilinx kategorijas:

  1. Xilinx Blockset
  2. Xilinx Atsauce Blockset
  3. Xilinx XtremeDSP komplekts

Šajā rakstā mēs izmantosim blokus, kas sniegti "Xilinx Blockset", lai ieviestu vienkāršu DDS, kā parādīts 2. attēlā.

2. attēls

DDS sistēmas ģeneratora modeļa izveide

Lai izveidotu jaunu Simulink modeli, izvēlieties File \ New \ Model. Tas atvērs šādu tukšu logu, kas ļauj mums aprakstīt 2. diagrammas blokshēmu.

3. attēls

Pārējā rakstā mēs pievienosim nepieciešamos elementus un pārskatīsim svarīgos iestatījumus katrā bloka dialoglodziņā. Plašāku informāciju par konfigurējamiem dažādu bloku parametriem, lūdzu, skatiet šajā Xilinx dokumentā.

Addsub bloks

Pirmais bloks, kas mums nepieciešams, ir papildinātājs. Mēs varam izmantot bloku "AddSub", kuru var atrast kategorijā "Xilinx Blockset \ math". Zemāk redzamajā attēlā redzams simbols un šī bloķa konfigurējamo parametru cilne "Basic".

4. attēls

Blokam ir divas ieejas (a un b) un viena izeja, kas dod + b. Mēs pametīsim "Basic" cilnes parametrus tā, kā tie ir. Cilnes "Izvade" iestatījumi ir parādīti 5. attēlā. Šī cilne nosaka izejas parametrus. Lai iegūtu 16 bitu akumulatoru, mēs izvēlamies opciju "Lietotāja definēts", kas ļauj mums iestatīt "Bitu skaits" līdz 16 un "Binārā punkta" uz nulli. Tas nozīmē, ka izeja ir 16 bitu vesels skaitlis. 2. attēlā DDS mums nav nepieciešams definēt daļēju izvadi, bet, ja mēs būtu iestatījis "Bitu skaits" līdz 16 un "Binary point" līdz 14, 14 biti no kopējā 16 bitu izlaide tiks uzskatīta par binārā punkta labo pusi. Lai lasītu vairāk par fiksēto punktu reprezentāciju kopumā, skatiet šo rakstu.

5. attēls

"Aritmētikas veids" un "Pārplūde" ir divi citi parametri, kas mums ir svarīgi. "Aritmētikas veids" neparaksta, jo akumulatora izlaide tiek interpretēta kā neparakstīts numurs. Pārlūkstei jābūt iestatītai uz "Wrap", jo akumulatoram ir jāpārvērš, kad tas sasniedz maksimālo līmeni.

6. attēlā redzama bloka "Ieviešana" cilne. Šajā lapā jūs varat izvēlēties papildinātāju, izmantojot šķiedru audumu vai DSP48. Lai apspriestu atšķirību starp abām izvēlēm, skatiet šo rakstu. Mēs atstāsim to, kā tas ir pēc noklusējuma, ti, ieviesīsim, izmantojot audumu.

6. attēls

Reģistri

Tālāk mēs papildināsim reģistru kopu pie papildinātāja izejas. Reģistri var tikt ieviesti, izmantojot "Delay" bloku, kas atrodams kategorijā "Xilinx Blockset \ Basic Elements". Mēs saglabāsim visus šī bloka iestatījumus tā, kā tie ir.

Bloku "AddSub" pievienošana blokam "Aizkavēšanās", mēs iegūstam shēmu, kas parādīta 7. attēlā.

7. attēls

Quantizer

Tagad mums ir jāpievieno 2. attēlā esošais "skaitītājs", kas akumulatora p rādītājus p apmainās ar uzmeklēšanas tabulu (LUT) un atlaiž citus bitus. Šo funkcionalitāti var panākt ar bloku "Slice", kas atrodas kategorijā "Xilinx Blockset \ Basic Elements". Simbolu un konfigurējamo parametru dialoglodziņš "Slice" ir parādīts 8. attēlā.

8. attēls

Parametrs "šķēle platums (bitu skaits)" norāda bitu skaitu, kas jāizņem no ievades. Pieņemot, ka astoņām akumulatora izejas MSB jāpārraida LUT, mēs zinām, ka izvades platums ir astoņi, tāpēc mēs iestatījām "Slice width" uz astoņiem, kā parādīts attēlā.

Mums ir arī jānorāda, kādas ieejas bitu pozīcijas tiek ņemtas, lai izveidotu bloks "Slice" astoņu bitu izvadi. To var izdarīt, izmantojot parametru "Norādīt diapazonu kā". Šim parametram ir trīs iespējas. Mēs izvēlamies "augšējā bitu atrašanās vieta + platums". Mums vajadzētu norādīt augšējā bitu atrašanās vietu no ievades, kas tiks nodota MSB izejas "Slice" MSB. Tā kā mēs vēlamies astoņus ievades MSB, augšējā bits būs ievades MSB. Tāpēc mēs iestatījām "Augšējā bitu nobīde" uz nulli un "Relatīvi pret" uz "ievades MSB". Tas nozīmē, ka augšējam vēlamajam bitiem ir nulles nobīde attiecībā pret ievades MSB. Slāņa platums jau ir norādīts parametrā "Platuma platums". Tādējādi ir iezīmēts vēlamais ieejas diapazons. Plašāku informāciju par šo bloku skatiet šī Xilinx dokumenta 327. lappusē.

ROM

Mēs pievienosim "ROM" no kategorijas "Xilinx Blockset \ memory". "ROM" dialoglodziņa simbols un konfigurējamie parametri ir parādīti 9. attēlā. Tā kā ROM adreses ievade ir p = 8 bitu plats, mums vajadzētu iestatīt ROM dziļumu $ $ 2 ^ 8 = 256 $ $. Kā parādīts attēlā, mēs varam viegli ierakstīt matemātisko izteiksmi, lai norādītu ROM saturu. Matemātiskā izteiksme 9. attēlā ģenerē 256 paraugus no viena sinusoidālā perioda. Šie paraugi tiks veikti, ņemot vērā datu precizitāti, kas tiks norādīta cilnes "Izlaide". Varat arī izvēlēties atmiņas veidu, ko var ieviest kā "Distributed memory" vai "Block RAM". Mēs izmantosim bloku RAM, lai ieviestu nepieciešamo atmiņu.

Saglabāto vērtību datu formātu var izvēlēties cilnē "Izvade". Mēs izmantosim noklusējuma parametrus, kā parādīts 10. attēlā. Ņemiet vērā, ka "Aritmētikas veids" ir "parakstīts (2 komponents)", jo mūsu paraugos ir negatīvas vērtības. No kopējā 16 bitu izejas tikai divi biti tiek piešķirti veselam skaitlim, jo ​​maksimālais un minimālais paraugu skaits ir attiecīgi +1 un -1. Pārējos bitus izmanto, lai parādītu paraugu frakcionālo vērtību.

9. attēls

10. attēls

Datu veida reklāmguvums starp Xilinx porciju un Simulink

Apskatīto bloku savienošana saskaņā ar 2. attēlu, mēs iegūstam shematisks, kas parādīts 11. attēlā.

11. attēls

Modelis ir gandrīz pabeigts, bet mums ir vajadzīgi citi bloki, lai modelētu sistēmu. Atšķirībā no Xilinx bloku komplekta, kas izmanto fiksēto punktu skaitu, lai attēlotu dažādas vērtības; Simulink videi ir savs datu tips. Piemēram, Simulink var izmantot "dubultā" datu tipu, kas ir 64 bitu divu papildinājumu pārejas punkts. Tāpēc mums ir vajadzīgi daži bloki, lai veiktu datu pārveidošanu, pārsūtot datus no Simulink uz Xilinx daļu attēlā 11 vai pārsūtot 11 attēlā esošo produkciju uz Simulink vidi. To var panākt, izmantojot blokus "Gateway In" un "Gateway Out", kā parādīts 12. attēlā.

12. attēls

Minūtē aplūkosim "Gateway In" un "Gateway Out" bloku parametrus, taču pirms tam jāpievērš uzmanība tam, ka divos citos blokos, "Step" pie ieejas un "Scope" pie izejas, ir pievienots modelim. Kā redzat, pēc bloku "Gateway In" un "Gateway Out" pievienošanas mēs varam izmantot mūsu modeļa ievadi, izmantojot simulink vispārīgos "avota" blokus. Vai arī mēs varam pārraudzīt sistēmas rezultātus, izmantojot Simulink vispārējos "izlietnes" blokus. 12. Attēlā esam izmantojuši "posmu" DDS fāzes pieauguma ievadei. Arī ROM produkcija tiek uzraudzīta, izmantojot simulink "Scope" bloku.

Papildus datu pārveidošanas veidam bloki "Gateway In" un "Gateway Out" definē ABL dizaina augstākā līmeņa portus, kas vēlāk tiks iegūti no Simulink modeļa. Piemēram, liekot bloku "Gateway In" pirms papildinājuma "a" ievades, mēs ļaujam sistēmas ģeneratoram uzzināt, ka "a" ievade patiesībā ir augstākā līmeņa dizaina ieguldījums. Tāpat arī "Gateway Out" nosaka ABL dizaina augstākā līmeņa rezultātus.

Dialoglodziņš "Gateway In" konfigurējamie parametru dialoglodziņi ir parādīts 13. attēlā.

13. attēls

Mums vajadzētu iestatīt "Aritmētiskā tipa" uz "Unsigned" un izvēlēties "Bitu skaits", kas ir vienāds ar 16 bez fraktīvajiem bitiem, ti, "Binary point" = 0. Tādējādi visas Simulink vides ievadnes tiks attēlotas kā 16 bitu fiksētā punkta neparakstītais numurs Xilinx dizaina daļā. Ņemiet vērā, ka šeit norādītais formāts atbilst pievienošanas / apakšbloka datu formātam. Mēs atstāsim citus parametrus blokam, jo ​​tie ir pēc noklusējuma.

Bloks "Gateway Out" automātiski nosaka tā braukšanas posma fiksēto punktu formātu. Tāpēc šeit mēs varam izmantot noklusējuma iestatījumus blokam.

Xilinx sistēmas ģeneratoru bloks

Jebkurā Simulink modelī, kas izmanto Xilinx blokus, jāiekļauj bloks "System Generator". Šis bloks ļauj mums kontrolēt sistēmas un simulācijas parametrus. Tas arī apstrādā HDL kodu ģenerēšanu. Simbolu un dialoglodziņu "Sistēmas ģeneratora" bloks attēloti 14. attēlā.

14. attēls

Sistēmas ģenerators kompilē dizainu zemā līmenī. Dialoglodziņā "Kompilācija" mēs varam izvēlēties zema līmeņa pārstāvības veidu. Šajā rakstā mēs izvēlēsimies "HDL Netlist", kā parādīts attēlā. Tas ģenerē ABL kolekciju un dažus palīgfailus, kurus var apstrādāt ar sintēzes rīku. Kā jūs varat redzēt attēlā, mēs esam izvēlējušies sintaksi un HDL, attiecīgi, kā "XST" un "VHDL".

Jums vajadzētu arī izvēlēties mērķa ierīci no dialoglodziņa parametra "Daļa" un dot programmatūrai mērķa mapi, lai saglabātu ģenerētos failus. Zemāk redzamajā attēlā ir redzama dialoglodziņa cilne "Pulēšana".

15. attēls

Pirmais parametrs "FPGA pulksteņa laiks (ns)" nosaka laika posmu vēlamajam dizaina pulkstenim. Šo parametru var nodot sintēzes rīkā nākamajos projekta posmos. Tas var vadīt sintēzes programmatūru, lai izvēlētos piemērotu ieviešanu, pamatojoties uz dizainparauga pulksteņa prasībām. Iepriekš minētajā attēlā "FPGA pulksteņa laiks" ir iestatīts uz 10 nanosekundēm. Tas nozīmē, ka mēs ceram, ka dizains tiks palaists ar pulksteņa laiku 10ns uz kuģa. Simulink tās simulācijās var izmantot standarta formu šim pulksteņa periodam. Šo normalizēšanu nosaka 15. Attēlā norādītais parametrs "Simulink sistēmas periods (sek.)". Nosakot šo parametru 1, ik pēc 10 ns no aparatūras ieviešanas Simulink vidē parādīsies 1 sekunde.

Simulācija

Lai modelētu dizainu, mēs iestatījām ieeju "Step", lai pārietu no 264 uz 528 pie "Step time" 500. Varat izmantot citus patvaļīgus parametrus šim blokam. Visbeidzot, mēs esam gatavi simulēt mūsu DDS modeli, kas parādīts 16. attēlā.

16. attēls

Noklikšķinot uz simulink pogas "Palaist", mēs iegūstam šādu līkni sadaļā "Darbības joma".

17. attēls

Tā kā pie "Step time" ir 500, ieeja ir no 264 līdz 528, izvades frekvence palielinās par divreiz.

Dizaina pievienošana ISE projektam

Pēc visu dizaina parametru iestatīšanas mēs varam ģenerēt VHDL modeļa aprakstu, nospiežot pogas "Izveidot" 14.attēlā. Tas radīs ".sgp" failu, kuru var pievienot ISE projektam.

Izvēloties "Pievienot avotu" no ISE projekta, mēs varam iekļaut .sgp failu mūsu augstākā līmeņa dizainā. Tagad pievienoto failu var izmantot tikai tā, kā mēs izmantojam IP kodolu. Noklikšķinot uz pievienotā faila un izvēloties "View HDL Instantiation Template", mēs varam atrast veidni, lai izmantotu komponentu.

Lai uzzinātu par IP serdeņu un VHDL komponentu izmantošanu, skatiet sadaļu Lietot Xilinx CORDIC Core, lai viegli izveidotu sine un kosinizācijas funkcijas un kā lietot VHDL komponentus, lai izveidotu nevainīgu hierarhisko dizainu.

Secinājums

Šajā rakstā mēs izmantojām "System Generator", lai ieviestu vienkāršu DDS. Simulink augsta līmeņa grafiskās iespējas ļauj viegli modelēt kompleksu digitālo sistēmu. Pēc tam, kad ir pārbaudīta dizaina funkcionalitāte Simulink vidē, mēs varam ģenerēt dizaina VHDL aprakstu un pievienot to mūsu projektam Xilinx ISE programmatūrā.

Lai apskatītu pilnu manu rakstu sarakstu, lūdzu, apmeklējiet šo lapu.