|
последовательный интерфейс, между ПЛИС и МК |
|
|
|
 |
Ответов
|
Sep 11 2012, 08:09
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(skilful @ Sep 11 2012, 10:41)  а как мне "разделенные" регистры связать? да и не сильно это усложнит логику?
для упрощения объяснения задачи -- пусть будет регистр внутри ПЛИС счетным. То есть ПЛИС инкрементирует его постоянно, но может и записать начальное значение.
МК тоже может записать начальное значение, а может и просто считать. В деталях проблема не ясна но отвечу на что понял... 1) Вы работаете с SPI интерфейсом. Это значит что один конец мастер, а другой слейв. Сделайте МК мастером. Это значит что только он инициирует передачу данных. 2) Как сделать доступ в один и тот-же регистр и со стороны МК и со стороны ПЛИС по записи. -Придумайте протокол обмена по SPI: код команды, адрес, данные. -Когда МК даёт команду записи в регист, она принимается SPI декодером команд (в виде автомата) -Декодер команды останавливает ПЛИС и меняет регистр -Декодер команды перезапускает ПЛИС с новым значением 3) как сказать МК, что ПЛИС сменила значение регистра - по прерыванию - по SPI. В этом случае надо "завести" регистр состояния ПЛИС и читать его переодически командой SPI. Например, ПЛИС взводит бит состояния в 1 при последней записи в регистр, а при чтении регистра состояния этот бит автоматически обнуляется. 4) что от чего тактировать.... - проще всего SPI склок выдавать из МК (задайте нужную конфигурацию МК SPI) - ПЛИС должна иметь свой генератор клока выше частоты SPI клока - Все входные SPI сигналы в ПЛИС привязать к внутреннему клоку через ресинхронизаторы (2 тригера) - анализируя уровни SPI входов при помощи соответствующего автомата - декодировать SPI поток данных. Вот как-то так... --------------------- Есчё добавлю... SPI понятие розтяжимое.... Фактически надо говорить о СТЕКЕ протоколов. В этом случае SPI - это только описание доступа к каналу передачи (клок, данные) - канальный уровень Дальше идёт формат команды SPI (код команды, адрес, данные) Дальше интерпретатор команд (напр. чтение из регистра 1 выполняется со сбросом бита состояния, а регистра 2 без таких-же действий) - прикладной уровень
|
|
|
|
|
Sep 11 2012, 08:19
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069

|
Цитата(Torpeda @ Sep 11 2012, 12:09)  - Все входные SPI сигналы в ПЛИС привязать к внутреннему клоку через ресинхронизаторы (2 тригера) Эмм... Зачем синхронный интерфейс превращать в асинхронный?
|
|
|
|
|
Sep 11 2012, 08:25
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(troiden @ Sep 11 2012, 11:19)  Эмм... Зачем синхронный интерфейс превращать в асинхронный? синхронность понятие относительное.... У ПЛИС свой клок а у МК свой - всё асинхронно.
|
|
|
|
|
Sep 11 2012, 08:31
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069

