eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Mnożenie liczb w kodzie U2
Ilość wypowiedzi w tym wątku: 9

  • 1. Data: 2015-03-25 15:06:53
    Temat: Mnożenie liczb w kodzie U2
    Od: s...@g...com

    Witam,

    Robię demodulator AM na FPGA i mam pewien dylemat przy miksowaniu.
    Mam dwie 12-to bitowe liczby ze znakiem (U2). Pakuję to do multiplikatora i na
    wyjściu generuje mi 24-bitowy iloczyn C=A*B. Problem jest w tym, że jedna z tych
    liczb, powiedzmy B=sin(omega*t) jest reprezentowana jako liczba 12-bitowa z zakresu
    <-2048,+2047>.Tymczasem wiadomo, że sinus jako funkcja przyjmuje wartości <-1,+1>. Na
    wyjściu tego miksera potrzebuję jednak tylko 12 bitów najbardziej znaczących. Które
    bity teraz z tych 24 wybrać? Gdyby to było w naturalnym kodzie binarnym, nie było by
    sprawy. A w U2, to mi się już samemu we łbie miksuje :))


  • 2. Data: 2015-03-25 15:49:08
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik napisał w wiadomości
    >Robię demodulator AM na FPGA i mam pewien dylemat przy miksowaniu.
    >Mam dwie 12-to bitowe liczby ze znakiem (U2). Pakuję to do
    >multiplikatora i na wyjściu generuje mi 24-bitowy iloczyn C=A*B.
    >Problem jest w tym, że jedna z tych liczb, powiedzmy B=sin(omega*t)
    >jest reprezentowana >jako liczba 12-bitowa z zakresu
    ><-2048,+2047>.Tymczasem wiadomo, że sinus jako funkcja przyjmuje
    >wartości <-1,+1>.

    I tu mamy pewien problem z liczba +1, ktora niewatpliwie wystepuje.

    >Na wyjściu tego miksera potrzebuję jednak tylko 12 bitów najbardziej
    >znaczących. Które bity teraz z >tych 24 wybrać? Gdyby to było w
    >naturalnym kodzie binarnym, nie było by sprawy. A w U2, to mi się już
    >samemu we łbie >miksuje :))

    Jesli sygnal tez ma zakres +/-2047, to uzyteczny wynik masz na bitach
    22:11 (z 23:0)
    11 uzytecznych bitow jednej liczby plus 11 uzytecznych bitow z drugiej
    liczby daje nam 22 bity wyniku mnozenia (21:0).

    Ale znak tez jest uzyteczny i trzeba go w wyniku zawrzec.
    A on sie w U2 duplikuje na dwoch najstarszych bitach.
    Tylko trzeba przemyslec co z tym +/-1, czy jak kto woli 2048.

    A w ogole to w FPGA mozesz sobie jakis ciekawszy multiplikator
    zrobic - np taki co policzy wynik 12 bit i to beda od razu najstarsze
    bity.
    Albo w ogole znaki osobno policzy...

    J.







  • 3. Data: 2015-03-25 18:08:44
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: Piotr Wyderski <p...@n...mil>

    s...@g...com wrote:

    > Mam dwie 12-to bitowe liczby ze znakiem (U2). Pakuję to do multiplikatora i na
    wyjściu generuje mi 24-bitowy
    > iloczyn C=A*B. Problem jest w tym, że jedna z tych liczb, powiedzmy
    B=sin(omega*t) jest reprezentowana jako
    > liczba 12-bitowa z zakresu <-2048,+2047>.Tymczasem wiadomo, że sinus
    jako funkcja przyjmuje wartości <-1,+1>.
    > Na wyjściu tego miksera potrzebuję jednak tylko 12 bitów najbardziej
    znaczących. Które bity teraz z tych 24 wybrać?

    Co drugi... ;-)
    Jeżeli masz k*sin(t)*A, to przez jakie k należy podzielić?

    Zrób tak, by Twój sinus przyjmujował wartości wartości
    z przedziału (-1,1), np. mnożąc go przez 0,999..9 i problem
    będzie trywialny: górne 12 bitów.

    Pozdrawiam, Piotr


  • 4. Data: 2015-03-25 18:10:31
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: Piotr Wyderski <p...@n...mil>

    J.F. wrote:

    > Tylko trzeba przemyslec co z tym +/-1, czy jak kto woli 2048.

    Pozbyć się przez skalowanie.

    > A w ogole to w FPGA mozesz sobie jakis ciekawszy multiplikator zrobic -
    > np taki co policzy wynik 12 bit i to beda od razu najstarsze bity.
    > Albo w ogole znaki osobno policzy...

    Ale po co, skoro dziś standardem są gotowe sprzętowe bloki
    mnożące 18x18 bitów?

    Pozdrawiam, Piotr


  • 5. Data: 2015-03-25 18:50:03
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: s...@g...com

    W dniu środa, 25 marca 2015 15:49:12 UTC+1 użytkownik J.F. napisał:
    > Użytkownik napisał w wiadomości
    > >Robię demodulator AM na FPGA i mam pewien dylemat przy miksowaniu.
    > >Mam dwie 12-to bitowe liczby ze znakiem (U2). Pakuję to do
    > >multiplikatora i na wyjściu generuje mi 24-bitowy iloczyn C=A*B.
    > >Problem jest w tym, że jedna z tych liczb, powiedzmy B=sin(omega*t)
    > >jest reprezentowana >jako liczba 12-bitowa z zakresu
    > ><-2048,+2047>.Tymczasem wiadomo, że sinus jako funkcja przyjmuje
    > >wartości <-1,+1>.
    >
    > I tu mamy pewien problem z liczba +1, ktora niewatpliwie wystepuje.
    >
    > >Na wyjściu tego miksera potrzebuję jednak tylko 12 bitów najbardziej
    > >znaczących. Które bity teraz z >tych 24 wybrać? Gdyby to było w
    > >naturalnym kodzie binarnym, nie było by sprawy. A w U2, to mi się już
    > >samemu we łbie >miksuje :))
    >
    > Jesli sygnal tez ma zakres +/-2047, to uzyteczny wynik masz na bitach
    > 22:11 (z 23:0)

    Jakby się dało, to bym Ci wysłał mejlem dużego browara. Działa! Dzięki!


  • 6. Data: 2015-03-25 18:53:15
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: s...@g...com

    W dniu środa, 25 marca 2015 18:10:31 UTC+1 użytkownik Piotr Wyderski napisał:
    > J.F. wrote:
    >
    > > Tylko trzeba przemyslec co z tym +/-1, czy jak kto woli 2048.
    >
    > Pozbyć się przez skalowanie.
    >
    > > A w ogole to w FPGA mozesz sobie jakis ciekawszy multiplikator zrobic -
    > > np taki co policzy wynik 12 bit i to beda od razu najstarsze bity.
    > > Albo w ogole znaki osobno policzy...
    >
    > Ale po co, skoro dziś standardem są gotowe sprzętowe bloki
    > mnożące 18x18 bitów?
    >

    Jak po co? Sygnał z ADC mam 12-to bitowy i tyle. A generator IP i tak wykorzystuje te
    sprzętowe multiplikatory 18x18.


  • 7. Data: 2015-03-25 19:54:33
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: Piotr Wyderski <p...@n...mil>

    s...@g...com wrote:

    > Jak po co?

    Po co Jarek chce to rzeźbić ręcznie, skoro ma makroblok...

    > A generator IP i tak wykorzystuje te sprzętowe multiplikatory 18x18.

    Toteż...

    Pozdrawiam, Piotr



  • 8. Data: 2015-03-26 14:10:48
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Piotr Wyderski" napisał w wiadomości grup
    s...@g...com wrote:
    >> Jak po co?
    >Po co Jarek chce to rzeźbić ręcznie, skoro ma makroblok...

    >> A generator IP i tak wykorzystuje te sprzętowe multiplikatory
    >> 18x18.
    >Toteż...

    Zeby mozna bylo uzyc tanszej kosci, zeby mniej pradu zzeralo, zeby te
    multpikatory do wazniejszych zadan wykorzystac itp :-)

    Mnozenie zmiennoprzecinkowych robi sie nieco inaczej niz calkowitych,
    o ile oczywiscie Stachowi to odpowiada.



    J.


  • 9. Data: 2015-03-26 17:43:42
    Temat: Re: Mnożenie liczb w kodzie U2
    Od: Piotr Wyderski <p...@n...mil>

    J.F. wrote:

    > Zeby mozna bylo uzyc tanszej kosci

    Nawet najtańsze Spartany to mają, to dziś standard.

    > zeby mniej pradu zzeralo

    Pajęczynka z logiki programowalnej od _sprzętowego_ bloku
    mnożącego przy porównywalnej liczbie bitów? :-)

    > zeby te multpikatory do wazniejszych zadan wykorzystac itp :-)

    Ale ich jest dużo... :-)

    > Mnozenie zmiennoprzecinkowych robi sie nieco inaczej niz calkowitych

    Akurat mnożenie to się robi tak samo (+suma wykładników), to
    z dodawaniem i odejmowaniem są problemy, bo trzeba wyrównywać mantysy.

    Pozdrawiam, Piotr

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: