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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Мультиплексор шины на Altera, Может, я что не так делаю?
Вовка_Бызов
сообщение Jun 7 2011, 08:52
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Ситуация - классическая. Процессор от TI (C6455) подключен к внешней шине через контроллер, собранный на основе ПЛИС Cyclone III по параллельной шине EMIFA.

А проблема состоит в том, что общая шина, выходящая на процессор, с появлением очередного внутреннего регистра, становится все медленнее и медленнее. Т.е. - как я понимаю, внутри Cyclone нет трехстабильных шин и схема реализуется как очень большой мультиплексор, быстродействие которого зависит напрямую от кол-ва псевдовыходов. Это я так думаю.

На практике получается, что для чтения данных мне приходится все больше увеличивать длину сигнала READ (OE) с процессора для нормального чтения (в противном случае в читаемых данных появляются артефакты). При начале разработки она составляла 1+1 такт (12нс). Сегодня я уже вынужден поставить 1+3 такта (24нс).

Нет ли какой-то системной ошибки с моей стороны? Нельзя ли как-то описать шину, чтобы ее быстродействие было выше?

Спасибо!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jun 7 2011, 09:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



порезать мультиплексор конвейерами?
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 7 2011, 09:14
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(vadimuzzz @ Jun 7 2011, 13:00) *
порезать мультиплексор конвейерами?

Тактируемый выход? Вряд ли его быстродействие будет выше 20нс..
Или я что-то не так понял?

Дело в том, что этот самый мультиплексор создает компилятор сам, без моего указания. Я лишь описал шину с третьим состоянием, выходящую наружу (на процессор) - inout std_bit_vector.
А дальше - детектируя входящий адрес, создаю кучу внутренних CS-ов, умножаю их на сигнал OE (output enable) и по результату уже на внутреннюю шину вывожу требуемые данные.

А как это превращается в мультиплексор - только квартус знает sm.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jun 7 2011, 09:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



еще и асинхронный?! ужас
Цитата(Вовка_Бызов @ Jun 7 2011, 16:14) *
А как это превращается в мультиплексор - только квартус знает sm.gif

можете посмотреть в чмп-планнере
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 7 2011, 09:30
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Вовка_Бызов
у данного чипа есть выход клока EMIF-а наружу. Быстрей него работать не будет (если интересно как оно там всё колбасит - читайте SPRU/DS). Потому используйте его и будет вам счастие laughing.gif
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 7 2011, 09:44
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(vadimuzzz @ Jun 7 2011, 13:24) *
еще и асинхронный?! ужас

можете посмотреть в чмп-планнере

А какой смысл в синхронном обмене при работе с регистрами? У меня нет потоковых данных. Шина данных - 32 разряда.

А вот на счет чмп-планнера - я с квартусом и его примочками еще не совсем еще освоился.. Пытался щас планнер запустить - ничего не понял crying.gif
Он там просит настроить проект в TimeQuest Timing Analizer. Но я так и не разобрался, что там надо описывать и как. Описание этого анализатора я нашел только на англицком и толком в нем не разобрался.. И - по этой причине - наблюдаю кучу ворнингов на счет отсутствия соответствующих данных..

Может - как раз и в этом причина того, что квартус разводит без учета быстродействия, которое я ему должен как-то указать...

Цитата(Kuzmi4 @ Jun 7 2011, 13:30) *
у данного чипа есть выход клока EMIF-а наружу. Быстрей него работать не будет (если интересно как оно там всё колбасит - читайте SPRU/DS). Потому используйте его и будет вам счастие laughing.gif

В курсе. Там у меня 166 МГц. Сам же и настроил. дело в другом. Я на осциллографе вижу, как на шине данных информация появляется с задержкой по отношению к сигналу OE. И задержка существенная (~10..12нс).
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jun 7 2011, 09:49
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Вовка_Бызов @ Jun 7 2011, 16:44) *
А какой смысл в синхронном обмене при работе с регистрами? У меня нет потоковых данных. Шина данных - 32 разряда.

смысл есть в возможности делать конвейеры. это даст выигрыш при чтении пачками. при одиночном доступе будет проигрыш из-за латентности
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 7 2011, 09:49
Сообщение #8


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

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



если читать более одного регистра за раз : синхронный режим + read_latency
Цитата
Описание этого анализатора я нашел только на англицком и толком в нем не разобрался..

