Перейти к содержанию
    

Максимальная частота работа схемы

Мне прислали разработчики (работают на наше предприятие по наряд заказу) модуль (на VHDL) для работы с контролером USB CY7C68013A. Теперь собственно вопрос:

Может ли корректно работать модуль (на VHDL) на 200 МГц если синтезатор показывает следующее:

 

 

Timing Summary:

 

Selected Device : 3s400pq208-4

 

---------------

Speed Grade: -4

 

Minimum period: 8.431ns (Maximum Frequency: 118.610MHz)

Minimum input arrival time before clock: 8.758ns

Maximum output required time after clock: 9.216ns

Maximum combinational path delay: 10.426ns

 

Проверка на плате конечно показало что устройство работает, но корректно ли его работа в ПЛИС? Могут ли быть сбои или возникнуть метастабильное состояние?

 

З.Ы. Мое мнение это не есть гуд. Но всякое бывает. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не очень конечно понятно, зачем контроллеру USB работать на 200 МГц. По поводу реальной частоты - синтезатор показывает низшую, если их несколько.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не очень конечно понятно, зачем контроллеру USB работать на 200 МГц.

 

Мне ответили так на этот вопрос. От контроллера приходит короткий импульс готовности (порядка 24 нс), модуль в ПЛИС должен не более чем через такт работы контроллера USB (48 МГц) дать сигнал готовности данных в фифо. Сказал, что на 100 МГц он не мог захватить передний фронт импульса

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

От контроллера приходит короткий импульс готовности (порядка 24 нс), модуль в ПЛИС должен не более чем через так работы контроллера USB (48 МГц) дать сигнал готовности данных в фифо.

Заведите 48МГц и сигнал на вход фифо и не мучайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне ответили так на этот вопрос. От контроллера приходит короткий импульс готовности (порядка 24 нс), модуль в ПЛИС должен не более чем через так работы контроллера USB (48 МГц) дать сигнал готовности данных в фифо. Сказал, что на 100 МГц он не мог захватить передний фронт импульса

 

