реклама на сайте
подробности

 
 
> EZ-USB FX3 в режиме ФИФО, ...читаются ноли...
billidean
сообщение Nov 9 2017, 15:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Добрый день всем.

Пытаюсь запустить обмен ПЛИС с EZ-USB FX3 в режиме синхронного Slave FIFO.
На данный момент добился того, что ПЛИС читает данные из этого ФИФО...но только одни ноли )

Очень нужна помощь опытного пользователя данных типов USB-мостов.

В-общем, я опишу, что и как я сделал, а вы, если в теме, подскажите (плзз), что я делаю не так

1. Из фирменного архива AN65974.zip ввзял примерный проект для настрой GPIF II "GPIFII_Designer_sync_SlaveFIFO.cydsn" и доработал его
следующим образом
Прикрепленное изображение


Все флаги имеют активный уровень 1, а инициализацию 0.

2. Полученный после компиляции файл cyfxgpif2config.h копирую в папку с фирменным примером "SlaveFifoSync" из того же архива.
Что там где изменять в проекте под Еклипсом, я не знаю...поэтому просто компилю его.

3. Результирующий файл SlaveFifoSync.img из папки "Release" заливаю в EEPROM платы EZ-USB FX3.

4. Для ПЛИСки написал управление ногами GPIF ФИФО. По циелограмме работы требуется сначал почитать одно слово из ФИФО,
проанализировать его и уже потом продолжить чтение остальных слов из ФИФО.
Когда подключал плату с ПЛИС к плате USB моста, у меня кончились проводнички, поэтому я вынужден был ограничиться
подключением только двух линий ДАННЫХ от ФИФО, поэтому анализировать по SignalTap'у можно только два разряда cy_fd[6] и cy_fd[7].
В-общем, запускаю SignslTap на ПЛИСке, подаю данные на USB-мост, и вижу такую картину

Прикрепленное изображение


Прикрепленное изображение


...читаются НОЛИ...

По картинке вижу что сначала вычитывается одно слово, затем пауза в один такт, затем читается все остальное.
Тактирование обмена с ФИФО ведет ПЛИС с чатотой около 25 кГц (системную тактовую ПЛИС 50 МГц поделил на 2000...для опытов).

То, что данные вычитываются из ФИФО - это факт. Если данные из ФИФО не вычитываются (если ПЛИС не подключать к ФИФО),
то после нескольких подач данных с компа мост вешается намертво и со стороны компа выдаются ошибки. А с моей прошитой ПЛИСкой мост не зависает при многократных подачах данных.


Кто что может сказать о правильности моих действий?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
billidean
сообщение Nov 13 2017, 18:22
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



На днях попробую асинхронный режим (времени вообще нет).
Но в чем меня убивает текущий синхронный режим, так это то, что флаги-то от ФИФО идут какими и должны быть при чтении. Когда данные кончаются, т.е. все вычитаны, то они возвращаются в исходное состояние...но данные = 0.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 14 2017, 08:51
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(billidean @ Nov 13 2017, 22:22) *
.... Когда данные кончаются, т.е. все вычитаны, то они возвращаются в исходное состояние...но данные = 0.

те Вы записываете в fifo, скажем, 10 байт, и "флаговая" линия "фифо пусто" отрабатывает после 10 чтений ?
--
Если испытания проводите на малой тактовой - то это не соответствует требованиям DS (не менее 5 Мег)
Если на допустимой - 5 и более - то чем смотрите аппаратную осцилограмму ?. Там для синх. режима,
обратите внимание на тактирующие стробы, их Raise-Fail, и их привязку на выдаваемые на шину данные,
их задержку относительно CLK. Вообще на лог. анализаторе должно быть сразу видно, где собака порылась.
В качестве данных в фифо заливайте "бегущую единицу". Так будет хорошо виден момент перевыставления
данных по линиям FX3.

Если работу надо сделать-сдать, и скорости асинхронного режима будет достаточно - делайте на нем.
По крайней мере выполните работу и отладите цепочку <софт_PC> <HW/софт_FW3> <HW-"софт" ПЛИС> < XXX >
Если это будет работать - допиливайте до синхронного.
А так может оказаться, что ошибка в софте на PC, а "виновата невестка" sm.gif
А какой лог.анализатор (HW) Вы используете ?



Go to the top of the page
 
+Quote Post
billidean
сообщение Nov 19 2017, 14:10
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Цитата(k155la3 @ Nov 14 2017, 12:51) *
те Вы записываете в fifo, скажем, 10 байт, и "флаговая" линия "фифо пусто" отрабатывает после 10 чтений ?

Да, все так и получается...данные типа вычитываются, флаги меняются как надо...но самих данных нет...

Попробовал асинхр. режим...толку ноль.

Здесь самая беда в том, что я почти не понимаю проекты для МК cypress, которые пишутся на эклипсе.
Я не понимаю, где и что надо изменить или добавить, чтобы перевести чип в режим работы СлейвФИФО без вмешательства МК, т.е. в режим AUTO (где-то вычитал, что такое можно).

Огромная просьба поделиться прошивкой для чипа cypress...я просто не могу ничего понять (((

Блинн...........
Что вообще надо этой фигне сделать?????

Все примеры перепробовал...

Про всякие там "длительность управляющих сигналов, синфазность и т.п." рассуждать нет смысла, т.к. в доках все делается просто, на CS подается 0, на OE подается 0, на RD подается 0. На остальные подается 1...всё, чтение сделано.

С другой стороны, если бы данные с компа не записывались в буферы чипа, то флаги не устанавливались бы...и т.д.

ПЛЗЗЗ!!! Памагите люди добрые!!!
Go to the top of the page
 
+Quote Post
k155la3
сообщение Nov 20 2017, 10:08
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(billidean @ Nov 19 2017, 18:10) *
. . .
Попробовал асинхр. режим...толку ноль.
. . .

Поделиться прошивкой не могу, тк. "немое". Да и сделана она в Keil/FX2 и привязана на inf-конфигурацию, опятьже "немою".
Отличается от примера только парой строк в ассемблерно файле прошивки и-или в опциях поекта.
Пороюсь в архивах, цитаты выложу (для работы в асинхр. режиме).
----
Повторяю свой вопрос, чем смотрите линии данных ? (осцилограф, или что)
Проверьте настройки полярностей, в частности OE.
Если есть возможность - вместо ПЛИС прикрутите на кипариса эмулятор ПЛИСы в виде любого процессора,
который позволяет делать отладку (это если нет нормальных средств чтоб нормально аппаратно мониторить - осцилограф и лог.анализатор). Это всего-то 10 линий подключить (всю шину данных не надо, достаточно 1-4 линии).
Запустить "с лету" такую систему можно если, как предлагается у кипариса, взять 2 ихних кита и сделать кольцевой канал fifo.
Если китов нет (я стартовал без них), то самое оптимальное - это
- Консольное win32 утилита на базе ихней библиотеки
(за основу можно взять ихний исходник, не помню чего, но назывался cydesc)
- собственно fifo
- процессор "клиент/сервер" для fifo.

Вот код тестилки, которую я использовал (для приема).
Код
#include <windows.h>
#include <stdio.h>
#include "cyapi.h"
#include <conio.h>
#include <time.h>

int main()
{
    CCyUSBDevice *USBDevice;
    USB_DEVICE_DESCRIPTOR descr;
    USBDevice = new CCyUSBDevice(NULL);  

    printf("device count = %d \n",USBDevice->DeviceCount());
    for (int i=0; i < USBDevice->DeviceCount(); i++)
    {
        if (USBDevice->Open(i))
        {
            USBDevice->GetDeviceDescriptor(&descr);
            printf("bLength \t\t 0x%02x\n",descr.bLength);
. . . . .
            printf("iSerialNumber \t\t 0x%02x\n",descr.iSerialNumber);
            printf("bNumConfigurations \t 0x%02x\n\n",descr.bNumConfigurations);
            USBDevice->Close();
        }
        else  
         {    printf("unable to open device\n");  
            exit(-1);
         }
    }

  USBDevice->Close();

OVERLAPPED outOvLap, inOvLap;
CCyUSBDevice  *USBDevice1 = new  CCyUSBDevice(NULL);
int n_devices = USBDevice1->DeviceCount();

if ( n_devices <= 0 )
{    printf("\nINFO:  Unable to open device CYPRESS;\n");  
    exit(-1);
}

outOvLap.hEvent  = CreateEvent(NULL, false, false, "CYUSB_OUT");
inOvLap.hEvent   = CreateEvent(NULL, false, false, "CYUSB_IN");

static unsigned char inBuf[100000];
LONG  length = 65000; //128;
ZeroMemory(inBuf, sizeof(inBuf));

clock_t start, stop;
double  duration;

while( !kbhit() )
{
    length = 65000;
    start = clock( );    // метка времени старта цикла опроса
    UCHAR  *inContext = USBDevice1->BulkInEndPt->BeginDataXfer(inBuf, length, &inOvLap);
    USBDevice1->BulkInEndPt->WaitForXfer(&inOvLap,5000);
    USBDevice1->BulkInEndPt->FinishDataXfer(inBuf, length, &inOvLap,inContext);
    stop = clock( );    // метка времени стопа
    duration = (double)(stop - start) / CLOCKS_PER_SEC;
    printf("\nLen = %lu PacketInterval = %02.2f sec", length, duration);
    display_hex( inBuf, 100, "=== Packet In =====");
    ZeroMemory(inBuf, sizeof(inBuf));
    Beep(6000, 10);
}
CloseHandle(outOvLap.hEvent);
CloseHandle(inOvLap.hEvent);
exit(0);
} // main


Update:
В оригинале было так (переключение через установку в опциях компилятора - #defaine)
Код
#ifdef FREE
IFCONFIG = 0x03; // IFCLK Source external (i.e.) connected to MPEG_CLK minimum should be 5 MHz
                 // Synchronous Mode, Free Running MPEG_CLK,  MPEG_VALID is used as SLWR strobe
                 // FX2LP in SLAVE FIFO Mode
SYNCDELAY;
#endif

#ifdef GATED
IFCONFIG = 0xCB; // IFCLK Source internal (i.e.) Gated MPEG_CLK,  MPEG_CLK is connected to SLWR
                 // FX2LP in SLAVE FIFO Mode
SYNCDELAY;
#endif


Чтоб заработало (асинхронный режим) - переделал так (и убрал переключатель)
Код
IFCONFIG = 0xCB; // IFCLK Source internal (i.e.) Gated MPEG_CLK,  MPEG_CLK is connected to SLWR
                 // FX2LP in SLAVE FIFO Mode
SYNCDELAY;

// стробирующие сигналы с активным отрицательным уровнем

// FIFOPINPOLAR = 0x04; // SLWR is configured as active HIGH : Can be changed to 0x00 for SLWR to be active Low
FIFOPINPOLAR = 0x00;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- billidean   EZ-USB FX3 в режиме ФИФО   Nov 9 2017, 15:56
- - k155la3   Как чип маркирован ? На какой линии идет стробиров...   Nov 9 2017, 17:25
|- - billidean   Цитата(k155la3 @ Nov 9 2017, 20:25) Как ч...   Nov 9 2017, 18:29
- - k155la3   Я использую FX2 в асинхронном режиме (CY7C68013). ...   Nov 9 2017, 18:39
|- - billidean   Цитата(k155la3 @ Nov 9 2017, 21:39) Я исп...   Nov 9 2017, 18:47
- - k155la3   Вот диаграмма для синхронного чтения CY7. Подобна...   Nov 9 2017, 19:02
|- - billidean   Цитата(k155la3 @ Nov 9 2017, 23:02) Вот д...   Nov 12 2017, 15:35
- - k155la3   FX2 настройка дает возможность использования fifo ...   Nov 12 2017, 18:01
- - toweroff   А кто-то еще на параллельной шине висит на другом ...   Nov 19 2017, 18:28
- - billidean   ЦитатаА кто-то еще на параллельной шине висит на д...   Nov 20 2017, 16:58
- - billidean   Сегодня немного продвинулся...получил пару битиков...   Nov 20 2017, 19:00
|- - k155la3   Цитата(billidean @ Nov 20 2017, 22:00) . ...   Nov 20 2017, 21:59
- - billidean   Тааак...вот, что нарыл еще: сделал запись тем же с...   Nov 22 2017, 19:21
- - k155la3   1. проверяйте фазировку тактирующего синлала CLK к...   Nov 23 2017, 01:58
- - billidean   Я пока не захватываю данные внутрь ПЛИСки вообще. ...   Nov 23 2017, 18:40
- - k155la3   см. cyfxslfifosync.h (название вроде для синхронн...   Nov 24 2017, 09:11
- - billidean   Да, увидел. Возможно это просто опечатка в названи...   Nov 25 2017, 22:46
- - billidean   Спасибо, что помогаете мне Вы еще что-нибудь о...   Nov 26 2017, 16:56


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th August 2025 - 23:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016