не может быть biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Jun 7 2011, 10:15
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Мне кажется, что стоит рассмотреть работу EMIF в синхронном режиме и регистр на выходе этого дерева мультиплексоров. Все входные сигналы EMIF тоже синхронизировать. Задержка чтения получится 2 такта.

После этого будет проблема с OE, он медленно идет от TMS, потом через ПЛИС и до буферов. Можно в таком случае попробовать его не использовать, а эмулировать внутри ПЛИС из чипселекта и сигнала чтения/записи.

Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 7 2011, 10:49
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(Sergey'F @ Jun 7 2011, 14:15) *
Мне кажется, что стоит рассмотреть работу EMIF в синхронном режиме и регистр на выходе этого дерева мультиплексоров. Все входные сигналы EMIF тоже синхронизировать. Задержка чтения получится 2 такта.

После этого будет проблема с OE, он медленно идет от TMS, потом через ПЛИС и до буферов. Можно в таком случае попробовать его не использовать, а эмулировать внутри ПЛИС из чипселекта и сигнала чтения/записи.

А сигнал чтения/записи - это кто? Я до сих пор считал, что HaWE - это сигнал записи, а HaOE - сигнал чтения. Оба идут достаточно медленно. Можно, конечно, разнести CS-ы на читаемые и записываемые.. Но тогда - зачем синхронный режим, если и так получается достаточно быстро. Замечу еще раз - у меня достаточно редко читаются регистры.. И уж точно, что у меня нет потока данных из них. А синхронный режим в первую очередь удобен, когда есть постоянный обмен.
Проблема в том, что расширяя OE, я фактически останавливаю на это время процессор.. Пока думаем над ПДП.

А с TimeQust - ну не въезжаю я в логику построения SDC файла. Что туда пихать надо, когда оно берется, когда запускать Analizer.. Те "для чайников" описания, что в гугле лежат - это, может для девочки-третьекурсницы полезно - чтобы не въезжая ответить что-то преподу.. А вот толкового описания сути я так и не нашел sad.gif
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Jun 7 2011, 11:09
Сообщение #11


Знающий
****

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



Объясните мне, граждане...
Как такие вопросы можно обсуждать без (блок-)схемы и (желательно)временных диаграмм?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 7 2011, 11:43
Сообщение #12


Гуру
******

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



Цитата(Вовка_Бызов @ Jun 7 2011, 12:52) *
Ситуация - классическая. Процессор от TI (C6455) подключен к внешней шине через контроллер, собранный на основе ПЛИС Cyclone III по параллельной шине EMIFA.

Нет ли какой-то системной ошибки с моей стороны? Нельзя ли как-то описать шину, чтобы ее быстродействие было выше?

На самом деле, не все так...
1. Синхронный режим нужен для того, чтобы не получить метастабильность... Даже если чтение идет редко, то все равно выигрыш будет. Т.к. при асинхронном чтении один такт всегда надо дать на запас...
2. Попробуйте сделать косвенную адресацию. Из процессора запишите "Адрес" в ПЛИС. И потом читайте "Данные". При этом сделайте так, чтобы получив "Адрес" командоаппарат в ПЛИСе сам записал в буфер обмена нужный пакет. И получив Флаг, можно читать все из ФИФО, не делая дешифрацию. Да, появится задержка. Но ведь можно и команду записи Адреса сдвинуть ВПЕРЕД на нужное количество тактов...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 7 2011, 11:44
Сообщение #13


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Вовка_Бызов @ Jun 7 2011, 14:49) *
А синхронный режим в первую очередь удобен, когда есть постоянный обмен.
Синхронный режим удобнее тем, что его проще обконстрейнить. Проще же ведь написать один констрейн на клок, чем кучу констрейнов на асинхронную логику?
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 7 2011, 12:45
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(iosifk @ Jun 7 2011, 15:43) *
1. Синхронный режим нужен для того, чтобы не получить метастабильность...

Метастабильности, по идее, не должно быть исходя из того, что все процессы, относящиеся к вводу/выводу со стороны процессора, тактируются сигналом AECLKOUT (тактовая частота EMIFA). Данные извлекаются из регистров, для которых сигналы записи есть производная от указанного клока.
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 7 2011, 16:48
Сообщение #15


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

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