|
Цитата(Torpeda @ Sep 11 2012, 12:25)  синхронность понятие относительное.... У ПЛИС свой клок а у МК свой - всё асинхронно. SPI подразумевает передачу наряду с данными тактового сигнала - на нем и должен работать сам приемопередатчик SPI. А все манипуляции с пересинхронизацией должны выполняться уже после, на уровне внутренних шин ПЛИСа.
|
|
|
|
|
Sep 11 2012, 08:49
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(troiden @ Sep 11 2012, 11:31)  SPI подразумевает передачу наряду с данными тактового сигнала - на нем и должен работать сам приемопередатчик SPI. А все манипуляции с пересинхронизацией должны выполняться уже после, на уровне внутренних шин ПЛИСа. ОК. Вижу Вы любитель проблем  На канальном уровне всё просто - клок и данные. Захлопнул их в тригер и нет проблем... Предположим также что вы извернулись, и вам хватило тактов SPI фрейма на то, чтобы принять команду и декодировать её. И даже вы смогли правильно обконстрейнить всё для STA (и даже неизвестную задержку линии от МК к ПЛИС смогли правильно учесть...) Это не всем удаётся, ибо количество клоков ограничено числом бит в фрейме. Некоторые начинают тригера с negedge клоком использовать и прочую асинхронщину (типа заводить логику на ресеты...), а про тайминг констрейны в этом случае я вообще молчу..... Вот вам и асинхронщина началась. А дальше наверно надо и команду интерпретировать.... ПЛИС то от своего генератора работает и асинхронна к вашему SPI, который повешен на внешний клок. Надо как-то клок домены суметь вязывать.... --------- Поэтому-то я и рекомендую начинающим дурью не маяться - привязать все SPI сигналы к ПЛИС клоку и делать тревиальный синхронный цифровой дизайн. Цитата(skilful @ Sep 11 2012, 11:43)  я примерно тоже самое сделал -- только с фифошками. вопрос встал -- как сообщить микроконтроллеру, что запрошенные данные считаны и их можно забирать из фифо чтения. вы написали, что делать прерывание. но получается сигнал прерывания (фифо чтения не пустое) будет привязан к клоку ПЛИС, а не МК. То есть мне нужно после получения прерывания выдержать паузу на МК и потом генерить клок от МК к ПЛИС, чтобы забирать данные из фифо чтения? Зачем фифошки? Ну если очень хочется.... " сигнал прерывания (фифо чтения не пустое) будет привязан к клоку ПЛИС" - очень хорошо. МК предполагает что все прерывания вообще асинхронны (кнопку-то к прерыванию подключать вас не смущает?). "То есть мне нужно после получения прерывания выдержать паузу на МК и потом генерить клок от МК к ПЛИС, чтобы забирать данные из фифо чтения" - сразу забирайте. Зачем вам пауза? ПЛИС сначала фиксирует данные в ФИФО, а потом генерит прерывание.
|
|
|
|
|
Sep 11 2012, 09:01
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 19-02-09
Из: Москва
Пользователь №: 45 069

