ADSP 2181 i problem z DAG1



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Paweł Chrobak" <beefens_at_nospam_o2.pl>
Subject: ADSP 2181 i problem z DAG1
Date: Fri, 1 Oct 2004 16:10:19 +0200


Hej
Mój problem wygdąda tak ,jakbym adresował i0 w DAG1 on sobie coś innego
Tu fragment kodu, niżej opis problemu:



SCRAMBLER:
**** Pierwsza część ******
i4 = Input_Real;
i0 = FFT_IO_Real;
m4 = 1;
m0 = Mod_Value; // Mod_Value = 2 ^ 14-log2 (N)
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SR_Loop UNTIL CE;
ay1 = DM(i4,m4); // Reversing Real part
SR_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;

****
druga część ******
i4 = Input_Image;
i0 = FFT_IO_Image;
m4 = 1;
m0 = Mod_Value;
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SI_Loop UNTIL CE;
ay1 = DM(i4,m4); //Reersing image part
SI_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;
rts;

To jest funkcja haszująca przed moim FFT,

I , problem w tym ,że pierwsza część kodu jest wykonywana poprawnie,
dane z tablicy "Input_Real" są poprawnie transferowane do "FFT_IO_Real"
Zaś w drugiej częsci on przerzuca dane do "Input_Real" zamiast do
"FFT_IO_Image"
haszuje je poprawnie, ale czemu nie tam gdzie trzeba ???, przecież właściwie
obie części są takie same.
Co trzeba więcej zrobić żeby wskaźnik i0 adresował się poprawnie ???

Deklaracja tablic wygląda następująco:

.SECTION/DM sound_data;

.VAR/CIRC Input_Real[N];
.VAR/CIRC Input_Image[N];

.VAR/CIRC FFT_IO_Real[N];
.VAR/CIRC FFT_IO_Image[N];

gdzie N=64;

I za cholere nie mogę dojść co jest nie tak.

Jeśli ktoś by miał chwilę żeby rzucić na to okiem będę bardzo wdzięczny.
mogę wysłać cały kod niezbędny do zobacznie błędu
( Jest naprawde bardzo krótki i jest na VisualDSP, i sesja 2181 simulation)





========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: =?iso-8859-2?Q?Micha=B3_Lebik_?=<axior_at_nospam_poprostu_NIE_LUBI_SPAMU.net>
Subject: Re: ADSP 2181 i problem z DAG1
Date: Fri, 01 Oct 2004 18:39:10 +0200


Paweł Chrobak_at_nospam_pl.misc.elektronika napisał:

Hej
Mój problem wygdąda tak ,jakbym adresował i0 w DAG1 on sobie coś innego
Tu fragment kodu, niżej opis problemu:



SCRAMBLER:
****
Pierwsza część ******
i4 = Input_Real;
i0 = FFT_IO_Real;
m4 = 1;
m0 = Mod_Value; // Mod_Value = 2 ^ 14-log2 (N)
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SR_Loop UNTIL CE;
ay1 = DM(i4,m4); // Reversing Real part
SR_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;

****
druga część ******
i4 = Input_Image;
i0 = FFT_IO_Image;
m4 = 1;
m0 = Mod_Value;
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SI_Loop UNTIL CE;
ay1 = DM(i4,m4); //Reersing image part
SI_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;
rts;

To jest funkcja haszująca przed moim FFT,

I , problem w tym ,że pierwsza część kodu jest wykonywana poprawnie,
dane z tablicy "Input_Real" są poprawnie transferowane do "FFT_IO_Real"
Zaś w drugiej częsci on przerzuca dane do "Input_Real" zamiast do
"FFT_IO_Image"
haszuje je poprawnie, ale czemu nie tam gdzie trzeba ???, przecież właściwie
obie części są takie same.
Co trzeba więcej zrobić żeby wskaźnik i0 adresował się poprawnie ???



A czy DAG w procesorze 2181 zawiera rejestry bazowe Bx ? nie wiem czy to
coś pomoże, jednak z SHARC-ach nie ładuje się wartości początkowej do Ix
tylko do Bx, Ix jest przy pierwszym dostepie automatycznie ładowany
zawartością początkową Bx, i później modyfikowany przy transferach
DM(Ix,Mx), jeśli nie inicjalizujesz Bx, wtedy DAG nie działa..

Moze w serii DSP stałoprzecinkowych jest podobnie - być może to jest
przyczyną..

