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

Всем привет.

 

 

Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР).

Частота у ПЛИС = 100 МГц, у МК = 1 МГц.

 

Может быть лучше клок для МК с ПЛИС генерить?

 

Как посоветуете его реализовывать? Может быть примерчики есть?

 

Спасибо.

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

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


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

Уточните условия - что, с какой скоростью и с какой допустимой задержкой собираетесь передавать.

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

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


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

Может быть лучше клок для МК с ПЛИС генерить?

Без всякого сомнения.

 

Примерчик на вирилог.

Много лишнего, но зато пример законченный и рабочий.

fpga_mc_bidir.v

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

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


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

Ставите в ПЛИС интерфейс SPI (мастер - ПЛИС), и никаких заморочек с синхронизациями.

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


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

Всем привет.

 

 

Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР).

Частота у ПЛИС = 100 МГц, у МК = 1 МГц.

 

Может быть лучше клок для МК с ПЛИС генерить?

 

Как посоветуете его реализовывать? Может быть примерчики есть?

 

Спасибо.

Можно и асинхронный интерфейс UART (RS 485 или RS 232) - хороший и простой в реализации.

 

Примеры

 

Объем передаваемых данных какой?

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


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

вопрос топика возник из защиты прошивки ПЛИС от слямзивания :)

 

http://electronix.ru/forum/index.php?showt...0&start=150

 

по 32 бита шифрованного потока писать в ПЛИС и обратно возвращать 32 бита шифрованного потока.

 

 

 

уарт не хочется по причине более сложной реализации и отладки, как мне кажется

 

т.е., наверное, самым простым и надежным будет передача по SPI с частотой 1 МГц и тактированием МК от ПЛИС?

 

нужно ли будет задавать какие-либо особенности интерфейсных пинов ПЛИС аля делать сигналы LVTTL или кмоп?

 

МК авр вроде кмоп

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


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

1.

SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе.

UART в примитивном исполнении в ПЛИС реализуется очень просто.

 

2.

Подключал напрямую в свое время, но лучше уточнить в DS на конкретные семейства.

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

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


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

Всем привет.

 

 

Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР).

Частота у ПЛИС = 100 МГц, у МК = 1 МГц.

 

Может быть лучше клок для МК с ПЛИС генерить?

 

Как посоветуете его реализовывать? Может быть примерчики есть?

 

Спасибо.

Еще один вариант (правда параллельный):

В ПЛИС организовывается двухпортовая память - МК видит ее как внешнюю память (ОЗУ). Таким образом, к памяти может обращаться как ПЛИС так и МК.

PS Но тоже простой...

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


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

SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе.
Что за чушь? :07: UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС.

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


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

Что за чушь? :07: UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС.

глупый вопрос:

Почему UART называется асинхронным?

Простое описание протокола:

 

Принцип работы

 

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

 

Данные передаются пакетами по одному байту (8 бит).

 

Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит.

 

Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита.

 

В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит).

 

Поясните свой ответ, плиз

PS не понял Вашего ответа...

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


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

если задача сего чуда шифрование и защита прошивки плис закрытым контроллером, то интерфейс должен быть последовательный самодельный и выполненный программно в МК. тогда его можно сделать с хитрыми таймингами, зашумлениями пауз и прочей приблудой. я делал для защиты именно так.

 

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

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


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

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

 

Подстройка внутренних часов возможна только по перепаду входного импульса.

Поэтому идентифицируют стартовый бит по перепаду. Ну а дальше - от стратегии зависит.

Например в ДВК 3 стартовым считался уровень нуля в пол стартового бита при перепаде из 1 в 0.

 

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


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

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

так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты :)

PS Как по мне реализация UART равна по сложности реализации SPI

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


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

UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС.

Вам уже чуть ниже ответили про асинхронность UART протокола. Я писал (перечитайте) о синхронизации информационного потока.

Побитовую синхронизацию при приеме байта данных берет на себя аппаратная часть микроконтроллера при соблюдении, естественно, условий, о которых вы написали. В этом контексте реализацию протокола со стороны ПЛИС по понятной причине не рассматриваю.

 

Повторюсь. Согласен, что SPI тут более предпочтителен с точки зрения удобства реализации и использования.

Особенно, если ведущим выступает контроллер.

 

 

P. S.

Что за чушь? :07:
Давайте воздерживаться от резкостей, пожалуйста. Не о политике рассуждаем :)

 

rv3dll(lex), данные можно гонять стандартным протоколом, а усилия по изготовления хитрых приблуд направить на реализацию хорошего шифрования. Не согласитесь?

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

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


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

так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты :)
Ну, давайте, попробуйте передать фрейм из 10-20 символов с проверкой на четность или без на скорости 115200, если слейв тактируется от часового кварца (32768Гц). Или пускай даже 1МГц, но обычный RC-генератор на триггере Шмитта в диапазоне питающих напряжений 3В...5В или в диапазоне температур -50°C...+50°C. А потом попытайтесь объяснить, почему ему (слейву или интерфейсу) не нужна синхронизация на обеих сторонах или нужна, но подойдет абы какая. Ведь интерфейс-то асинхронный :laughing:

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


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

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

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

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

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

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

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

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

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

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