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

Чтение данных по последовательной шине.

Есть последовательная шина: bus_data и bus_clock, достаточно быстрая, частота bus_clock 20 МГц. И есть ПЛИС Cyclone IV с тактовой частотой 25 МГц. Есть у кого-нибудь опыт написания на verilog модуля чтения данных в регистр по такой шине с тем, чтобы не нарушать синхронности дизайна от внутренней частоты ПЛИС?

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


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

Есть последовательная шина: bus_data и bus_clock, достаточно быстрая, частота bus_clock 20 МГц. И есть ПЛИС Cyclone IV с тактовой частотой 25 МГц. Есть у кого-нибудь опыт написания на verilog модуля чтения данных в регистр по такой шине с тем, чтобы не нарушать синхронности дизайна от внутренней частоты ПЛИС?

У меня на сайте "Краткий Курс", глава об асинхронных частотах

 

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


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

1 Используйте FIFO или

2 Увеличьте внутрикристальную частоту (там же есть умножители частот?) и используйте SPI или UART.

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


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

2 Yaputra

Тут у большинства есть опыт написания SPI или UART на плис, и что дальше?

Ваша "последовательная шина" - это стандарт какой то, или "самоделка" ? Если первое - не мешало бы назвать его, если последнее - где картинки?

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


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

Самоделка, самый обычный протокол: по восходящему фронту bus_clk защелкиваем бит с шины bus_data.

post-79231-1405778403_thumb.jpg

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

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


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

не понял вопроса...

 

Приёмник принимает bus_clk с частотой 20 МГц. В самой ПЛИС, где он расположен, есть своя внутренняя тактовая частота 25 МГц.

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


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

2 Yaputra

Как приёмник узнает когда начинается байт? Потому как приёмник и передатчик могу стартовать в любой момент времени и начало предечи 1го бита в передатчике никак не связана с началом приём 1го бита в приёмнике. Кроме частоты ещё надо знать когда начинается байт, иначе будете собирать мусор хоть и на правильной частоте.

Вот здесь описано как работает RS-232 Serial Protocol.

Из приведённой там картинки видно, что передача 1 байта занимает байт+чётность+старт-бит+стоп-бит, при чём старт-бит всегда 0, стоп-бит всегда в 1.

Это сделано для того, чтобы приёмник по "перепаду" (утрируя) стоп-старт бита мог определить когда у него начинается байт. Детально реализацию синхронизации в UART можете глянуть на OpenCores

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


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

тут все же ближе к SPI, так как есть данные и частота.

 

На самом деле пока возился с некими проблемами в SPI подсказали весьма остроумное решение.

Берете стандартное FIFO (IP Core), делаете ему 1 битные входные данные, и клок данных с частоты SPI,

выход может быть с любой частотой, и даже можно сразу сделать много битный. Идеальный SPI на готовых модулях и частоты все сопряжены.

 

Ну конечно же нужен сигнал синхронизации....

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


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

Самоделка, самый обычный протокол: по восходящему фронту bus_clk защелкиваем бит с шины bus_data.

мой совет, "велосипед" не изобретать, а взять за основу какой-то готовый интерфейс, например SPI - наиболее подходящий для Вас, судя по представленным циклограмам...

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


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

По двум линиям вряд-ли получится принимать и распознавать пакеты данных, поэтому нужна 3 линия управляющего сигнала. Похожим примером в программе Квартус2 в разделе Insert Template есть сдвиговый регистр после доработки подойдет для вашего проекта

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


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

даже по 1 линии получается создать полноценный 2 направленный протокол, при этом адресуемый с автоматическим определением числа устройств на линии....

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


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

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

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

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

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

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

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

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

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

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