|
интерфейс, между ПЛИС и МК |
|
|
|
Oct 3 2010, 10:45
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 16-05-07
Пользователь №: 27 757

|
Всем привет.
Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР). Частота у ПЛИС = 100 МГц, у МК = 1 МГц.
Может быть лучше клок для МК с ПЛИС генерить?
Как посоветуете его реализовывать? Может быть примерчики есть?
Спасибо.
Сообщение отредактировал essev - Oct 3 2010, 10:58
|
|
|
|
|
Oct 3 2010, 13:14
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(essev @ Oct 3 2010, 14:45)  Может быть лучше клок для МК с ПЛИС генерить? Без всякого сомнения. Примерчик на вирилог. Много лишнего, но зато пример законченный и рабочий.
fpga_mc_bidir.v ( 3.98 килобайт )
Кол-во скачиваний: 531
Сообщение отредактировал x736C - Oct 3 2010, 13:20
|
|
|
|
|
Oct 3 2010, 18:57
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 16-05-07
Пользователь №: 27 757

|
вопрос топика возник из защиты прошивки ПЛИС от слямзивания http://electronix.ru/forum/index.php?showt...0&start=150по 32 бита шифрованного потока писать в ПЛИС и обратно возвращать 32 бита шифрованного потока. уарт не хочется по причине более сложной реализации и отладки, как мне кажется т.е., наверное, самым простым и надежным будет передача по SPI с частотой 1 МГц и тактированием МК от ПЛИС? нужно ли будет задавать какие-либо особенности интерфейсных пинов ПЛИС аля делать сигналы LVTTL или кмоп? МК авр вроде кмоп
|
|
|
|
|
Oct 4 2010, 11:32
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(essev @ Oct 3 2010, 13:45)  Всем привет.
Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР). Частота у ПЛИС = 100 МГц, у МК = 1 МГц.
Может быть лучше клок для МК с ПЛИС генерить?
Как посоветуете его реализовывать? Может быть примерчики есть?
Спасибо. Еще один вариант (правда параллельный): В ПЛИС организовывается двухпортовая память - МК видит ее как внешнюю память (ОЗУ). Таким образом, к памяти может обращаться как ПЛИС так и МК. PS Но тоже простой...
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Oct 4 2010, 12:14
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(rezident @ Oct 4 2010, 15:07)  Что за чушь?  UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС. глупый вопрос: Почему UART называется асинхронным? Простое описание протокола: Цитата Принцип работы
По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает.
Данные передаются пакетами по одному байту (8 бит).
Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит.
Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита.
В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит). Поясните свой ответ, плиз PS не понял Вашего ответа...
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Oct 4 2010, 12:59
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(rezident @ Oct 4 2010, 16:07)  UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС. Вам уже чуть ниже ответили про асинхронность UART протокола. Я писал (перечитайте) о синхронизации информационного потока.Побитовую синхронизацию при приеме байта данных берет на себя аппаратная часть микроконтроллера при соблюдении, естественно, условий, о которых вы написали. В этом контексте реализацию протокола со стороны ПЛИС по понятной причине не рассматриваю. Повторюсь. Согласен, что SPI тут более предпочтителен с точки зрения удобства реализации и использования. Особенно, если ведущим выступает контроллер. P. S. Цитата(rezident @ Oct 4 2010, 16:07)  Что за чушь?  Давайте воздерживаться от резкостей, пожалуйста. Не о политике рассуждаем rv3dll(lex), данные можно гонять стандартным протоколом, а усилия по изготовления хитрых приблуд направить на реализацию хорошего шифрования. Не согласитесь?
Сообщение отредактировал x736C - Oct 4 2010, 13:00
|
|
|
|
|
Oct 4 2010, 14:36
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(rezident @ Oct 4 2010, 18:15)  почему ему (слейву или интерфейсу) не нужна синхронизация на обеих сторонах или нужна, но подойдет абы какая. Ведь интерфейс-то асинхронный  Вы спорите сами с собой. Я и буквой не обмолвился, что не нужна синхронизация на обеих сторонах. В предложенных вами условиях можно рассмотреть и SPI интерфейс. В любом случае обе м/с функционируют в своих тактовых доменах. Передача данных из триггеров одной м/с в триггеры другой требует, чтобы соблюдались определенные условия, гарантирующие их сохранность (когерентность или согласованность приема). Ошибочно приводить в качестве доказательства синхронности асинхронного интерфейса заведомо неправильные условия его эксплуатации как аргумент. При которых я бы не стал называть его UART-интерфейсом. Еще раз повторюсь во избежании дальнейшего недопонимания и чтобы получше донести мысль. Цитата SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе. Речь идет только лишь об удобстве обмена данными, но не об удобстве в реализации и соблюдении условий функционирования (в условиях крайнего севера %). Тем более, что в МК UART (как и SPI) уже реализован. Впрочем, от темы уходим. Предлагаю не оффтопить.
Сообщение отредактировал x736C - Oct 4 2010, 14:41
|
|
|
|
|
Oct 4 2010, 14:55
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(zombi @ Oct 4 2010, 20:49)  Предполагаю что UART называют асинхронным поскольку нет ОБЩЕГО синхронизирующего сигнала (кроме конечно первого перепада 1-0 ). Нет, немного не так. Тактирующего сигнала нет среди сигналов интерфейса. Потому, что можно отдельным проводом провести тактирующий сигнал между приемником и передатчиком и асинхронный (по принципу передачи/приема) интерфейс станет синхронным. В некоторых МК заранее предусмотрен такой режим и модуль UART называется U SART.
|
|
|
|
|
Oct 5 2010, 07:42
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(zombi @ Oct 5 2010, 10:04)  А много ли ресурсов cpld понадобилось для реализации такого шифрования? Сколько таких блоков по 32 бита? блок один. 23 бита из них 16 информационных 7 контрольная сумма. естественно это не в CPLD. там же ещё генератор случайных чисел и много ещё чего нужно. сколько ресурсов есть всего? попробуем подобрать вариант. думаю понятно, что на борту сплд потребуется сделать устройство сравнения и такой-же кодер. именно поэтому наиболее выгодно сделать свой интерфейс. он может быть более простым Цитата(zombi @ Oct 5 2010, 10:04)  А много ли ресурсов cpld понадобилось для реализации такого шифрования? шифрование было выполнено следующим образом 16 бит делилось на 2 группы 1 группа 8 бит загружалась в псп, 2 группа 8 бит прогонялась по псп 8тактов. расчитывалась контрольная сумма срс7 для 8бит данных и 8 бит мусора и 23 бита возвращались обратно.
|
|
|
|
|
Oct 5 2010, 18:02
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(rv3dll(lex) @ Oct 4 2010, 16:21)  если задача сего чуда шифрование и защита прошивки плис закрытым контроллером, то интерфейс должен быть последовательный самодельный и выполненный программно в МК. тогда его можно сделать с хитрыми таймингами, зашумлениями пауз и прочей приблудой. я делал для защиты именно так. Если проблема только в защите проекта, то достаточно медленную часть этого проекта просто переместить в MCU и связать с FPGA стандартным SPI. Например, хранить во флэш MCU параметры работы FPGA и текущие переменные, инициализировать FPGA из MCU, устроить клиент-сервер из этих двух составляющих проекта. Разбираться злоумышленнику в этой каше будет невыносимо трудно.
|
|
|
|
|
Oct 7 2010, 07:34
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(ViKo @ Oct 6 2010, 12:44)  "Скованные одной цепью"  Пора вам осваивать программирование. Поддерживаю метод Aproxда я не против) ассемблер 8051 я и так знаю и когдато-лет 7-10 назад писал на нём в Фитоновских программах и Кейле. и на сигнальниках тексасовских. Дёрнулся осваивать PIC времени не хватило - не дошло до практики. си - оно мне тоже не нужно. просто посич непостижикое и впихать невпихуемое невозможно. опятьже покупать отладочные средства... проще тыщу или две заплатить студенту, а самому заняться более нужным делом.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|