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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> интерфейс, между ПЛИС и МК
essev
сообщение Oct 3 2010, 10:45
Сообщение #1


Участник
*

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



Всем привет.


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

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

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

Спасибо.

Сообщение отредактировал essev - Oct 3 2010, 10:58
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 3 2010, 12:33
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



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


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
x736C
сообщение Oct 3 2010, 13:14
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Oct 3 2010, 16:23
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Ставите в ПЛИС интерфейс SPI (мастер - ПЛИС), и никаких заморочек с синхронизациями.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 3 2010, 16:26
Сообщение #5


я только учусь...
******

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



Цитата(essev @ Oct 3 2010, 13:45) *
Всем привет.


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

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

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

Спасибо.

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

Примеры

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
essev
сообщение Oct 3 2010, 18:57
Сообщение #6


Участник
*

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



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

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

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



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

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

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

МК авр вроде кмоп
Go to the top of the page
 
+Quote Post
x736C
сообщение Oct 3 2010, 21:40
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



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

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

Сообщение отредактировал x736C - Oct 3 2010, 21:41
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 4 2010, 11:32
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 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.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2010, 12:07
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(x736C @ Oct 4 2010, 03:40) *
SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе.
Что за чушь? 07.gif UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 4 2010, 12:14
Сообщение #10


я только учусь...
******

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



Цитата(rezident @ Oct 4 2010, 15:07) *
Что за чушь? 07.gif 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.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Oct 4 2010, 12:21
Сообщение #11


Полное ничтожество
*****

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



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

уарт называется асинхронным так как для синхронизации не требуется сопутствующая клоковая последовательность, а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета. внутри пакета синхронизация осуществляется от собственного источника.
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 4 2010, 12:33
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(rv3dll(lex) @ Oct 4 2010, 15:21) *
а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета.


Подстройка внутренних часов возможна только по перепаду входного импульса.
Поэтому идентифицируют стартовый бит по перепаду. Ну а дальше - от стратегии зависит.
Например в ДВК 3 стартовым считался уровень нуля в пол стартового бита при перепаде из 1 в 0.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 4 2010, 12:45
Сообщение #13


я только учусь...
******

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



Цитата(rv3dll(lex) @ Oct 4 2010, 15:21) *
уарт называется асинхронным так как для синхронизации не требуется сопутствующая клоковая последовательность, а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета. внутри пакета синхронизация осуществляется от собственного источника.

так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты smile.gif
PS Как по мне реализация UART равна по сложности реализации SPI


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
x736C
сообщение Oct 4 2010, 12:59
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 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) *
Что за чушь? 07.gif
Давайте воздерживаться от резкостей, пожалуйста. Не о политике рассуждаем smile.gif

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

Сообщение отредактировал x736C - Oct 4 2010, 13:00
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2010, 14:15
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Maverick @ Oct 4 2010, 18:45) *
так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты smile.gif
Ну, давайте, попробуйте передать фрейм из 10-20 символов с проверкой на четность или без на скорости 115200, если слейв тактируется от часового кварца (32768Гц). Или пускай даже 1МГц, но обычный RC-генератор на триггере Шмитта в диапазоне питающих напряжений 3В...5В или в диапазоне температур -50°C...+50°C. А потом попытайтесь объяснить, почему ему (слейву или интерфейсу) не нужна синхронизация на обеих сторонах или нужна, но подойдет абы какая. Ведь интерфейс-то асинхронный laughing.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:45
Рейтинг@Mail.ru


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