fpga detailes

Upload: pim23

Post on 10-Mar-2016

40 views

Category:

Documents


0 download

DESCRIPTION

Learn about FPGA

TRANSCRIPT

  • 7

    extensie pentru conectarea unor circuite externe (convertoare A/D, convertoare D/A, comenzi pentru motoare, relee etc.).

    Implementarea unui filtru numeric intr-un

    circuit FPGA

    n acest capitol vom face o scurt prezentare a platformei folosite pentru implementarea unui filtru numeric. Am ales un filtru trece jos simplu, pentru a ilustra etapele procesului de proiectare i implementare a filtrului n FPGA. Circuitul este proiectat n mediul Matlab, cu ajutorul componentei FDA tools, dedicat proiectrii filtrelor digitale. Tot n Matlab se face i conversia n limbaj VHDL, dup care sursa VHDL este exportat n mediul ISE, care finalizeaz proiectul, pn la implementarea fizic a circuitului n FPGA.

    7.1 Prezentarea platformei Digilent Spartan-3

    Starter Board Modulul Digilent Spartan-3 Starter Board este fabricat de firma Digilent i conine un circuit integrat FPGA din seria Spartan 3, fabricat de firma Xilinx. Circuitul FPGA este de tipul XC3S200-FT256 i conine 200.000 de pori logice echivalente ntr-o capsul cu 256 de pini. Platforma mai conine i circuitul XCF02S, care este o memorie Flash ROM de 2Mbii, destinat memorrii configuraiei circuitului FPGA. Conectarea la PC se face prin intermediul portului paralel, cu ajutorul unui cablu JTAG3, iar alimentarea se face de la un alimentator extern care furnizeaz o tensiune continu de 5 V. Semnalul de ceas este obinut de la un oscilator extern cu cristal de cuar de 50MHz. Pinii circuitului FPGA se pot conecta direct la dispozitivele de intrare/ieire amplasate pe plac (4 butoane cu revenire, 8 comutatoare cu meninere, 8 LED-uri i 4 cifre de afiaj cu 7 segmente, port serial RS232, port PS2 i port VGA). Platforma mai conine i o memorie SRAM rapid de 1Mbyte i conectoare de

  • 84 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA

    Fig. 7.1 Vedere de sus a platformei Digilent Spartan-3 Starter Board (imagine reprodus din "Digilent Spartan-3 System Board" de la firma Digilent Inc.)

    e ea prezentat n manualul firmei Digilent, iar schema din figura 7.2 ilustreaz elementele

    atoare de 3,3V, respectiv 2,5V i 1,2V. Fiecare

    Imaginea din figura 7.1 reprezint o fotografie a plcii, aa cum est

    de interconectare cu exteriorul, elementele de interconectare cu intrrile/ieirile de pe plac i aplicarea semnalului de ceas. Tensiunile necesare alimentrii circuitelor integrate de pe plac se obin din tensiunea de 5V cu ajutorul unor regulconector de extensie are pini pentru alimentare, pini pentru conectarea semnalelor de intrare/ieire la FPGA sau pini pentru conectarea la circuitele de memorie.

    Fig. 7.2 Elementele platformei Digilent Spartan-3 Starter Board (imagi din "Digilent Spartan-3 System Board" de la firma Digilent Inc.)

    ne reprodus

  • 7.2 Formularea problemei 85 7.2 Formularea problemei

    este un sistem care asigur transformarea, cu anFiltrul numeric umite caracteristici

    impuse, a unui semnal discret de intrare x(n ntr-un semnal discret la ieire y(n). Dac scriem

    (7.1)

    i presupunem c

    ), ecuaia cu diferene finite standard:

    NM i nxbny

    i

    ii

    inyai10

    0ia pe tru , atunci ecuaia ce

    2)

    Comparnd cu relaia de convolu

    , (7.3)

    unde este rspunsul la impuls al filtrului, rezult7.2) ea pentru i zero n rest. Datorit faptului c secvena

    spuns finit la impuls s

    n descrie sistemul va fi : Ni ,...,2,1

    M

    iiny

    0

    inxb . (7.ie:

    y

    M

    iinxihn

    0

    ihva av

    c sistemul descris de ecuaia ( bih ih are o lungime finit, ieirea devine nul dup trecerea impulsului, i sistemul se numete filtru cu r au RFI (n englez FIR F

    Mi ,...,2,1,0

    inite Impulse Response). Sistemele caracterizate prin secvene de rspuns la impuls unitar h care nu au un numr limitat de termeni, vor fi definite ca filtre cu rspuns infinit la impuls sau RII (n englez IIR Infinite Impulse Response). Filtrele de tip RFI prezint unele avantaje, cum ar fi stabilitatea structurii i posibilitatea obinerii unei caracteristici de faz liniar, deci timp de ntrziere de grup

    elor sugerate de ecuaia (7.3). Cele M + 1 antio

    constant. Filtrele de tip RII pot ns s realizeze o caracteristic amplitudine-frecven asemntoare, la un ordin al filtrului mult inferior celui al filtrului de tip RFI, i din acest motiv sunt folosite de multe ori n practic. Implementarea unui filtru numeric de tip RFI presupune existena unor resurse hardware necesare pentru efectuarea calcule ane ale semnalului de intrare x(n-i) sunt cuantizate pe un numr de bii, se face produsul dintre fiecare eantion i coeficientul corespunztor al filtrului h(i), iar la final se face suma rezultatelor pariale i rezult valoarea eantionului curent al semnalului filtrat, notat cu y(n). Fiecare operaie parial presupune efectuarea unei nmuliri i a unei adunri, pentru care avem nevoie de un multiplicator i de un sumator, adic de o unitate MAC (multiply accumulate). De obicei toate aceste calcule se fac n timp real i calitatea filtrului depinde de arhitectur, de precizia reprezentrii i de viteza de efectuare a calculelor. Figura 7.3 reprezint dou arhitecturi principial diferite. Implementarea serial, tipic procesoarelor DSP specializate, presupune folosirea repetat a unei singure uniti MAC, care corespunde unitii centrale a procesorului. Pentru un filtru cu 256 de coeficieni, pentru fiecare eantion y(n) se repet operaiile de nmulire i adunare de 256 .

  • 86 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA x(n)

    implementare seriala pentru DSP

    h(0)...h(255)

    Registru

    y(n)

    256 de bucle

    implementare paralela pentru FPGA

    x(n) Registru . . . . RegistruRegistru

    h(0) h(1) h(2) h(254) h(255)

    y(n)

    . . . .

    256 operatii intr-un singur ciclu de ceas

    Fig. 7.3 Dou arhitecturi posibile pentru implementarea unui filtru de tip RFI de aii hardware optimizate pentru aplicaia dorit. n consecin, putem realiza o implementare

    terfaa grafic FDATool (Filter Design and Analysis Tool) din

    ar

    rea direct a codului HDL. Proiectantul are

    n cele ce urmeaz vom folosi prima abordare descris aici, pentru c mediul Matlab permite proiectarea comod a filtrelor, iar codul HDL este generat automat.

    ori. Structura unui FPGA permite proiectantului realizarea propriei configur

    paralel a filtrului, aa cum se poate vedea n figur. Un circuit FPGA poate conine sute de astfel de blocuri MAC configurabile, care pot prelucra eantioane de semnale cu frecvene de peste 400 MHz, performane care depesc cu mult cele mai rapide circuite specializate de tip DSP. Exist mai multe posibiliti de implementare a filtrului n FPGA. Metoda cea mai simpl este de a utiliza inSignal Processing Toolbox din mediul Matlab. Aceast interfa grafic este integrat cu Filter Design Toolbox i cu Filter Design HDL Coder. Dup introducerea datelor necesare proiectrii filtrului se vizualizeaz caracteristicile rezultate i, dac suntem mulumii, atunci putem obine direct codul VHDL sau Verilog cu ajutorul modulului HDL Coder. Filter Design HDL Coder suport principalele tipuri constructive de filtre numerice, att pentru operanzi n virgul fix, ct i pentru operanzi n virgul mobil. O alt posibilitate de implementare const n utilizarea unui nucleu de filtru IP (Intelectual Property). Att Xilinx ct i Altera ofer astfel de produse performante, duneori ele sunt limitate la anumite circuite FPGA sau necesit resurse hardware suplimentare (de exemplu, memorie SRAM suplimentar). Firma Mathworks ofer filtre IP independente de dispozitiv, dar ele nu optimizeaz ntotdeauna resursele oferite de un anumit circuit integrat folosit n proiect. n sfrit, ultima abordare, care este i cea mai dificil, presupune optimizarea structurii de ctre proiectant, prin scriecontrolul total asupra structurii realizate, dar el este complet decuplat de mediul Matlab, iar efortul de proiectare este mult mai mare. Un filtru FIR cu 32 de poli poate necesita 300 500 linii de cod VHDL sau Verilog HDL i va avea nevoie de blocuri specifice pentru un rezultat optim (blocuri de memorie RAM i blocuri DSP) ([Wang, 2005]).

  • 7.3 Proiectarea filtrului n mediul Matlab 87 7.3 Proiectarea filtrului n mediul Matlab

    n versiunile recente ale mediului de programare Matlab (ncepnd cu Matlab 7) pachetul cessing Toolbox, filtrelor digitale. Acest program se numete FDA gn and Analysis Tool) i

    tat prin metoda ferestrelor, folosind o fereastr Hamming. Fixm la

    de programe destinat prelucrrii semnalelor, care se numete Signal Pro conine i o interfa grafic care permite sinteza i analiza comod a

    Tool (Filter Desipermite alegerea tipului de filtru dorit i a parametrilor acestuia, alegerea metodei de proiectare sau analiza filtrului rezultat prin rspunsul lui n amplitudine sau faz, rspunsul la diferite tipuri standard de semnale aplicate la intrare, diagrame poli-zerouri i aa mai departe. Dup lansarea n execuie a programului Matlab, se tasteaz fdatool n linia de comand din fereastra de comenzi. Se deschide o fereastr care conine interfaa FDATool. Ne propunem s proiectm un filtru trece jos (opiunea lowpass) i alegem un filtru FIR proiec1000 Hz frecvena de tiere, i lsm frecvena de eantionare la 48000 Hz. Rezultatul se poate vedea n figura 7.4, n care apare rspunsul filtrului n amplitudine. Tot aici se pot vizualiza pe rnd i celelalte caracteristici importante ale filtrului, cum ar fi caracteristica de faz, ntrzierea de grup care este constant, ntrzierea de faz, rspunsul filtrului la impuls sau la semnal treapt. Am prezentat separat rspunsurile filtrului la semnale de tip impuls i treapt n figura 7.5. Observm c n afara butoanelor amplasate imediat sub meniul principal, exist nc 7 butoane amplasate n partea stng-jos. Al treilea buton de sus deschide o fereastr n care stabilim numrul de bii prin care reprezentm intrrile n filtru, ieirile obinute, .

    Fig. 7.4 Fereastra FDATool pentru un filtru FIR trece jos de ordinul 10

  • 88 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA

    Fig. 7.5 Rspunsurile filtrului la semnale de tip impuls i treapt

    precum i coeficienii filtrului. Din motive de simplitate, n vederea simulrii funcionrii filtrului i implementrii lui n FPGA, am ales 8 bii pentru reprezentarea cuvintelor de intrare i de ieire din filtru i 16 bii pentru reprezentarea coeficienilor i a produselor interne, iar calculele se fac n virgul fix. Se selecteaz opiunea Targets din meniul principal i apoi opiunea Generate HDL.... Se deschide fereastra din figura 7.6, n care selectm limbajul HDL dorit, arhitectura filtrului, sau diferite semnale de test.

    Fig. 7.6 Fereastra Generate HDL

  • 7.3 Proiectarea filtrului n mediul Matlab 89 Apsarea butonului Generate ofer codul surs n limbajul ales (aici am ales VHDL). Fiierul se numete filter.vhd i se gsete n directorul hdlsrc, denumire implicit stabilit n fereastra Generate HDL. Tot acolo gsim i fiierul filter_tb.vhd, care conine semnalele de test i care nu ne intereseaz deocamdat. Din pcate, fiierul filter.vhd conine 216 linii de cod, mpreun cu comentariile, aa c nu vom mai scrie toate instruciunile care se repet: LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.numeric_std.ALL;

    ENTITY filter IS PORT( clk : IN std_logic; clk_enable : IN std_logic; reset : IN std_logic; filter_in : IN std_logic_vector(7 DOWNTO 0); filter_out : OUT std_logic_vector(7 DOWNTO 0) );

    END filter;

    ARCHITECTURE rtl OF filter IS TYPE delay_pipeline_type IS ARRAY (NATURAL range ) OF signed(7 DOWNTO 0);

    CONSTANT coeff1: signed(15 DOWNTO 0) := to_signed(1802, 16); CONSTANT coeff2: signed(15 DOWNTO 0) := to_signed(3881, 16); . . . . . . . . . . . . . . . . . . . . . . . . . .

    CONSTANT coeff11: signed(15 DOWNTO 0):= to_signed(1802, 16);

    SIGNAL delay_pipeline : delay_pipeline_type(0 TO 10); SIGNAL product11 : signed(15 DOWNTO 0); SIGNAL mul_temp : signed(23 DOWNTO 0); SIGNAL product10 : signed(15 DOWNTO 0); SIGNAL mul_temp_1 : signed(23 DOWNTO 0);

    _register : signed(7 DOWNTO 0);

    PROCESS (clk, reset)

    HERS => '0'));

    ;

    S Delay_Pipeline_process;

    . . . . . . . . . . . . . . . . . . . . . . . . . .

    SIGNAL product1 : signed(15 DOWNTO 0); SIGNAL mul_temp_10 : signed(23 DOWNTO 0); SIGNAL sum1 : signed(15 DOWNTO 0); . . . . . . . . . . . . . . . . . . . . . . . . . .

    SIGNAL sum10 : signed(15 DOWNTO 0); SIGNAL add_temp_9 : signed(16 DOWNTO 0); SIGNAL output_typeconvert : signed(7 DOWNTO 0); SIGNAL output

    BEGIN Delay_Pipeline_process : BEGIN IF reset = '1' THEN delay_pipeline(0 TO 10) (OT ELSIF clk'event AND clk = '1' THEN IF clk_enable = '1' THEN delay_pipeline(0)

  • 90 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA mul_temp
  • 7.4 Verificarea funcionrii prin simulare 91 nmulit cu coeficientul corespunztor, conform implementrii paralele a filtrului,

    p, sunt i doi operanzi care se nmulesc sunt

    achetul

    preziilea

    e

    trului i va fi folosit pentru implementarea filtrului ntr-un circuit FPGA. Vom folosi ca circuitul Spartan-3

    pitolul 7.1. itul FPGA utilizat, adugm

    urma sintezei circuitului indic

    evice : 3s200ft256-5

    ut of 1920 28% Number of Slice Flip Flops: 106 out of 3840 2%

    0 27% r of bonded IOBs: 19 out of 173 10%

    Number of GCLKs: 1 out of 8 12%

    reprezentat n figura 7.3. Produsele pariale rezultate, notate aici cu mul_temnumere reprezentate pe 24 de bii (pentru c cereprezentai pe 8 bii i respectiv 16 bii). Funcia resize este definit n p

    zilor cu semn sau fr semn, care numeric_bit i realizeaz extensiile operanre nt primul argument al funciei, pe numrul dorit de bii, care este dat de al

    o argument al funciei ([Ashenden, 2002]). d

    7.4 Verificarea funcionrii prin simular

    Codul surs VHDL din fiierul filter.vhd reprezint descrierea hardware a fili pn acum mediul de proiectare ISE 8.1 de la Xilinx i vom alegeXC3S200-FT256, descris n subca Dup ce deschidem un proiect nou i alegem circula proiect fiierul filter.vhd. Raportul rezultat nurmtoarea alocare a resurselor: Selected D

    Number of Slices: 551 o

    Number of 4 input LUTs: 1046 out of 384 Numbe

    Structura rezultat conine 49 de niveluri logice, care genereaz o ntrziere de 37,856 ns, ceea ce corespunde unei frecvene maxime de 26,416 MHz. Cele 19 semnale de intrare/ieire din filtru au fost conectate la pinii circuitului integrat ca n figura 7.7, figur care mai ilustreaz i blocurile logice folosite cu interconectrile lor. Formele de und reprezentate n figura 7.8 ofer rspunsul filtrului pentru semnalul treapt aplicat la intrare. n 11 perioade de ceas de la modificarea intrrii se obine valoarea de palier la ieire, iar variaia ieirii, asemntoare cu cea din figura 7.5, este reprezentat i n figura 7.10. Un rspuns similar cu cel din figura 7.5 se observ i pentru semnalul de tip impuls (vezi i figura 7.9).

  • 92 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA

    Fig. 7.7 Pinii circuitului FPGA i interconectarea resurselor interne folosite

    Fig. 7.8 Simularea funcionrii pentru un semnal treapt

    n subcapitolul urmtor vom implementa filtrul propus n circuitul integrat FPGA de pe platforma Digilent Spartan-3 Starter Board. Aceast plac, care a fost descris la nceputul capitolului, nu conine i un convertor analog/digital pe 8 bii care s permit introducerea unui semnal analogic din exterior. Exist ns un port serial RS232 care permite conectarea la un calculator. Datele de intrare n filtru vor fi transmise de la calculator, iar rspunsul filtrului va fi citit tot cu ajutorul calculatorului. Este clar c avem nevoie n plus de un bloc care s asigure comunicaia serial cu calculatorul. El nu exist pe plac i trebuie implementat mpreun cu filtrul.

  • 7.5 Implementarea fizic n FPGA 93

    Fig ls . 7.9 Simularea funcionrii pentru un semnal de tip impu

    0 2 4 6 8 10 12 14 16 18 200

    50

    100

    150

    Esantioane

    Val

    oare

    Semnalul impuls de intrare

    0 2 4 6 8 10 12 14 16 18 200

    50

    100

    150

    Esantioane

    Val

    oare

    Semnalul treapta de intrare

    0 2 4 6 8 10 12 14 16 18 200

    5

    10

    15

    20

    25

    30

    Esantioane

    Val

    oare

    Raspunsul filtrului la iesire

    0 2 4 6 8 10 12 14 16 18

    200

    250

    300

    200

    50

    100

    150

    Esantioane

    Val

    oar

    Fig. 7.10 Rspunsul filtrului seamn cu cel din figura 7.5

    7.5 Implementarea fizic n FPGA

    Scrierea i citirea datelor prin portul RS232 se face cu ajutorul unui circuit UART (Universal Asynchronous Receiver Transmitter), similar celui descris n lucrarea [Wang, 2005]. Circuitul recepioneaz i transmite datele n format serial, folosind un bit de start, 8 bii de date i un bit de stop. Schema de interconectare cu filtrul realizat anterior este prezentat n figura 7.11. Calculatorul transmite datele n format serial. La detectarea bitului de start, blocul UART recepioneaz cei 8 bii de date la frecvena corespunztoare ratei de baud, ncepnd cu bitul cel mai puin .

    e

    Raspunsul filtrului la iesire

  • 94 7. IMPLEMENTAREA UNUI FILTRU NUMERIC NTR-UN CIRCUIT FPGA

    Filtrul

    numeric

    Platforma Digilent Spartan 3 Starter Board

    UARTRS 232Interfata

    PC

    8 biti

    8 biti

    Oscilator50 MHz

    DRdy

    WrD

    Divizor

    rata de baud

    Fig. 7.11 Schema bloc a sistemului implementat n FPGA

    semnificativ (LSB). Cei 8 bii de date sunt furnizai la ieirea blocului UART n format paralel i se aplic la intrarea n filtru. Semnalul DRdy (Data Ready) se aplic

    entru iniierea filtrrii. Transmitorul din blocul UART recepioneaz cei 8 bii de date de la i emoreaz datele n UART, iar acestea sunt transmise serial n ritmul ratei de baud, mpreun cu biii de start i de stop corespunztori fiecrui octet. Ieirea blocului UART furnizeazUltimul proces necesar programrii circuitului integrat este Configure Device (iMPACT). Un dublu-click pe acest proces deschide fereastra de dialog Welcome to iMPACT, reprezentat n figura 5.13. Se face selecia recomandat n figur i se apas butonul Finish. Programul verific existena cablului de legtur dintre calculator i placa care conine circuitul integrat, conexiunea fcndu-se prin intermediul portului paralel al calculatorului. Dispozitivele conectate ntr-un lan JTAG de pe placa care conine circuitul programabil sunt vizualizate n fereastra iMPACT, reprezentat n figura 6.17. Observm detectarea circuitului xcr3064xl i a fiierului general.jed care conine toat configuraia roiectului nostru. n fereastra iMPACT Processes vedem operaiile disponibile

    care se pot rea lui etc. Confirmm programarea circuitului, iar reuita acestei operaii este confirmat de mesajul Program Succeeded operaia de tergere/progra

    filtrului p

    eirea filtrului n format paralel. Semnalul WrD (Write Data) m

    pefectua: programarea circuitului, verificarea lui, terge

    . A cum am mai spus, mare a circuitului se poate repeta de circa 1000 de ori.

    a