--
Pozdrowienia,
, Mądry człowiek nie czeka na okazje - sam je stwarza.
-- Francis Bacon ,.
[ Chcesz wysłac do mnie meila? -> http://tiny.pl/gbh ]

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Paweł Chrobak" <beefens_at_nospam_o2.pl>
Subject: Re: ADSP 2181 i problem z DAG1
Date: Sun, 3 Oct 2004 16:53:25 +0200



Hej
Mój problem wygdąda tak ,jakbym adresował i0 w DAG1 on sobie coś innego
Tu fragment kodu, niżej opis problemu:



SCRAMBLER:
****
Pierwsza część ******
i4 = Input_Real;
i0 = FFT_IO_Real;
m4 = 1;
m0 = Mod_Value; // Mod_Value = 2 ^ 14-log2 (N)
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SR_Loop UNTIL CE;
ay1 = DM(i4,m4); // Reversing Real part
SR_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;

****
druga część ******
i4 = Input_Image;
i0 = FFT_IO_Image;
m4 = 1;
m0 = Mod_Value;
l4 = 0;
l0 = 0;

CNTR = N;
ENA BIT_REV;
DO SI_Loop UNTIL CE;
ay1 = DM(i4,m4); //Reersing image part
SI_Loop: DM(i0,m0) = ay1;
DIS BIT_REV;
rts;

To jest funkcja haszująca przed moim FFT,

I , problem w tym ,że pierwsza część kodu jest wykonywana poprawnie,
dane z tablicy "Input_Real" są poprawnie transferowane do "FFT_IO_Real"
Zaś w drugiej częsci on przerzuca dane do "Input_Real" zamiast do
"FFT_IO_Image"
haszuje je poprawnie, ale czemu nie tam gdzie trzeba ???, przecież
właściwie
obie części są takie same.
Co trzeba więcej zrobić żeby wskaźnik i0 adresował się poprawnie ???



A czy DAG w procesorze 2181 zawiera rejestry bazowe Bx ? nie wiem czy to
coś pomoże, jednak z SHARC-ach nie ładuje się wartości początkowej do Ix
tylko do Bx, Ix jest przy pierwszym dostepie automatycznie ładowany
zawartością początkową Bx, i później modyfikowany przy transferach
DM(Ix,Mx), jeśli nie inicjalizujesz Bx, wtedy DAG nie działa..

Moze w serii DSP stałoprzecinkowych jest podobnie - być może to jest
przyczyną..

--
niestety 2181 nie ma rejestrów BX, jeszce to właśnie wnikliwie sprawdzałem
przed chwilą.
Tu jest tak, że Ix jest od razu jejestrem bazowym, i potem on jest
modyfikawany przez Mx.
A inicjuje się go właśnie :
np. i4 = Input_Real;



> Pozdrowienia,
> , Mądry człowiek nie czeka na okazje - sam je stwarza.
> -- Francis Bacon ,.
> [ Chcesz wysłac do mnie meila? -> http://tiny.pl/gbh ]



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Mariusz Dabrowski <mgd4_at_nospam_poczta.onet.pl>
Subject: Re: ADSP 2181 i problem z DAG1
Date: 1 Oct 2004 19:12:35 GMT


On 2004-10-01, Paweł Chrobak <beefens_at_nospam_o2.pl> wrote:
Mój problem wygdąda tak ,jakbym adresował i0 w DAG1 on sobie coś innego

Ostatni program na ADSP21xx napisałem już dość dawno, ale pamiętam że
przy nadawaniu wartośći rejestrom I pisałem tak:

.var/circ Input_Real[n];

i4 = ^Input_Real;


Nie pamiętam już czemu służył ten operator "^", ale pewnie był do
czegoś potrzebny, a u Ciebie go nie widzę. Sprawdź to.

--
Pozdrawiam,
Mariusz

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Paweł Chrobak" <beefens_at_nospam_o2.pl>
Subject: Re: ADSP 2181 i problem z DAG1
Date: Sun, 3 Oct 2004 16:11:40 +0200




Ostatni program na ADSP21xx napisałem już dość dawno, ale pamiętam że
przy nadawaniu wartośći rejestrom I pisałem tak:

.var/circ Input_Real[n];

i4 = ^Input_Real;


Nie pamiętam już czemu służył ten operator "^", ale pewnie był do
czegoś potrzebny, a u Ciebie go nie widzę. Sprawdź to.


Tak , tak było w starych kompilatorach, a w VisualDSP, on sobie sam to wie,
nawet próbowałem tak napisać jak podałeś, to kompilator powiedział, że
tu jest błąd, i że to kod ze starszej wersji, i żeby ten znak usunąć.



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai