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

 
 
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

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

 


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


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