|
|
  |
Выбор схемы приоритетного шифратора, Красивый не собирается |
|
|
|
Jan 30 2013, 18:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Решаю задачу: есть матрица N*N Любой из N передатчиков может хотеть передать свое сообщение любому из N приемников. N = 5 Каждый передатчик имеет свое собственное фифо, количество данных в котором в каждый момент времени известно. Разрядность шины количества данных в фифо iFifoRdDCntBus = 10 (стандартное фифо Xilinx 2к) Реализую full mesh коммутатор т.е. в какой то момент времени может одновременно идти N передач. Старая схема имела стандартный приоритетный шифратор с вращающимися приоритетами, и все отлично собиралось. Но она не совсем корректна, передача может быть отдана не тому, у кого больше данных, структура потоков в системе определена, и фиксирована, и в определенных направлениях текут основные потоки, в то время как в других потоки очень малы. Поэтому схема с вращающимися приорететами некорректна - передача может быть отдана тому, кто меньше в ней нуждается. Собрал новую схему, в которой наивысшим приорететом обладает наиболее загруженный передатчик, из всех, кто претендует на данный канал. В модели все замечательно, но при попытке синтеза времянка не выполняется. Коммутатор работает на 85 Мгц, кристалл - Virtex2. Скриншот приложил, Ise пишет 24 уровня логики, 19 нан лучшее время. Чешу голову, как бы собраться чтоб все было и ничего за ето не было. Какие еще шифраторы бывают ? Схему со строго фиксированными приорететами собрать нельзя, они все таки зависят от конкретной сборки системы, полагаю, проблема в 10- разрядных компараторах, и дурацкой перекрестной адресации - любой может обратиться к любому, поетому получается сложно. Help
Эскизы прикрепленных изображений
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Jan 30 2013, 21:48
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(a123-flex @ Jan 30 2013, 20:53)  Решаю задачу:
есть матрица N*N
Любой из N передатчиков может хотеть передать свое сообщение любому из N приемников. N = 5
Каждый передатчик имеет свое собственное фифо, количество данных в котором в каждый момент времени известно. Разрядность шины количества данных в фифо iFifoRdDCntBus = 10 (стандартное фифо Xilinx 2к) Реализую full mesh коммутатор т.е. в какой то момент времени может одновременно идти N передач.
Старая схема имела стандартный приоритетный шифратор с вращающимися приоритетами, и все отлично собиралось. Но она не совсем корректна, передача может быть отдана не тому, у кого больше данных, структура потоков в системе определена, и фиксирована, и в определенных направлениях текут основные потоки, в то время как в других потоки очень малы. Поэтому схема с вращающимися приорететами некорректна - передача может быть отдана тому, кто меньше в ней нуждается.
Собрал новую схему, в которой наивысшим приорететом обладает наиболее загруженный передатчик, из всех, кто претендует на данный канал. В модели все замечательно, но при попытке синтеза времянка не выполняется. Коммутатор работает на 85 Мгц, кристалл - Virtex2.
Скриншот приложил, Ise пишет 24 уровня логики, 19 нан лучшее время.
Чешу голову, как бы собраться чтоб все было и ничего за ето не было. Какие еще шифраторы бывают ? Схему со строго фиксированными приорететами собрать нельзя, они все таки зависят от конкретной сборки системы, полагаю, проблема в 10- разрядных компараторах, и дурацкой перекрестной адресации - любой может обратиться к любому, поетому получается сложно. Help в ссылках возможны будут для Вас новые идеи/алгоритмы для реализации может это подойдетпопробуйте запросить вот эту статейку
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jan 31 2013, 10:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Цитата(Timmy @ Jan 31 2013, 11:06)  Используйте конвейер, в первые несколько ступеней можно положить компараторы, на выходе получить вектор из пяти трёхбитовых чисел, описывающих приоритет каждого передатчика. Этим вектором будут пользоваться все приёмники. И ещё одну ступень конвейера для выбора передатчика к каждому приёмнику(предполагается, что каждый передатчик выставляет пять бит запроса на передачу для каждого приёмника), тут требуется три слоя логики, частота должна получиться около 150МГц. Идея неплоха. Возникает лишь вопрос, как бороться с ситуацией, когда в конце передачи в конвейере хранится для отработавшего передатчика число слов = 2, а в реальности там уже ничего нет. Он получит грант, а передавать будет нечего) К тому же, общий приоритет, ето неплохо. Но в конкретный приемник хотят попасть не все, а лишь некоторые передатчики. Мда решено. огромное спасибо, комбинирование идей и дает нужный результат. Я просто придумал, как сделать преобразование: число данных -> приоритет. таким образом компараторы становятся 3 разрядными, плюс общий механизм приоритетов - и схема существенно упростится. Кстати вчера вяснилась интересная вещь. Я синтезирую в Syn есно, и 9.6.2 построил схему с 24 уровнями, а 2011.9 развел тот же проект без проблем со времянкой. Ето еще более интересно тем, что на других проектах, когда я сравнивал эти синтезаторы, 9.6.2. имел преимущество во времянке и плотности упаковки не менее 5%.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Jan 31 2013, 11:13
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(a123-flex @ Jan 31 2013, 14:44)  Идея неплоха. Возникает лишь вопрос, как бороться с ситуацией, когда в конце передачи в конвейере хранится для отработавшего передатчика число слов = 2, а в реальности там уже ничего нет. Он получит грант, а передавать будет нечего) К тому же, общий приоритет, ето неплохо. Но в конкретный приемник хотят попасть не все, а лишь некоторые передатчики. Конвейер я предполагаю только для предварительного вычисления вектора приоритетов, гранты раздаются уже после того в одном цикле. Запросы на передачу не обязательно конвейеризовать. Кроме того, даже получение гранта на передачу при отсутствии данных не является проблемой - можно сразу завершить транзакцию, ничего не передавая, всё равно других срочных данных от других передатчиков для этого приёмника нет. Каждый приёмник имеет своего персонального арбитра, но входными данными для арбитров являются не исходные 10 битовые числа, а обработанные и отсортированные трёхбитовые, обеспечивающие тривиальный алгоритм арбитража.
|
|
|
|
|
Jan 31 2013, 11:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Цитата(Timmy @ Jan 31 2013, 14:13)  Конвейер я предполагаю только для предварительного вычисления вектора приоритетов, гранты раздаются уже после того в одном цикле. Запросы на передачу не обязательно конвейеризовать. Кроме того, даже получение гранта на передачу при отсутствии данных не является проблемой - можно сразу завершить транзакцию, ничего не передавая, всё равно других срочных данных от других передатчиков для этого приёмника нет.
Каждый приёмник имеет своего персонального арбитра, но входными данными для арбитров являются не исходные 10 битовые числа, а обработанные и отсортированные трёхбитовые, обеспечивающие тривиальный алгоритм арбитража. Я Вас понял. Проблема в том, что режим транзакций нулевой длины я не тестировал. Переход от 10 разрядной кода длины буфера, к 3 разрядному коду можно сделать более дешевым способом и еще на этапе формирования запроса к арбитру - я знаю о структуре данных, текущих в системе. Эта дополнительная информация все упрощает.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Jan 31 2013, 11:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Цитата(Timmy @ Jan 31 2013, 14:38)  Причём тут не просто 3-х разрядный код, а ещё и сортировка другая, индекс элемента в векторе кодов соответствует приоритету, а сам код - индексу передатчика, которому этот приоритет назначен. Именно такая структура максимально упрощает арбитраж. Ок. Понял. Спасибо. Получается лишь, что тогда исчезает информация о передатчиках с равными приоритетами ? Или, иначе говоря, механизм сортировки, и определяет приоритет среди равных ?
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|