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

 
 
> перекачка данных между фифо
jorikdima
сообщение Sep 1 2017, 04:19
Сообщение #1


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Я наверно криво сформулировал название, но придумать точнее не могу.
Вопрос по реализации на верилоге, возможно вопрос какой-то глупый, но я в этом направлении начинающий sm.gif
Есть плис, к ней подключен мост FT600 . Речь идет о передачи данных из плис в мост, чтоб прочитать на компе. Так вот в плис данные лежат в фифо и по готовности FT600 их надо ему закачать. Интерфейс у Ft600 напоминает синхронное фифо, поэтому я и написал что нужно перегнать данные с фифо в фифо.
Я привожу две катинки, чтобы описать временную диаграму Ft600:
Прикрепленное изображение

CLK - клог генерируемый Ft600
TXE - сигнал готовности Ft600 к приему (выход Ft600)
WR - сигнал валидности данных (вход Ft600)
Остальные сигналы не очень важны.
Цветом я обозначил перепады в конце, на которые буду ссылаться.
В примере на картинке данные я в плис должен выставить по зеленому спаду. По красному фронту Ft600 из залэтчит. Затем поймет что более не хочет/ не может принять и на следующем желтом спаде уберет сигнал готовности приема. На следующем синем фронте он уже проигнорирует то, что стоит на шине. Хотя я зачем-то согласно времянке должен еще один такт держать WR активным.
Теперь о той части, что в плис, но без картинок. В плис фифо, у фифо на входе клок, сигнал разрешения чтения и данные. Читается по фронту (сигнал разрешения чтения я должен выставить по спаду за пол клока до этого).
Вот наконец мы подошли к вопросу номер один.
Как я должен это все организовать? У меня два варианта:
1. Я согласно времянке должен выставить данные на шину Ft600 по спаду, чтоб по фронту он прочитал. Я могу инвертировать клок у себя и подать его на мой фифо, тогда данные будут читаться как бы по спаду входного клока.
2. Никакой клок не инвертировать. Читать из фифо по фронту. Тогда например, по тому фронту, что перед зеленым я данные прочитаю из фифо, выставлю на шину, но Ft600 уже по этому фронту не успеет эти данные увидеть и залэтчит их на следующем фронте. Таким образом он их лэтчить будет как бы с задержкой на клок. И это у меня даже работает.
Как обычно делают??? Я так понимаю первый вариант он более правильный что ли, но при этом сразу же вдвое снижается максимальная частота работы. Так как на все задержки остается пол клока. А во втором случае целый клок.
Я надеюсь хоть что-то понятно в вопросе.
Будет еще вопрос номер два, но лучше после первого.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zwerg_nase
сообщение Sep 1 2017, 10:21
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 204
Регистрация: 14-10-05
Из: г. Москва
Пользователь №: 9 641



Цитата(jorikdima @ Sep 1 2017, 07:19) *
Как я должен это все организовать? У меня два варианта:
1. Я согласно времянке должен выставить данные на шину Ft600 по спаду, чтоб по фронту он прочитал. Я могу инвертировать клок у себя и подать его на мой фифо, тогда данные будут читаться как бы по спаду входного клока.
2. Никакой клок не инвертировать. Читать из фофо по фронту. Тогда например, по тому фронту, что перед зеленым я данные прочитаю из фифо, выставлю на шину, но Ft600 уже по этому фронту не успеет эти данные увидеть и залэтчит их на следующем фронте. Таким образом он их лэтчить будет как бы с задержкой на клок. И это у меня даже работает.
Как обычно делают??? Я так понимаю первый вариант он более правильный что ли, но при этом сразу же вдвое снижается максимальная частота работы. Так как на все задержки остается пол клока. А во втором случае целый клок.


Сделать можно и так и так. ИМХО, второй вариант более правильный, т.к. , да, максимальная частота работы для плис в этом случае должна быть выше.
То, что на картинке данные от FIFO master переключаются по спаду, скорее всего нарисовано для наглядности. Главное, чтобы Tsu/Th FT600 удовлетворялись.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 1 2017, 15:29
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Zwerg_nase @ Sep 1 2017, 03:21) *
Сделать можно и так и так. ИМХО, второй вариант более правильный, т.к. , да, максимальная частота работы для плис в этом случае должна быть выше.
То, что на картинке данные от FIFO master переключаются по спаду, скорее всего нарисовано для наглядности. Главное, чтобы Tsu/Th FT600 удовлетворялись.

Хорошо, спасибо.
Тогда главный вопрос, ради которого и описывал все это.
Вот рассмотрим финальную стадию передачи. Предположим, что во время передачи FT600 решил остановить процесс и поднять TXE - имеет право в любой момент. На картинке у меня это происходит на желтом спаде. Проблемя в том, что к этому моменту я уже вычитал данные из моего фифо на красном фронте, в надежде передать их на синем фронте. Но надеждам не суждено сбыться, на синем фронте ФТ600 уже ничего лэтчить не будет. Как быть? Я же не могу назад запихать данные в фифо. Это уже вопрос именно постоения схемы, как фпгашники поступают в таком случае? Получается заранее фт600 не предупреждает о своей беспомощности в приеме данных.
У меня сейчас имплементация именно от этого и страдает, при окончании, а точнее временном перерыве передачи данных теряется одно слово, которое из фифо вычитывается, но не передается в ФТ600.
Спасибо.

Цитата(iosifk @ Sep 1 2017, 03:38) *
На самом деле, вопрос не в клоках и не в проводах. Вопрос в том, как надо проектировать, чтобы дело из художественных промыслов превратилось в формальность.
Давайте я Вам расскажу методику разработки проектов. По скайпу....

Спасибо, но как бы это печально не звучало, я не очень заинтересован в глубинных знаниях по этому вопросу. Это совсем не моя тема, тут просто нужно неосновную часть проекта сделать и забыть biggrin.gif Да и часовые пояса сильно разные.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st August 2025 - 13:06
Рейтинг@Mail.ru


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