Вы бы кусочек схемы привели. Если за 20 нс нужно перейти из одного клокового домена в другой, то наверно 100 - маловато будет. А передний фронт действительно на 48 мГц можно захватить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне ответили так на этот вопрос. От контроллера приходит короткий импульс готовности (порядка 24 нс), модуль в ПЛИС должен не более чем через так работы контроллера USB (48 МГц) дать сигнал готовности данных в фифо. Сказал, что на 100 МГц он не мог захватить передний фронт импульса
Это не значит, что всю схему нужно зафигачить на 200 MHz :( Задайте соотвествующие констрейны для входов и смотрите, что напишет синтезатор и Post Fit Timing. Если будут нарушения - надо править.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО разработчиков нужно трясти, зачем для 48 МГц блочка они использовали 200МГц тактовую. Там на 200МГц может быть работает только 1 КА. а все остальное в мультицикле или сигналами enable разруливается, но исе то об этом не знает...

 

ЗЫ. А режим то усб микрухи какой ? асинхронный или синхронный ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО разработчиков нужно трясти, зачем для 48 МГц блочка они использовали 200МГц тактовую. Там на 200МГц может быть работает только 1 КА. а все остальное в мультицикле или сигналами enable разруливается, но исе то об этом не знает...

 

ЗЫ. А режим то усб микрухи какой ? асинхронный или синхронный ?

 

Вот что ответил разработчик (дословно из письма):

 

 

. Для согласования двух разно скоростных потоков данных необходимо учитывать следующие их характеристики.

 

- Средняя интегральная мощность потоков, которая характеризуется средней скоростью передачи за время сеанса.

 

- Максимальная мощность потоков , которая характеризуется скоростью обмена при передачи одного непрерывного пакета

 

- Временем между двумя соседними пакетами.

 

В нашем случае поток данных от CCD матрицы практически равномерный и имеет мощность < 6* 16 Мбит/сек (с учетом межстрочных интервалов около 85 Мбит/сек ).

 

Контроллер USB в выбранном режиме работы ”balk” передает данные пакетами по 512х 16 бит на частоте чуть ниже 24 МГц, то есть с мощностью около 380 Мбит/сек. Но при этом между пакетами существуют временные интервалы, которые зависят от загрузки HOST контроллера. При моно связи они снижают производительность в два раза и средняя скорость становиться равной около 200 Мбит/сек. Существует еще один вид пакетирования верхнего уровня - данные принимаются программой обработки блоками по 32 000 шестнадцатиразрядных слов, после чего происходит их обработка до следующего приема. Это интервал обработки является самым критичным. Его время напрямую зависит от мощности используемого компьютера и его загрузки. В этом случае для передачи полного потока надо выбрать согласующее FIFO (в нашем случае внутренне FIFO ПЛИС), которое бы не успело переполниться за время интервала обработки.

 

В том проекте, который вам передан FIFO - 4096 х 16 бит будет заполнено за 680 мкс. На имеющихся у нас компьютерах с тактовой частотой 1.7 ГГц программа успевает выполнить обработку между принимаемыми блоками.

 

З.Ы. Маленькое пояснение к тексту. Это USB канал используется для передачи изображения с CCD матрицы (1002*1004), которая тактируется 6МГц.

 

З.Ы. З.Ы. Почитав книгу Агурова "Интерфейс USB Практика использования и программирования" на мой взгляд здесь более подходит изохронная передача.

 

К сожелению пока код выложить не могу (начальство не разрешает).

О том что код написан корректно я засомневался сразу, а здесь еще и:

 

WARNING:PhysDesignRules:372 - Gated clock. Clock net

u4_usb_data_controll/_cmp_eq0000 is sourced by a combinatorial pin. This is

not good design practice. Use the CE pin to control the loading of data into

the flip-flop.

WARNING:PhysDesignRules:372 - Gated clock. Clock net

u4_usb_data_controll/_not0011 is sourced by a combinatorial pin. This is not

good design practice. Use the CE pin to control the loading of data into the

flip-flop.

 

Спасибо des00 :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что ответил разработчик (дословно из письма):

 

 

. Для согласования двух разно скоростных потоков данных необходимо учитывать следующие их характеристики.

 

 

...

 

 

В нашем случае поток данных от CCD матрицы практически равномерный и имеет мощность < 6* 16 Мбит/сек (с учетом межстрочных интервалов около 85 Мбит/сек ).

 

Контроллер USB в выбранном режиме работы "balk” передает данные пакетами по 512х 16 бит на частоте чуть ниже 24 МГц, то есть с мощностью около 380 Мбит/сек. Но при этом между пакетами существуют временные интервалы, которые зависят от загрузки HOST контроллера. При моно связи они снижают производительность в два раза и средняя скорость становиться равной около 200 Мбит/сек.

Не понял, они что, данные ПОБИТНО обрабатывают? :07:

 

 

 

Существует еще один вид пакетирования верхнего уровня - данные принимаются программой обработки блоками по 32 000 шестнадцатиразрядных слов, после чего происходит их обработка до следующего приема. Это интервал обработки является самым критичным. Его время напрямую зависит от мощности используемого компьютера и его загрузки. В этом случае для передачи полного потока надо выбрать согласующее FIFO (в нашем случае внутренне FIFO ПЛИС), которое бы не успело переполниться за время интервала обработки.

 

В том проекте, который вам передан FIFO - 4096 х 16 бит будет заполнено за 680 мкс.

Считаем тактовую частоту FIFO: 4096/680 (mks) ~ 6 MHz, что ооочень далеко от затребованных 200 MHz :1111493779:

 

 

 

У кого то нелады с арифметикой - или у меня или у аффторов :wacko:

 

 

WARNING:PhysDesignRules:372 - Gated clock. Clock net

u4_usb_data_controll/_cmp_eq0000 is sourced by a combinatorial pin. This is

not good design practice. Use the CE pin to control the loading of data into

the flip-flop.

WARNING:PhysDesignRules:372 - Gated clock. Clock net

u4_usb_data_controll/_not0011 is sourced by a combinatorial pin. This is not

good design practice. Use the CE pin to control the loading of data into the

flip-flop.

Это тоже не есть good - может быть оправданно если ДЕЙСТВИТЕЛЬНО понадобился гейтованный клок. Кстати, у 3 Spartan'а есть clock multiplexor - его использование в любом случае предпочтительнее, чем гейтование клока на логике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что ответил разработчик (дословно из письма):

 

ИМХО кто-то кому-то вешает лапшу на уши или вопрос аутсорсеру был поставлен не правило.

 

Выбор размера фифо к делу не относиться. Вопрос был зачем для корректной работы нужна тактовая под 200МГц.

 

Если мне память не изменяет :

Если усб чип стоит у вас в синхронном режиме то там максимум 46 МГц тактовая.

Если в асинхронном то тактовая может быть любая, но при этом требования на ширину стробов такие, что даже если формировать их на удвоенной частоте, там будет не более 100МГц (сам делал подобное %))

 

ЗЫ. Насчет асинхры : Может быть ТЗ было поставлено не правильно, не были оговорены требования о проектировании. Вот аутсорсер и сделал как умеет.

 

ЗЗЫ. Если по ТЗ модуль содержал в себе переход из домена в домен (например как eth_mac корка), то может быть 200МГц это целевая частота вашей системы ? а 118 МГц это частота усб части (которая укладывается в требование на 48МГц)

 

ЗЗЗЫ. FPGA УСБ мост на CY7C68013A там же ничего сложного. со всеми тестбенчами и примитивной докой делается где-то за 1.5 недели. Неужели не нашли разработчика поблизости ? :)

 

В общем нужно разбираться подробно, опираясь на поставленное аутсорсеру ТЗ иначе ничего хорошего не выйдет %)

 

Удачи !!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут вот какое дело получилось. Это предприятие (которое работает на наше предприятие) взяло на практику студента. Дали ему задание разбираться с USB контроллером и его программировать. Связавшись с ним, он ответил что просто забыл вывести сигнал синхронизации автомата GPIF наружу. Студент этот потом уволился и получилось как всегда :). Разработчик работая вместе, я так понимаю, даже не вникал в работу студента и USB контроллера.

 

Я с этим разработчиком (который писал модуль для ПЛИС) разговаривал и при разговоре было видно вообще делиться информацией никакой не хочет, отвечая работает и пользуйся, мне такой ответ не подходит. Когда вопрос по USB контроллеру он отвечает, что он этим не занимался и отправляет к разработчику. Его конечно я могу понять деньги и все такое, но все таки...

 

Всем спасибо за помощь!!! :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...