cyfrowe przetwarzanie sygnalow(kolor).pdf

46
Cyfrowe przetwarzanie sygnałów CAD Mariusz Rawski [email protected] http://rawski.zpt.tele.pw.edu.pl/

Upload: vankhue

Post on 11-Jan-2017

225 views

Category:

Documents


1 download

TRANSCRIPT

  • Cyfrowe przetwarzanie sygnaw

    CAD

    Mariusz Rawski

    [email protected]

    http://rawski.zpt.tele.pw.edu.pl/

  • Cyfrowe przetwarzanie sygnau

    A/D konwersja sygnau analogowego na cyfrowy (prbkowanie, kwantyzacja, kodowanie)

    DSP ukady cyfrowego przetwarzania :

    filtracja FIR

    filtracja IIR

    ( ) ( )=

    =M

    mmnxmbny

    0( ) ( ) ( ) + = NM filtracja IIR

    transformacja Fouriera

    funkcja korelacji wzajemnej

    Charakterystyczne jest to, e wszystkie te obliczenia posiadaj posta:

    Skadaj si z mnoe poczonych z akumulacj MAC (Multiply and Accumulate).

    D/A konwersja sygnau cyfrowego na analogowy

    Mariusz Rawski 2

    ( ) ( ) ( )=

    +=

    =N

    kknyka

    M

    mmnxmbny

    10( ) ( ) nkNjeN

    nnxkX

    )/2(1

    0

    ==

    ( ) ( ) ( )=

    +=N

    nmnynx

    NmyxR 0

    1,

    =

    +++==N

    n NyNxyxyxnynxA 1

    ...2211

  • Operacja MAC (Multiply and Accumulate)

    Podstawowa operacja w cyfrowym przetwarzaniu sygnaw

    Skada si z operacji mnoenia i dodawania

    Realizowana w procesorach DSP jako jednostka obliczeniowa

    RejestrData in

    Jednostka MACAlgorytm iteracyjny

    Przykad:

    Filtr FIR 256 rzdu = 256 operacji mn i przechowaj (MAC) na pojedyncz prbk danych

    Mariusz Rawski 3

    Data out

  • MAC MAC

    MAC MAC

    MAC MAC MAC MAC MAC MAC MAC MAC

    MAC MAC MAC MAC MAC MAC MAC MAC

    MAC MAC MAC MAC MAC MAC MAC MAC

    MAC MAC MAC MAC MAC MAC MAC MAC

    Wydajne Procesory DSP

    Wysoce zrwnoleglone przetwarzanie w FPGA

    Procesory DSP vs. FPGA

    Staa nieelastyczna architektura Mona realizowa setki przeksztace Staa nieelastyczna architektura Typowo 1- 8 jednostki MAC Staa szeroko danych

    Przetwarzanie szeregowe ogranicza przepustowo

    Wspdzielone w czasie jednostki MAC Due czstotliwoci taktowania stawiaj

    due wyzwania projektantom systemw

    Wymagane wiele cykli zegara Filtr FIR 200 stopniowy wymaga bdzie

    25+ cykli zegara na prbk w przypadku procesora z 8 jednostkami MAC

    Mona realizowa setki przeksztace MAC w jednym ukadzie FPGA

    Zrwnoleglona realizacja umoliwia du przepustowo

    Filtr FIR 200 stopniowy wymaga 1 cykl zegara na prbk

    Mariusz Rawski 4

  • Elastyczno ukadw FPGA

    FPGA Optymalizacja realizacji

    +

    Parallel Semi-Parallel Serial

    MAC

    +

    +

    +

    +

    +

    +

    +

    +

    D Q

    +

    +

    +

    +

    D Q

    Szybko Koszt

    Q = (A x B) + (C x D) + (E x F) + (G x H)

    Mariusz Rawski 5

  • Architektura FPGA vs. DSP wydajno kosztem powierzchni

    rdo: WP116, Xilinx Spartan-II FIR Filter Solution, 2000

    Mariusz Rawski 6

  • Definicja

    Filtr cyfrowy FIR

    1,...,0 1

    0

    ==

    = Nncxy

    L

    kknkn

    Filtracja proces przetwarzania sygnau w dziedzinie czasu polegajcy na Filtracja proces przetwarzania sygnau w dziedzinie czasu polegajcy na redukowaniu i usuniciu niepodanych skadowych zawartych w sygnale wejciowym. Filtr cyfrowy to algorytm lub proces obliczeniowy w wyniku ktrego jedna sekwencja liczb (tzn.sygna wejciowy) zamieniany jest w inn sekwencj (tzn. sygna wyjciowy).

    Jest szeroko stosowana w przetwarzaniu sygnaw. Obliczenie tych sum w sposb bezporedni wymaga O(L2) operacji

    arytmetycznych

    Mariusz Rawski 7

  • Filtr o skoczonej odpowiedzi impulsowej FIR

    L rzd filtru, c[n] wspczynnik, z-1 element opniajcy

    1

    0

    ==

    L

    kknkn cxy

    L-1 sumowa, L mnoe

    Mariusz Rawski 8

  • Realizacja operacji MAC

    X[L-1] X[1] X[0]

    Rejestr przesuwajcy Uk. mnocy AkumulatorSumator

    = +++==

    1

    0 11...1100

    L

    n LcLxcxcxncnxy

    Mariusz Rawski 9

    C[L-1] C[1] C[0]

    + R

  • Sumatory

    Sumowanie jest najpowszechniejsz operacj arytmetyczn

    Suy jako cz skadowa innych operacji (np.. mnoenia)

    Suy do realizacji odejmowania poprzez sumowanie argumentu ze zmienionym znakiem

    BA

    argumentu ze zmienionym znakiem

    Sumator jest logik kombinacyjn, Mona uy najprostszego sposobu i opisa sumator tablic prawdy

    Mariusz Rawski 10

    S

  • Prosta realizacja sumatora

    library ieee;use ieee.std_logic_1164.all;

    entity add_tab isport(

    a, b : in std_logic_vector(7 downto 0);cout : out std_logic;s : out std_logic_vector(7 downto 0)

    );end add_tab;

    architecture arch of add_tab issignal tab_in : std_logic_vector(15 downto 0);signal tab_out : std_logic_vector(8 downto 0);

    begintab_in

  • Prosta realizacja sumatora wyniki

    Fitter Summary

    Top-level Entity Name add_tab

    Family StratixFamily Stratix

    Device EP1S10F484C5

    Total logic elements 29 / 10,570 ( < 1 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 0 / 48 ( 0 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Prosta koncepcja, ale sposb opisu nie do przyjcia: dla sumatora 8-bitowego tablica ma 216 = 65 536 wierszy dla sumatora 16-bitowego tablica ma 232 = 4 294 967 296 wierszy

    Mariusz Rawski 12

  • Sumator 1-bitowy full adder

    Rwnania sumatora

    Rwnanie boolowskie sumy:

    sk = ak xor bk xor ck = ak bk ck

    Rwnanie boolowskie przeniesienia:

    ck+1 = (ak and bk) or (ak and ck) or (bk and ck) = (ak yk) + (ak ck) + (bk ck) c a b c sk k k k k k

    Mariusz Rawski 13

    ck ak bk ck+1 sk0 0 0 0 0

    0 0 1 0 1

    0 1 0 0 1

    0 1 1 1 0

    1 0 0 0 1

    1 0 1 1 0

    1 1 0 1 0

    1 1 1 1 1

    library ieee;use ieee.std_logic_1164.all;

    entity full_adder_1bit isport(

    a, b, cin : in std_logic;s, cout : out std_logic

    );end;

    architecture arch of full_adder_1bit isbegin

    s

  • Sumator ripple-carry adder (RCA)

    library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

    entity rca isgeneric(

    WIDTH : integer := 8);port(

    a, b : in std_logic_vector(WIDTH-1 downto 0);cout : out std_logic;s : out std_logic_vector(WIDTH-1 downto 0)

    );end;

    architecture arch of rca is

    beginc(0) b(i),cin => c(i),s => s(i),cout => c(i+1)

    );end generate;

    end;

    Mariusz Rawski

  • Sumator ripple-carry adder wyniki

    Fitter Summary

    Top-level Entity Name rca

    Family StratixFamily Stratix

    Device EP1S10F484C5

    Total logic elements 18 / 10,570 ( < 1 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 0 / 48 ( 0 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 15

  • Carry-ripple adder - wady

    Jaka jest cieka krytyczna tego

    ukadu?

    Liczba komrek:

    O(N) liniowo zalena od wielkoci sumatora

    Opnienie:

    O(N) liniowo zalene od wielkoci sumatora

    Mariusz Rawski 16

  • Przyspieszenie sumowania

    Kluczem do przyspieszenia dodawania jest zmniejszenie opnienia sieci propagacji sygnau przeniesienia

    Z punktu widzenia propagacji tego sygnau nieistotne s wartoci konkretnych operandw

    Znaczenie ma czy w danym stopniu sumatora sygna przeniesienia jest

    generowany (generate), propagowany (propagate), pochaniany (anihilate).

    Mariusz Rawski 17

  • Optymalizacja propagacji przeniesienia

    Warunek generacji przeniesienia:

    gi = ai and bi

    Warunek propagacji przeniesienia:

    pi = ai xor bi

    c a b c s

    Warunek pochaniania przeniesienia:

    anii = (not ai) and (not bi)

    Mariusz Rawski 18

    ck ak bk ck+1 sk0 0 0 0 0

    0 0 1 0 1

    0 1 0 0 1

    0 1 1 1 0

    1 0 0 0 1

    1 0 1 1 0

    1 1 0 1 0

    1 1 1 1 1

  • Sumator carry lookahead (CLA)

    Przewidywanie przeniesienia

    ci = gi-1 + ci-1pi-1 Przeniesienia kolejnych stopni sumatora

    c1 = g0 + cinp0 c2 = g1 + g0p1 + cinp0p1 c3 = g2 + g1p2 + g0p1p2 + cinp0 p1p2

    Mariusz Rawski 19

  • Sumator carry lookahead (CLA)

    library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

    begin

    pstructure:for i in WIDTH-1 downto 0 generate

    Warunek generacji przeniesienia:

    gi = ai and bi Warunek propagacji przeniesienia:

    pi = ai xor bi Przewidywanie przeniesienia

    ci = gi-1 + ci-1pi-1

    entity cla isgeneric(

    WIDTH : integer := 8);port(

    a, b : in std_logic_vector(WIDTH-1 downto 0);cout : out std_logic;s : out std_logic_vector(WIDTH-1 downto 0)

    );end;architecture arch of cla is

    signal c : std_logic_vector(WIDTH-1 downto 0);signal p : std_logic_vector(WIDTH-1 downto 0);signal g : std_logic_vector(WIDTH-1 downto 0);

    for i in WIDTH-1 downto 0 generatep(i)

  • Sumator carry lookahead (CLA) wyniki

    Fitter Summary

    Top-level Entity Name cla

    Family StratixFamily Stratix

    Device EP1S10F484C5

    Total logic elements 15 / 10,570 ( < 1 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 0 / 48 ( 0 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 21

  • Mnoenie w ukadzie kombinacyjnym

    P = A B, n = 4

    Mi = bi A 2i

    a3 a2 a1 a0

    b3 b2 b1 b0

    0 0 0 0 a3b0 a2b0 a1b0 a0b0 M0

    0 0 0 a3b1 a2b1 a1b1 a0b1 0 M1

    0 0 a3b2 a2b2 a1b2 a0b2 0 0 M2

    0 a3b3 a2b3 a1b3 a0b3 0 0 0 M3

    p7 p6 p5 p4 p3 p2 p1 p0

    Mnoenie to w zasadzie wielokrotnie wykonywane dodawanie.

    Mariusz Rawski 22

    dodawanie.

  • Nowoczesne struktury FPGA

    RegReg

    RegReg

    AdderAdder

    AdderAdder12345678

    Comb.Logic

    AL

    M In

    pu

    ts

    ALM

    Linie poczeniowe carry-chain o maych opnieniach spinajce wiele blokw logicznych pozwalaj przyspeszy operacje dodawania i odejmowania

    Wzgldnie wydajne przy realizacji operacji dodawania i odejmowania. Jednake nie optymalne pod wzgldem kosztu, szybkoci i poboru mocy w przypadku realizacji operacji mnoenia i dzielenia

  • Nowoczesne struktury FPGA

    +

    Op

    tio

    nal

    Pip

    elin

    ing

    Ou

    tpu

    t Reg

    iste

    r U

    nit

    Ou

    tpu

    t Mu

    ltip

    lexe

    r

    144 144

    36

    36

    36

    36

    37

    37

    38

    + -

    + - Inp

    ut R

    egis

    ter

    Un

    it

    Producenci ukadw FPGA wbudowuj w swoje ukady dedykowane bloki realizujce funkcj mnoenia.

    Niektrzy poszli nawet dalej ciek integracji udostpniajc w peni funkcjonalne bloki MAC zwane blokami DSP

  • Operacja dodawania

    library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

    entity add isgeneric(

    WIDTH : integer := 8);port(

    a, b : in std_logic_vector(WIDTH-1 downto 0);cout : out std_logic;s : out std_logic_vector(WIDTH-1 downto 0)

    );end;

    architecture arch of add isarchitecture arch of add is

    signal result : unsigned(WIDTH downto 0);

    beginresult

  • Operacja dodawania wyniki

    Fitter Summary

    Top-level Entity Name add

    Family Stratix

    Device EP1S10F484C5

    Total logic elements 9 / 10,570 ( < 1 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 0 / 48 ( 0 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 26

    Najszybsza i najoszczdniejsza realizacja.Realizacja wasnego moduu sumatora masens tylko, gdy stosowany jest specyficznyschemat dodawania, np. z wykorzystaniempotokowania lub sumatory wieloargumentowe.

  • Operacja mnoenia

    library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

    entity mul isgeneric(

    WIDTH : integer := 8);port(

    a, b : in std_logic_vector(WIDTH-1 downto 0);p : out std_logic_vector(2*WIDTH-1 downto 0)

    );end;architecture arch of mul is

    signal result : unsigned(2*WIDTH-1 downto 0);signal result : unsigned(2*WIDTH-1 downto 0);

    beginresult

  • Operacja mnoenia

    Fitter Summary

    Top-level Entity Name mul

    Family Stratix

    Device EP1S10F484C5

    Total logic elements 0 / 10,570 ( < 1 % )Total logic elements 0 / 10,570 ( < 1 % )

    Total pins 32 / 336 ( 9 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 1 / 48 ( 2 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 28

    Bardzo wydajna realizacja. Gdyby jednak niewykorzystywa dedykowanego blokumnocego ukad zajmowaby 106 komrek atpd wynosioby 22,346 ns. Realizacja wasnegomoduu mnocego dopasowanego dokonkretnego algorytmu czsto prowadzi dolepszych rezultatw.

  • Obliczanie wartoci funkcji w DSP

    W cyfrowym przetwarzaniu sygnaw zazwyczaj nie jest potrzebne wykorzystanie dokadnych wartoci funkcji matematycznych takich jak logarytm, pierwiastek czy funkcje trygonometryczne. Zazwyczaj dopuszcza si pewien stopie niedokadnoci i kadzie si nacisk na szybko oblicze

    Std te obliczanie przyblionych wartoci funkcji matematycznych jest bardzo wanym zagadnieniem w DSP

    Jedn z czsto wykorzystywanych funkcji jest pierwiastek stopnia n (najczciej pierwiastek kwadratowy).

    Mona do tego celu wykorzysta np. szeregi Taylora.

    Jednake znalezienie wartoci np. jest rwnoznaczne z rozwizaniem rwnania

    Std te mona do tego celu zastosowa dowolny algorytm znajdowania miejsca zerowego funkcji taki jak np. metoda Newtona

    Mariusz Rawski 29

    3 q q x 03 =

  • Metoda Newtona

    Zwana rwnie metod Newtona-Raphsona lub metod stycznych iteracyjny algorytm wyznaczania przyblionej wartoci miejsca zerowego funkcji.

    Dla zadanej funkcji (x) oraz jej pochodnej '(x), zaczynamy od pierwszego przyblienia x0. Lepsze przyblienie x1 otrzymuje si ze wzoru

    )('

    )(

    0

    001 xf

    xfxx =

    )(' 0xf

  • Metoda Newtona

    Zadanie:

    wyznaczy warto

    Dla (x) = x3 17,

    std x1 = x0 (x03 17)/(3* x0

    2)

    713

    713

    load = 1

    T

    N

    x = data

    start = 1

    T

    N

    cnt = 0

    Niech next(x) = x (x3 17)/(3* x2).

    Obliczanie wartoci mona

    przeprowadzi algorytmem iteracyjnym. cnt = 9 T

    res = x

    ready = 1

    cnt 0

    cnt = cnt + 1

    N

    x = fnext(x)

    713

  • Metoda Newtona

    Algorytm iteracyjny z wczytaniem

    pocztkowej wartoci

    Wynik: liczba 10 bitowa w formacie U2

    Wykorzystanie metodologii RTL Wykorzystanie metodologii RTL

    konieczna implementacja moduu

    realizujcego funkcj fnext

    Jest to najbardziej skomplikowana operacja

    Wykorzystanie ASMD

  • Blok fnext

    next(x) = x (x3 17)/(3* x2)

    = x (x2*x 17)/(3* x2)

    Blok fnext zostanie zbudowany z nastpujcych elementw:

    power2 obliczanie x2

    multiply20b obliczanie x2*x

    multiply_by_3 obliczanie 3*x2

    divide30b obliczanie dzielenia

    Kolejne przyblienia reprezentowane s przez 10

    bitow liczb w kodzie U2

    x[9..0]

    power2_in [9..0]

    power2_result [19..0]

    multiply_by_3_in [19..0]multiply20b_inA [19..0] multiply20b_inB [9..0]

    divide30b obliczanie dzielenia

    Bloki power2, multiply20b, multiply_by_3, divide30b zostan wzita z biblioteki gotowych komponentw.

    Mariusz Rawski 33

    multiply_by_3_result [22..0] multiply20b_result [29..0]

    divide30b_inA [22..0] divide30b_inB [29..0]

    divide30b_result [29..0]

    xn[9..0]

  • Realizacja bloku fnext (1)

    library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;

    entity fnext isgeneric(

    number : integer := 1 );port(

    x : in std_logic_vector(9 downto 0);xn : out std_logic_vector(9 downto 0)

    );end fnext;

    architecture structure of fnext is

    signal power2_in : std_logic_vector(9 downto 0);

    Interfejs ukadu

    Deklaracja sygnaw do poczenia komponentw

    Warto, z ktrej liczony jest pierwiastek

    signal power2_in : std_logic_vector(9 downto 0); signal power2_result : std_logic_vector(19 downto 0);

    signal multiply20b_inA : std_logic_vector(19 downto 0); signal multiply20b_inB : std_logic_vector(9 downto 0); signal multiply20b_result : std_logic_vector(29 downto 0);

    signal multiply_by_3_in : std_logic_vector(19 downto 0); signal multiply_by_3_result: std_logic_vector(22 downto 0);

    signal divide30b_inA : std_logic_vector(22 downto 0); signal divide30b_inB : std_logic_vector(29 downto 0); signal divide30b_result : std_logic_vector(29 downto 0);

    Mariusz Rawski 34

  • Realizacja bloku fnext (2)

    component power2port(

    dataa : in std_logic_vector(9 downto 0);result : out std_logic_vector(19 downto 0)

    );end component;

    component multiply20bport(

    dataa : in std_logic_vector(19 downto 0);datab : in std_logic_vector(9 downto 0);result : out std_logic_vector(29 downto 0)

    );end component;

    Deklaracja komponentw

    component multiply_by_3port(

    dataa : in std_logic_vector (19 downt 0);result : out std_logic_vector (22 downt 0)

    );end component;

    component divide30bport(

    denom : in std_logic_vector(22 downto 0);numer : in std_logic_vector(29 downto 0);quotient : out std_logic_vector(29 downto 0);remain : out std_logic_vector(22 downto 0)

    );end component;

    Mariusz Rawski 35

  • Realizacja bloku fnext (3)

    beginb1 : power2 port map (

    dataa => power2_in,result => power2_result

    );

    b2 : multiply20b port map (dataa => multiply20b_inA,datab => multiply20b_inB,result => multiply20b_result

    );

    b3 : multiply_by_3 port map (dataa => multiply_by_3_in,result => multiply_by_3_result

    );

    b4 : divide30b port map(

    Konkretyzacja komponentw i podczenie do sygnaw

    b4 : divide30b port map(denom => divide30b_inA,numer => divide30b_inB,quotient => divide30b_result

    );

    power2_in

  • Realizacja bloku fnext wyniki

    Fitter Summary

    next(1) = 1 (13 17)/(3* 12) = 1 (5,33) = 6,33 next(2) = 2 (23 17)/(3* 22) = 2 (0,75) = 2,75

    Pojawiaj si bdy zaokrgle.

    Top-level Entity Name fnext

    Family Stratix

    Device EP1S10F484C5

    Total logic elements 1,133/ 10,570 ( 11 % )

    Total pins 20 / 336 ( 6 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 16 / 48 ( 33 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 37

  • Metoda Newtona ASMD (1)

    entity top isport(

    rst : in std_logic;clk : in std_logic;start, load : in std_logic;data : in std_logic_vector(9 downto 0); ready : out std_logic;result : out std_logic_vector(9 downto 0)

    );end top;

    architecture structure of top isconstant valueToFindTheRootOf : natural := 17;

    type STATE_TYPE is (s0, s1, s2, s3, s4, s5, s6);signal state_reg, state_next : STATE_TYPE;

    Interfejs

    Liczba dla ktrej liczony jest pierwiastek

    Stany automatu FSMD

    Rejestry modelujce zmienne algorytmu

    Sygnay do podczenia moduu fnext

    signal state_reg, state_next : STATE_TYPE;

    signal ready_reg, ready_next : std_logic;signal cnt_reg, cnt_next : unsigned(3 downto 0); signal x_reg, x_next : signed(9 downto 0); signal result_reg, result_next : std_logic_vector(9 downto 0);

    signal xn_function_in : std_logic_vector(9 downto 0); signal xn_function_result : std_logic_vector(9 downto 0);

    component fnextgeneric(

    number : integer := 99 );port(

    x : in std_logic_vector(9 downto 0);xn : out std_logic_vector(9 downto 0)

    );end component;

    Deklaracja komponentu fnext

  • Metoda Newtona ASMD (2)

    beginprocess(clk, rst)begin

    if rst = '1' thencnt_reg '0');x_reg '0');result_reg '0');

    elsif rising_edge(clk) thencnt_reg

  • Metoda Newtona ASMD (2)

    process(state_reg, start, load, cnt_reg, x_reg, result_reg)begin

    ready_next

  • Realizacja ASMD wyniki

    Ukad oblicza warto z duym bdem.Dla wynik jest 6 Podczas, gdy prawidowa

    2,571281 713 =

    1213

    Fitter Summary

    Top-level Entity Name fnext

    Family Stratix

    Device EP1S10F484C5

    Total logic elements 1,162/ 10,570 ( 11 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 16 / 48 ( 33 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 41

    Dla wynik jest 6 Podczas, gdy prawidowa warto to 4,946087

    121

  • Liczby w notacji staopozycyjnej (1)

    Liczby a = 15,671

    b = 2,3

    Suma 1 5 , 6 7 1+ 2 , 3 0 0

    1 7 , 9 7 1

    Przy dodawaniu i odejmowaniu naley pamita by liczby miay ustawiony przecinek w tym samym miejscu.Natomiast przy mnoeniu i dzieleniu naley pamita o odpowiednim ustawieniu przecinka w wyniku

    Iloczyn

    Mariusz Rawski 42

    1 5, 6 7 1

    2, 3

    3 6, 0 3 3 3

  • Liczby w notacji staopozycyjnej (2)

    Liczby a = 15,671 U2Fix5.3 = 01111.101 (15,625) b = 2,3 U2Fix3.5 = 010.01001 (2,28)

    Suma

    a+b 17,90625 U2Fix5.5

    0 1 1 1 1, 1 0 1 0 0

    + 0 1 0, 0 1 0 0 1

    1 0 0 0 1, 1 1 1 0 1

    Przy dodawaniu i odejmowaniu naley dopasowa liczby w zapisie staopozycyjnym by miay ten sam format (ustawiony przecinek w tym samym miejscu).

    Natomiast przy mnoeniu i dzieleniu naley pamita o tym jaki jest format wyniku (odpowiednim ustawieniu przecinka w wyniku)

    a+b 17,90625 U2Fix5.5

    Iloczyn

    ab 35,64453125 U2Fix6.8

    Mariusz Rawski 43

    0 1 1 1 1, 1 0 1

    0 1 0, 0 1 0 0 1

    1 0 0 0 1 1 1, 0 1 0 0 1 0 1

  • Blok fnext

    Niech x bdzie w formacie U2Fix 4.6 power2_result [19..0] U2Fix 8.12

    multiply_by_3_in [19..0] U2Fix 8.12 multiply_by_3_result [22..0] U2Fix 11.12

    multiply20b_inA [19..0] U2Fix 8.12 multiply20b_inB [9..0] U2Fix 4.6 multiply20b_result [29..0] U2Fix 12.18

    Kolejne przyblienia reprezentowane s przez 10

    bitow liczb w kodzie U2Fix4.6

    x[9..0]

    power2_in [9..0] (4.6)

    power2_result [19..0] (8.12)

    multiply_by_3_in [19..0] (8.12)multiply20b_inA [19..0] (8.12)

    multiply20b_inB [9..0] (4.6)

    divide30b_inA [22..0] U2Fix 11.12 divide30b_inB [29..0] U2Fix 12.18 divide30b_result [29..0] U2Fix 24.6

    Mariusz Rawski 44

    multiply_by_3_result [22..0] (11.12) multiply20b_result [29..0] (12.18)

    divide30b_inA [22..0] (11.12) divide30b_inB [29..0] (12.18)

    divide30b_result [29..0] (24.6)

    xn[9..0]

    Naley 17 zapisa w formacie U2Fix12.18

  • Realizacja bloku fnext Fix4.6

    beginb1 : power2 port map (

    dataa => power2_in,result => power2_result

    );

    b2 : multiply20b port map (dataa => multiply20b_inA,datab => multiply20b_inB,result => multiply20b_result

    );

    b3 : multiply_by_3 port map (dataa => multiply_by_3_in,result => multiply_by_3_result

    );

    b4 : divide30b port map(

    Nie ma adnych zmian w uytych komponentach. Operuj one na wektorach binarnych

    Zapis liczby 17 w formacie U2Fix12.18 dodanie 18 zer na najmodszych bitach

    b4 : divide30b port map(denom => divide30b_inA,numer => divide30b_inB,quotient => divide30b_result

    );

    power2_in

  • Realizacja ASMD wyniki

    165 w zapisie U2Fix4.6 reprezentuje warto 165/64 = 2.578125.

    2,571281 713 =Liczba 1 w U2Fix4.6 to 64

    Fitter Summary

    Top-level Entity Name fnext

    Family Stratix

    Device EP1S10F484C5

    Total logic elements 1,144/ 10,570 ( 11 % )

    Total pins 25 / 336 ( 7 % )

    Total virtual pins 0

    Total memory bits 0 / 920,448 ( 0 % )

    DSP block 9-bit elements 16 / 48 ( 33 % )

    Total PLLs 0 / 6 ( 0 % )

    Total DLLs 0 / 2 ( 0 % )

    Mariusz Rawski 46

    165/64 = 2.578125.Jest to ju znacznie lepsze przyblienie.