witam
Mam dwa dds'y AD9850 połączone równolegle do jednego kwarcu. Wszystko to jest sterowane z 89c4051. Program sterujący napisany w Bascom'ie. Urządzenie ma generować dwa sygnały: drugi przesunięty względem pierwszego o 45°, 90°, 180° (no i zgodne czyli 0°). Link do dokumentacji AD9850. Tak wyglądają procedury wysyłania danych do układów AD9850:
Układ generuje przebiegi o prawidłowej częstotliwości (częstotliwość prawidłowa w całym przedziale generowanej częstotliwości:0-30MHz) i prawidłowej w fazie tylko dla 0° (sprawdzałem na oscyloskopie - krzywe Lissajous).
Przesunięcie wyznaczam wg wzoru
To jest pierwszy problem: nie mogę uzyskać prawidłowego przesunięcia. Kolejny problem to dziwne przesuwanie fazy wraz ze wzrostem częstotliwości generowanego sygnału i niema znaczenia czy na wyjściu jest filtr czy go niema. tak od ok 1MHz i w gorę zmienia sie faza generowanego sygnału tzn następuje przesunięcie mimo iż w urządzeniu jest ustawione 0°. Przy częstotliwości 19MHz jest już 90°. Ostatnim problemem jest zmniejszanie się amplitudy generowanego sygnału. Od częstotliwości ok 2MHz amplituda zaczyna maleć. Przy 20MHz wynosi już ok 300mV. Może użyć ARW - jeśli macie jakieś propozycje to piszcie. Jeżeli ktokolwiek miał podobne problemy lub wie jak sie z nimi uporać to proszę o pomoc, ja już 3 miesiące siedzę nad tym problemem i nie mogę go przeskoczyć.
Mam dwa dds'y AD9850 połączone równolegle do jednego kwarcu. Wszystko to jest sterowane z 89c4051. Program sterujący napisany w Bascom'ie. Urządzenie ma generować dwa sygnały: drugi przesunięty względem pierwszego o 45°, 90°, 180° (no i zgodne czyli 0°). Link do dokumentacji AD9850. Tak wyglądają procedury wysyłania danych do układów AD9850:
Code:
dana alias p3.7 'wszystkie ustawione jako wyjścia
Fq_ud alias p3.6
W_clk1 alias p3.5
W_clk1 alias p3.4
'-----------------------------------------'
' Wysylanie danej do DDS1 '
'-----------------------------------------'
Sub Wyslij1
Set Fq_ud
nop
nop
nop
nop
Reset Fq_ud
For A = 0 To 31
Dana = Frq.a
Set W_clk1
nop
nop
Reset W_clk1
nop
nop
Next A
For A = 0 To 7
Dana = 0
Set W_clk1
nop
nop
Reset W_clk1
nop
nop
Next A
End Sub
'-----------------------------------------'
' Wysylanie danej do DDS2 '
'-----------------------------------------'
Sub Wyslij2
For A = 0 To 31
Dana = Frq.a
Set W_clk2
nop
nop
Reset W_clk2
nop
nop
Next A
' czesc odpowiedzialna za konfiguracje i ustawienie przesunięcia między sygnałami
For A = 0 To 2 '3 bity konfiguracyjne ustawiam na 0
Dana = 0
Set W_clk2
nop
nop
Reset W_clk2
nop
nop
Next A
For A = 0 To 4 'część odpowiedzialna za ustawienie przesunięcia - 5 bitów
Dana = Kat.a
Set W_clk2
nop
nop
Reset W_clk2
nop
nop
Next A
Set Fq_ud
nop
nop
nop
nop
Reset Fq_ud
End Sub
Układ generuje przebiegi o prawidłowej częstotliwości (częstotliwość prawidłowa w całym przedziale generowanej częstotliwości:0-30MHz) i prawidłowej w fazie tylko dla 0° (sprawdzałem na oscyloskopie - krzywe Lissajous).
Przesunięcie wyznaczam wg wzoru
Code:
φ=(π/16)*faza gdzie faza=b0*1+ b1*2+ b2*4+ b3*8+ b4*16
To jest pierwszy problem: nie mogę uzyskać prawidłowego przesunięcia. Kolejny problem to dziwne przesuwanie fazy wraz ze wzrostem częstotliwości generowanego sygnału i niema znaczenia czy na wyjściu jest filtr czy go niema. tak od ok 1MHz i w gorę zmienia sie faza generowanego sygnału tzn następuje przesunięcie mimo iż w urządzeniu jest ustawione 0°. Przy częstotliwości 19MHz jest już 90°. Ostatnim problemem jest zmniejszanie się amplitudy generowanego sygnału. Od częstotliwości ok 2MHz amplituda zaczyna maleć. Przy 20MHz wynosi już ok 300mV. Może użyć ARW - jeśli macie jakieś propozycje to piszcie. Jeżeli ktokolwiek miał podobne problemy lub wie jak sie z nimi uporać to proszę o pomoc, ja już 3 miesiące siedzę nad tym problemem i nie mogę go przeskoczyć.