-
Data: 2014-07-02 12:48:40
Temat: Re: Problem z odczytem przez FT2232H w trybie FT245 FIFO synchroniczny
Od: Adam Górski <gorskiamalpa@wpkropkapl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2014-07-02 01:04, s...@g...com pisze:
> W dniu wtorek, 1 lipca 2014 23:08:48 UTC+2 użytkownik Adam Górski napisał:
>> W dniu 2014-07-01 14:06, s...@g...com pisze:
>>
>>> Witam,
>>
>>>
>>
>>> Mam na pok�adzie swojej PCB, FT2232H i FPGA. Zapis z PC do FPGA w trybie
synchronicznym dzia�a OK, natomiast mam jajca przy odczycie z FPGA do PC.
>>
>>>
>>
>>> Najpierw hardware w FPGA. Wygl�da to mniej wi�cej tak:
>>
>>>
>>
>>> USB_CLK: in std_logic;
>>
>>> RST : in std_logic;
>>
>>> TXE_n : in std_logic;
>>
>>> WR_n : out std_logic;
>>
>>> USB_DATA: inout std_logic_vector(7 downto 0);
>>
>>> RAM_DATA: in std_logic_vector(7 downto 0);
>>
>>> RD_ADDR: out std_logic_vector(12 downto 0);
>>
>>>
>>
>>> signal RD_ADDRs: std_logic_vector(12 downto 0);
>>
>>>
>>
>>> process (USB_CLK,RST,TXE_n)
>>
>>> begin
>>
>>> if RST='1' then
>>
>>> RD_ADDRs<=(others=>'0');
>>
>>> RD_ADDR<=(others=>'0');
>>
>>> USB_DATA<=(others=>'Z');
>>
>>> WR_n<='1';
>>
>>> else
>>
>>> if USB_CLK'event and USB_CLK='1' then
>>
>>> WR_n<=TXE_n;
>>
>>> if TXE='0' then
>>
>>> USB_DATA<=RAM_DATA;
>>
>>> RD_ADDRs<=RD_ADDRs+1;
>>
>>> RD_ADDR<=RD_ADDRs;
>>
>>> else USB_DATA<=(others=>'Z');
>>
>>> end if;
>>
>>> end if;
>>
>>> end if;
>>
>>> end process;
>>
>>>
>>
>>> =========
>>
>>>
>>
>>> I teraz software (Delphi):
>>
>>>
>>
>>> ResetAddressCounters;
>>
>>> ftresult:=FT_Read(FT_HANDLE,@FT_In_Buffer,8192,@Read
_Result);
>>
>>>
>>
>>> Za��my, �e chc� odczyta� RAM zaimplementowany w FPGA. Zawarto��
RAM'u:
>>
>>> 0,1,2,3...255,0,1,2....255,....,.... - razem 8kB (taka 32-z�bna pi�a)
>>
>>>
>>
>>> Przy pierwszym odczycie zawarto�� FT_In_Buffer jest cholera jakby zrotowana w
prawo o losow� ilo�� adres�w. Np. o trzy adresy, w wyniku czego odczytuj�:
>>
>>>
>>
>>> 253,254,255,0,1,2,3....255,0,1,2....255,0,1,2....252
>>
>>>
>>
>>> Ka�dy kolejny odczyt powoduje rotacj� w prawo o dok�adnie 16 bajt�w..
>>
>>>
>>
>>> Jakieďż˝ porady?
>>
>>>
>>
>>
>>
>> Wycz�ci� fifo przed u�yciem ?
>
> Też o tym myślałem. Problem w tym, że w drajverach D2XX od FTDI brak takiej
funkcji.
>
>>
>> Ustawi� RD_ADDR na pocz�tek po pierwszym odczycie.
>>
>> Jak z poziomu pc ustawiasz RD_ADDRES na pocz�tek ? Jaka jest idea
>>
>> synchronizacji ?
>
> Dokładnie!! Przed każdym rozpoczęciem odczytu daję impuls RST, który
asynchronicznie zeruje licznik RD_ADDR (popatrz na kod VHDL). Impuls RST generuję
programowo, działa poprawnie, sprawdziłem na oscylu. Synchronizacja jest banalnie
prosta. Leci akwizycja danych do bufora w pamięci FPGA i sprawdzam bit statusu
akwizycji. Jak akwizycja zakończona, to walę 2 komendy opisane w pierwszym poście.
Aha!! Robiłem eksperymenty i tak np. przy odczycie tylko 512 bajtów z bufora,
każdorazowo robi mi rotację o jeden bajt. Podejrzewam, że coś jest nawalone w
drajverach D2XX, albo pieron wie co ?!
Ok. Jaka to fpga ? Na pewno są tam jakieś mechanizmy dostępu przez jtaga
: podgląd ram-u , podgląd sygnałów itd czy nawet rejestratory z wyzwalaniem.
1. Czy jesteś pewien zawartości pamięci - ale tak na 10000%? Czyli np
rom ze wzorcem. Napisałeś że jest tam jakiś ram, ale może być dwuportowy
lub inna cholera.
2. Może być też tak że w momencie rozpoczęcia przesyłania FT czyści
sobie fifo ,wiec należałoby wpisać do fifo dopiero jak zacznie się
odczyt po pc stronie. Na pewno jest to w sheecie opisane.
3. Szukałeś jakiś app note, white papers etc ?
VHDL nie wygląda źle, może ja bym go zrobił całkowicie synchronicznie,
albo przynajmniej synchronizował RST do zegara USB_CLK ( albo oba
powyższe ). Nie widzę reszty wiec nic więcej nie powiem.
Pzdr.
Adam Górski
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
http://www.avast.com
Następne wpisy z tego wątku
- 02.07.14 13:15 s...@g...com
- 02.07.14 13:25 s...@g...com
- 02.07.14 21:27 s...@g...com
- 03.07.14 15:42 Adam Górski
- 03.07.14 19:50 Pszemol
- 03.07.14 23:22 Adam Górski
- 04.07.14 18:51 MiSter
- 07.07.14 14:20 Adam Górski
- 08.07.14 08:54 as
- 26.07.14 02:51 s...@g...com
Najnowsze wątki z tej grupy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
Najnowsze wątki
- 2025-05-11 Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- 2025-05-11 Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- 2025-05-11 obca rejestracja budzi agresję
- 2025-05-11 Po nie udanej próbie egzekucji: Nigeryjczyk, który chciał zabić Polaka, nie odpowie za atak
- 2025-05-10 Szczecin => Key Account Manager IT <=
- 2025-05-10 Rudno => Administrator sieci IT <=
- 2025-05-10 Wrocław => Controlling systems Consultant <=
- 2025-05-10 Rudno => IT network administrator <=
- 2025-05-10 Warszawa => Customer Service with Spanish + translation <=
- 2025-05-10 Warszawa => Senior Account Manager <=
- 2025-05-10 Trójmiasto => Head of Social Media <=
- 2025-05-10 Warszawa => C Programmer <=
- 2025-05-10 Warszawa => Java Developer <=
- 2025-05-10 powąchaj instrybutor
- 2025-05-10 Prawomocny wyrok. Rowerzysta nie ma pierwszeństwa, dojeżdżając do przejazdu