Цитата(Вовка_Бызов @ Jun 7 2011, 05:49) *
Те "для чайников" описания, что в гугле лежат - это, может для девочки-третьекурсницы полезно - чтобы не въезжая ответить что-то преподу..

вы первый с таким отзывом о моих статьях wacko.gif


Цитата(Koluchiy @ Jun 7 2011, 06:09) *
Как такие вопросы можно обсуждать без (блок-)схемы и (желательно)временных диаграмм?

что там обсуждать то? EMIFA обычная процессорная шина с двунаправленной шиной данных. Асинхронный режим прост, но не удобен. Куда лучше взять синхронный с латентностью.


--------------------
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Jun 7 2011, 17:06
Сообщение #16


Знающий
****

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



Ну я как бы в курсе, что такое EMIF sm.gif.
Дело в том, что ТС может к ней по-разному подключать Альтеру, и к Альтере по-разному подключать неуказанную периферию в неизвестном количестве...
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 7 2011, 17:22
Сообщение #17


Лентяй
******

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



А вот это не поможет отцу российской демократии : https://www.altera.com/support/software/dow...if/dnl-emif.jsp?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 8 2011, 11:41
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(des00 @ Jun 7 2011, 20:48) *
вы первый с таким отзывом о моих статьях wacko.gif

Ну что я могу сделать. Для меня эталоном доведения информации до пользователя всегда были книги Кернигана и Ричи.
Просто читая ваши (как оказалось) wink.gif заметки, я так и не понял того, что надо квартусу. А самое главное - зачем. Вполне возможно, что если бы я начал читать литературу по таймингам начиная с макса - я бы все понял. Но так сложилось, что я всего этого не читал. Хотя, возможно, готов.

Т.е. - с моей колокольни - не хватило разжевывания "для чего" с присутствием описания "как". Потому я и сказал, что это скорее всего для студентов sm.gif Без какого-либо желания обидеть автора. Которому в любом случае - респект (как и всем авторам, пишущим для нашего брата).


Цитата(des00 @ Jun 7 2011, 20:48) *
что там обсуждать то? EMIFA обычная процессорная шина с двунаправленной шиной данных. Асинхронный режим прост, но не удобен. Куда лучше взять синхронный с латентностью.

Может быть. В любом случае - я могу попробовать в следующей итерации, т.к. все необходимое в виде сигналов на ПЛИСину приходит. Просто изначально в концепции был асинхронный обмен, как традиционный для нашей конторы. Не исключаю, что ошибался.

В общем - не попробовав, не узнаешь.. Обещаю к осени попробовать wink.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 8 2011, 13:16
Сообщение #19


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

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



Синхронная шина будет выдавать данные еще медленнее, чем асинхронная, для одиночной пересылки.
Лично я делаю шину связи с микроконтроллером STM32 асинхронную. Мультиплексирую адрес и данные.
Хотя, при частотах ПЛИС и МК, отличающихся почти в 4 раза, и сигналах шины микроконтроллера, занимающих не один такт, всё равно - синхронная шина, асинхронная...
(Живого железа пока нет. Ждет прошивки. В ModelSim'е что-то показывает. Подбираюсь к констрейнам.)
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 9 2011, 06:33
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Цитата(ViKo @ Jun 8 2011, 17:16) *
(Живого железа пока нет. Ждет прошивки. В ModelSim'е что-то показывает. Подбираюсь к констрейнам.)

А можно, если не трудно, попросить ссылочку на литературу, где есть токовое описание назначения констрейнов? Хочется все же разобраться...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 9 2011, 07:29
Сообщение #21


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

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



Цитата(Вовка_Бызов @ Jun 9 2011, 09:33) *
А можно, если не трудно, попросить ссылочку на литературу, где есть токовое описание назначения констрейнов? Хочется все же разобраться...

На русском, кроме блога des00, не встречал.
Вот две ссылки на английском.

http://www.altera.com/customertraining/web...ustomertraining

http://www.alterawiki.com/wiki/File:TimeQuest_User_Guide.pdf

Еще добавлю - перевод книги по Quartus и др.
http://www.naliwator.narod.ru
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 9 2011, 07:56
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Вовка_Бызов
Мне вот этот документик тоже понравился.
А вот это вроде как базис для понимания Timing Analysis, особенно в начале документа..
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение Jun 9 2011, 08:42
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Спасибо огромное. Уже сел читать.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:22
Рейтинг@Mail.ru


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