|
Попорядку  Цитата(Torpeda @ Sep 11 2012, 12:44)  Предположим также что вы извернулись, и вам хватило тактов SPI фрейма на то, чтобы принять команду и декодировать её. Простота - наше всё. Во фрейме только один признак команды - чтение или запись. Большего не надо. Цитата(Torpeda @ Sep 11 2012, 12:44)  И даже вы смогли правильно обконстрейнить всё для STA (и даже неизвестную задержку линии от МК к ПЛИС смогли правильно учесть...) Задержки всех линий в первом приближении одинаковы, если это не так и разбежка в десяток наносекунд - надо карать трассировщика. Для связи МК -> ПЛИС никаких проблем, для обратной линии ПЛИС -> МК проблема и в асинхронном, и в синхронном дизайне одна и та же и никуда не пропадает. Цитата(Torpeda @ Sep 11 2012, 12:44)  А дальше наверно надо и команду интерпретировать.... Фрейм из 5 байт: 1 бит - признак команды, 15 бит - адрес регистра ПЛИСа, 3 байта - на данные чтения-записи. Интерпретируется без проблем. Цитата(Torpeda @ Sep 11 2012, 12:44)  ПЛИС то от своего генератора работает и асинхронна к вашему SPI, который повешен на внешний клок. Надо как-то клок домены суметь вязывать.... У нас есть 40 тактов SPI-интерфейса между приходом двух посылок, за которые надо успеть пересинхронизироваться и провести запись данных в регистр. С чтением - веселее, но тоже просто решается. Цитата(Torpeda @ Sep 11 2012, 12:44)  Поэтому-то я и рекомендую начинающим дурью не маяться - привязать все SPI сигналы к ПЛИС клоку и делать тревиальный синхронный цифровой дизайн. Этот подход жизнеспособен только на малых скоростях. Придет к вам SPI на 100 МГц - и хана.
|
|
|
|
|
Sep 11 2012, 09:12
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(troiden @ Sep 11 2012, 12:01)  У нас есть 40 тактов SPI-интерфейса между приходом двух посылок, за которые надо успеть пересинхронизироваться и провести запись данных в регистр. С чтением - веселее, но тоже просто решается. Вот это как-то не очень понятно. О каких 40 тактах речь? даём команду записи. Последний бит приходит на 40-м клоке. Где есчё 40 беруться для интерпретации? Или вы предлагаете передавать фрейм из 40 бит + есчё дофига тактов клока на его интерпретацию? Цитата(troiden @ Sep 11 2012, 12:01)  Этот подход жизнеспособен только на малых скоростях. Придет к вам SPI на 100 МГц - и хана. Вы правы. 1) Строить SPI при тактировании от внешнего клока надо только тогда, когда тактовый клок со стороны ПЛИС почти равен скорости SPI клока или меньше. 2) Правда на 100 МГц хана наступает и в вашем случае - при задани коректных STA констрейнов (как учесть например, что задержка на плате меняется от мин значения к макс, какие эти значения получаються, итд...) Да и связать асинхронные клок домены (SPI - остальная часть ПЛИС) тоже непросто.....
|
|
|
|
Сообщений в этой теме
skilful последовательный интерфейс Sep 11 2012, 06:44 Lmx2315 Вы по SPI хотите связать мк и плис, значит у вас о... Sep 11 2012, 06:55 skilful для примера, допустим, внутри ПЛИС 10 регистров по... Sep 11 2012, 07:22 Lmx2315 ..разделите регистры , пусть плис пишет в свои а м... Sep 11 2012, 07:26 stu правильно по поводу: "надо опрашивать состоян... Sep 11 2012, 07:26 Lmx2315 пусть ПЛИС пишет в счётные регистры, а МК их считы... Sep 11 2012, 07:54        troiden Цитата(Torpeda @ Sep 11 2012, 13:12) Вот ... Sep 11 2012, 09:40  skilful Цитата(Torpeda @ Sep 11 2012, 11:09) В де... Sep 11 2012, 08:43 skilful вот чтобы всяких пересинхронизаций не было -- и ду... Sep 11 2012, 09:13 Torpeda Цитата(skilful @ Sep 11 2012, 12:13) вот ... Sep 11 2012, 11:47  skilful Цитата(Torpeda @ Sep 11 2012, 14:47) 1) д... Sep 11 2012, 12:28  troiden Цитата(Torpeda @ Sep 11 2012, 15:47) Т.е.... Sep 11 2012, 12:41   Torpeda Цитата(troiden @ Sep 11 2012, 15:41) В сл... Sep 11 2012, 13:41    troiden Цитата(Torpeda @ Sep 11 2012, 17:41) 1) ... Sep 11 2012, 14:13     Torpeda Цитата(troiden @ Sep 11 2012, 17:13) А эт... Sep 11 2012, 14:49      troiden Цитата(Torpeda @ Sep 11 2012, 18:49) нуда... Sep 11 2012, 14:58       Александр77 Цитата(troiden @ Sep 11 2012, 18:58) Посл... Sep 11 2012, 18:28        troiden Цитата(Александр77 @ Sep 11 2012, 22:28) ... Sep 11 2012, 19:28 skilful Просимулировал в МоделСиме двухклоковую фифо (LPM_... Sep 11 2012, 10:05 skilful исключаться должно программно. МК набил фифо запис... Sep 11 2012, 13:52 Torpeda Цитата(skilful @ Sep 11 2012, 16:52) искл... Sep 11 2012, 14:33 Alexey K Вопрос.
Зачем один и тот же регистр делать доступ... Sep 11 2012, 14:00 skilful там я выше приводил пример -- если он в роли тайме... Sep 11 2012, 14:14 troiden Цитата(skilful @ Sep 11 2012, 18:14) там ... Sep 11 2012, 14:17 skilful Так я смотрю триггера 3 ?
// sync SCK to the FPGA... Sep 11 2012, 14:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|