essev 0 3 октября, 2010 Опубликовано 3 октября, 2010 (изменено) · Жалоба Всем привет. Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР). Частота у ПЛИС = 100 МГц, у МК = 1 МГц. Может быть лучше клок для МК с ПЛИС генерить? Как посоветуете его реализовывать? Может быть примерчики есть? Спасибо. Изменено 3 октября, 2010 пользователем essev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intekus 0 3 октября, 2010 Опубликовано 3 октября, 2010 · Жалоба Уточните условия - что, с какой скоростью и с какой допустимой задержкой собираетесь передавать. Думаю, на случаи "слова статуса раз в полсекунды" и "двунапралвенный поток многоразрядных данных, ограниченный пропускной способностью слабейшего из устройств" оптимальными будут разные решения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 3 октября, 2010 Опубликовано 3 октября, 2010 (изменено) · Жалоба Может быть лучше клок для МК с ПЛИС генерить? Без всякого сомнения. Примерчик на вирилог. Много лишнего, но зато пример законченный и рабочий. fpga_mc_bidir.v Изменено 3 октября, 2010 пользователем x736C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 3 октября, 2010 Опубликовано 3 октября, 2010 · Жалоба Ставите в ПЛИС интерфейс SPI (мастер - ПЛИС), и никаких заморочек с синхронизациями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 3 октября, 2010 Опубликовано 3 октября, 2010 · Жалоба Всем привет. Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР). Частота у ПЛИС = 100 МГц, у МК = 1 МГц. Может быть лучше клок для МК с ПЛИС генерить? Как посоветуете его реализовывать? Может быть примерчики есть? Спасибо. Можно и асинхронный интерфейс UART (RS 485 или RS 232) - хороший и простой в реализации. Примеры Объем передаваемых данных какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
essev 0 3 октября, 2010 Опубликовано 3 октября, 2010 · Жалоба вопрос топика возник из защиты прошивки ПЛИС от слямзивания :) http://electronix.ru/forum/index.php?showt...0&start=150 по 32 бита шифрованного потока писать в ПЛИС и обратно возвращать 32 бита шифрованного потока. уарт не хочется по причине более сложной реализации и отладки, как мне кажется т.е., наверное, самым простым и надежным будет передача по SPI с частотой 1 МГц и тактированием МК от ПЛИС? нужно ли будет задавать какие-либо особенности интерфейсных пинов ПЛИС аля делать сигналы LVTTL или кмоп? МК авр вроде кмоп Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 3 октября, 2010 Опубликовано 3 октября, 2010 (изменено) · Жалоба 1. SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе. UART в примитивном исполнении в ПЛИС реализуется очень просто. 2. Подключал напрямую в свое время, но лучше уточнить в DS на конкретные семейства. Изменено 3 октября, 2010 пользователем x736C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба Всем привет. Нужно организовать последовательный двунаправленный интерфейс между ПЛИС и МК (АВР). Частота у ПЛИС = 100 МГц, у МК = 1 МГц. Может быть лучше клок для МК с ПЛИС генерить? Как посоветуете его реализовывать? Может быть примерчики есть? Спасибо. Еще один вариант (правда параллельный): В ПЛИС организовывается двухпортовая память - МК видит ее как внешнюю память (ОЗУ). Таким образом, к памяти может обращаться как ПЛИС так и МК. PS Но тоже простой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба SPI удобен с точки зрения синхронизации потока, впрочем как и UART, который ее не требует вовсе.Что за чушь? :07: UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба Что за чушь? :07: UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС. глупый вопрос: Почему UART называется асинхронным? Простое описание протокола: Принцип работы По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает. Данные передаются пакетами по одному байту (8 бит). Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит. Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита. В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит). Поясните свой ответ, плиз PS не понял Вашего ответа... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rv3dll 0 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба если задача сего чуда шифрование и защита прошивки плис закрытым контроллером, то интерфейс должен быть последовательный самодельный и выполненный программно в МК. тогда его можно сделать с хитрыми таймингами, зашумлениями пауз и прочей приблудой. я делал для защиты именно так. уарт называется асинхронным так как для синхронизации не требуется сопутствующая клоковая последовательность, а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета. внутри пакета синхронизация осуществляется от собственного источника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 5 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета. Подстройка внутренних часов возможна только по перепаду входного импульса. Поэтому идентифицируют стартовый бит по перепаду. Ну а дальше - от стратегии зависит. Например в ДВК 3 стартовым считался уровень нуля в пол стартового бита при перепаде из 1 в 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба уарт называется асинхронным так как для синхронизации не требуется сопутствующая клоковая последовательность, а синхронизация осуществляется по появлению старт бита после паузы большей, чем длина единичного пакета. внутри пакета синхронизация осуществляется от собственного источника. так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты :) PS Как по мне реализация UART равна по сложности реализации SPI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 4 октября, 2010 Опубликовано 4 октября, 2010 (изменено) · Жалоба UART требует двух источников синхронизации, один у передатчика, второй у приемника. Причем отклонение частот этих двух источников тактирования не должно превышать пары процентов. В самом крайнем (худшем) случае до 5%. SPI как синхронный интерфейс не требует второго источника тактирования на стороне приемника (slave), да и более прост для реализации в ПЛИС. Вам уже чуть ниже ответили про асинхронность UART протокола. Я писал (перечитайте) о синхронизации информационного потока. Побитовую синхронизацию при приеме байта данных берет на себя аппаратная часть микроконтроллера при соблюдении, естественно, условий, о которых вы написали. В этом контексте реализацию протокола со стороны ПЛИС по понятной причине не рассматриваю. Повторюсь. Согласен, что SPI тут более предпочтителен с точки зрения удобства реализации и использования. Особенно, если ведущим выступает контроллер. P. S. Что за чушь? :07:Давайте воздерживаться от резкостей, пожалуйста. Не о политике рассуждаем :) rv3dll(lex), данные можно гонять стандартным протоколом, а усилия по изготовления хитрых приблуд направить на реализацию хорошего шифрования. Не согласитесь? Изменено 4 октября, 2010 пользователем x736C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 4 октября, 2010 Опубликовано 4 октября, 2010 · Жалоба так я тоже всегда считал UART асинхронным. Просто rezident ввел семя смуты :)Ну, давайте, попробуйте передать фрейм из 10-20 символов с проверкой на четность или без на скорости 115200, если слейв тактируется от часового кварца (32768Гц). Или пускай даже 1МГц, но обычный RC-генератор на триггере Шмитта в диапазоне питающих напряжений 3В...5В или в диапазоне температур -50°C...+50°C. А потом попытайтесь объяснить, почему ему (слейву или интерфейсу) не нужна синхронизация на обеих сторонах или нужна, но подойдет абы какая. Ведь интерфейс-то асинхронный :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться