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

 
 
> Параллельная шина внутри ПЛИС, можно ли упростить?
ViKo
сообщение Jul 25 2016, 08:59
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Есть внешняя шина, подключенная к микроконтроллеру. Внутри ПЛИС к шине подключено несколько устройств. В ПЛИС они объединяются по "или", не смотря, что сигналы описаны с z-состоянием. Потому что внутри ПЛИС таких буферов нет (экзотику обсуждать не предлагаю). Представим 8 16-битовых устройств, и все по "или" объединить. Много логики отъедается. Кстати, я хочу так и описать эту шину, как она реально создается. Если проще не станет, так хотя бы, понятнее.
Нет ли иного способа прочитать устройства? Например, медленные читать последовательно? Точно, сковать всех одной цепью! rolleyes.gif И по SPI выбросить. А еще как...?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Jul 25 2016, 09:52
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(ViKo @ Jul 25 2016, 15:59) *
Нет ли иного способа прочитать устройства? Например, медленные читать последовательно? Точно, сковать всех одной цепью! rolleyes.gif И по SPI выбросить. А еще как...?

Xilinx -> шина DCR


--------------------
Go to the top of the page
 
+Quote Post
_pv
сообщение Jul 25 2016, 11:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(des00 @ Jul 25 2016, 16:52) *
Xilinx -> шина DCR

daisy chain конечно здорово, но вот если устройств сильно много, частота работы не упрётся во время прохождения через всех подряд?

точнее вопрос даже: как именно это обычно делается в каких-нибудь процессорах когда есть куча memory maped регистров на шине памяти и без z состояния.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jul 25 2016, 13:23
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(_pv @ Jul 25 2016, 14:52) *
daisy chain конечно здорово, но вот если устройств сильно много, частота работы не упрётся во время прохождения через всех подряд?

точнее вопрос даже: как именно это обычно делается в каких-нибудь процессорах когда есть куча memory maped регистров на шине памяти и без z состояния.

В ПЛИС для этой цели есть "регистровый файл", который делается из "памяти"... Берем память с раздельными шинами на чтение и запись или двухпортовку, со стороны логики пишем (читаем), со стороны процессора - читаем (пишем)... Дешифрация памяти - встроенная, объем довольно большой...
Или скажем берем "двухпортовку", по одной стороне используем небольшую часть как регистры, по другой - используем как остальную память...
Или вот так...
У Ксайлинкса есть блоки памяти 16х1 из одной ячейки SRL... 16 таких блочков дадут поле 16х16... У более новых - это 64х1... Думаю что 16 регистров - вполне хватит для начала... И это всего 16 логических ячеек...
И к ним FSM, который из "регистров модулей" переносит информацию в "регистровый файл". Возможно что при записи потребуется несколько тактов. Но уж зато чтение - быстрое...

PS... Просто в этом случае "голову" надо перестроить с ASIC на FPGA... В ASIC там в одном блоке и обработка и регистры... И шин накрутить не проблема...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
_pv
сообщение Jul 25 2016, 14:47
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(iosifk @ Jul 25 2016, 20:23) *
В ПЛИС для этой цели есть "регистровый файл", который делается из "памяти"... Берем память с раздельными шинами на чтение и запись или двухпортовку, со стороны логики пишем (читаем), со стороны процессора - читаем (пишем)... Дешифрация памяти - встроенная, объем довольно большой...
Или скажем берем "двухпортовку", по одной стороне используем небольшую часть как регистры, по другой - используем как остальную память...
Или вот так...
У Ксайлинкса есть блоки памяти 16х1 из одной ячейки SRL... 16 таких блочков дадут поле 16х16... У более новых - это 64х1... Думаю что 16 регистров - вполне хватит для начала... И это всего 16 логических ячеек...

я про, например, регистры различной периферии, которой может быть довольно много, килобайты,
то есть наружу оно должно торчать как регистры, а процессору - как область памяти на общей шине с остальной нормальной памятью.
как тут поможет двух портовая память?
не будут же например два различных порта IO, или какой-нибудь уарт чтобы данные из своего регистра прочитать/записать драться за доступ к второму порту шине памяти которая к ним смотрит.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:39
Рейтинг@Mail.ru


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