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

Как проще сделать детерминированный бит-банг?

Здравствуйте! Посоветуйте, как было бы проще собрать устройство, которое на входе получает байт, а на выходе ставит 8 ножек согласно битам из принятого байта (в просто-народе "бит-бангинг"). Главное требование, оно же и ограничение - выход должен строго работать на частоте 100МГц.

 

Может есть какие-то готовые решения (что-то вроде дешевого анализатора спектра, только наоборот)?

 

Каким я вижу одно из возможных решений: взять кортекс М4 с USB2.0, и настроить DMA для USB и GPIO. Хост (на ПК) будет построчно читать из файла байты, и слать их по USB на МК. Единственное, в чем я вижу сложность, это как мне строго задать частоту всего пайплайна, чтобы на выходе ножка порта дергалась каждые 10нс? Насколько такое решение вообще реализуемо?

 

(Простите, за возможно делитанский вопрос.)

Изменено пользователем honeycomb0

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


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

Сомневаюсь, что контроллер в принципе умеет махать ногами на частоте 100МГц

Такое нужно делать на ПЛИС. Ну и крепко думать насчет интерфейса потому что USB 2.0 не справится

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


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

Надо проц c USB 3.0 и минимум 500МГц

 

Единственное, в чем я вижу сложность

:laugh:

 

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


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

. Хост (на ПК) будет построчно читать из файла байты, и слать их по USB на МК. Единственное, в чем я вижу сложность, это как мне строго задать частоту всего пайплайна, чтобы на выходе ножка порта дергалась каждые 10нс?

Файл загружаем, например в стартовый набор с ПЛИС. Там должна быть внутр. память и если ее не хватает, то есть и внешняя. Или грузим во флэшь, а уже из нее потом в память... Далее в ПЛИС делаем ДМА и слова/байты/биты как угодно пишем в порт...

 

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


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

Всем спасибо за ответы! да, на самом деле я что-то не подумал написал про USB...

 

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

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


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

В ПЛИС можно 12000 бит "уложить" в 12кбит, что будет в 8 раз меньше Ваших 12 кБайт.

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


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

В ПЛИС можно 12000 бит "уложить" в 12кбит, что будет в 8 раз меньше Ваших 12 кБайт.

Все так, только у меня же 8 параллельных каналов (8 ножек). И каждый канал непрерывно должен "выпалить" 12000 бит.

Изменено пользователем honeycomb0

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


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

FT600Q, если RD зажать (соединить c RXF) будет данные на 100МГц выплёвывать.

шина правда 16ти разрядная, но для USB3 200МБайт/с тоже не проблема.

 

у блэкфинов, (bf592, bf700 в qfn корпусах) есть нормальный параллельный порт 50МГц х 16бит.

который мультиплексором 8 х 2:1 можно превратить в 100МГц х 8бит.

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


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

Опередили немного. Тоже потом подумал, что под это дело можно шину использовать, а не ногами в режиме GPIO дергать.

 

В принципе если вы готовы хранить данные в девайсе и постоянная их передача не требуется, то можете передать свои 12килобайт и через медленный интерфейс. Всё это складывается в буфер а потом выдается на шину с частотой 100мгц.

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


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

FT600Q, если RD зажать (соединить c RXF) будет данные на 100МГц выплёвывать.

шина правда 16ти разрядная, но для USB3 200МБайт/с тоже не проблема.

 

у блэкфинов, (bf592, bf700 в qfn корпусах) есть нормальный параллельный порт 50МГц х 16бит.

который мультиплексором 8 х 2:1 можно превратить в 100МГц х 8бит.

 

Спасибо _pv за наводку! Не знал про FT600Q, в мою задачу вписывается идеально.

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


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

Кстати учтите, что USB вам скорее всего не будет гарантировать времянку.

Т.е. выполнить требование

выход должен строго работать на частоте 100МГц.
уповая только на USB у вас скорее всего не получится.

Спецификацию USB3 не читал, но в 2.0 все эти быстрые режимы реализуются по принципу "в среднем будет быстро" )))

 

Так что задачу надо будет решать в комплексе, с учетом всех требований. Я ж говорю если время от отправки с PC до выдачи этих бит на шину не важно, то можете 12КБ хоть по UART передать в девайс.

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


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

Кстати учтите, что USB вам скорее всего не будет гарантировать времянку.

Т.е. выполнить требование уповая только на USB у вас скорее всего не получится.

Спецификацию USB3 не читал, но в 2.0 все эти быстрые режимы реализуются по принципу "в среднем будет быстро" )))

 

Так что задачу надо будет решать в комплексе, с учетом всех требований. Я ж говорю если время от отправки с PC до выдачи этих бит на шину не важно, то можете 12КБ хоть по UART передать в девайс.

 

Спасибо, буду иметь в виду.

По поводу передачи 12КБ в память, это пока самый реализуемый вариант, я согласен. Единственная проблема - будет ощутимая задержка между сигналами (сигнал в данном случае - это последовательность из 12000 бит на каждом из 8ми каналов). Т.е. У меня сигнал длиной в 120мкс (10нс на каждый бит), поэтому перезаписывая неспеша по UART'у после каждого 120мкс сигнала очень мучительно... В идеале, ПК читает длинный файл и пихает в FIFO, котороый и тайминги соблюдает и не дает ПК переполнить буфер. Ну тут, действительно, задача на USB3 с небольшим ПЛИС от Lattice вырисовывается...

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


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

Блэкфины, USB, FIFO.... И это для элементарной задачи!??

Надо выдать 8 параллельных цифровых сигналов заранее подготовленных?

Ещё в моей радиоэлектронной юности такое делалось элементарным чипом ПЗУ + счётчик на его адресных линиях.

Сейчас ещё проще: 2 чипа Flash с quad-SPI интерфейсом спасут отца русской демократии.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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