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

 
 
> Многовходовый MUX в Спартане, Как его реализовать красивее?
Delsian
сообщение Mar 9 2005, 13:07
Сообщение #1


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

Группа: Свой
Сообщений: 79
Регистрация: 3-02-05
Из: Kiev
Пользователь №: 2 404



На шину данных из FPGA в процессор выдается содержимое различных регистров, это всякие регистры состояний, управления и т.п., т.е. во внутреннюю память они не ложатся. Сейчас это сделано через Case, получился такой себе немаленький мультиплексор, просто пожирающий ячейки FPGA. Хотелось бы как-то сэкономить, вот я и прикидываю, как это красивее описать в VHDL?
Мысль крутится в сторону объединения всех выходов через OR, и неиспользуемые запрещать, чтобы 0 был на выходе. Но при этом надо, чтобы регистры управления продолжали выдавать сигналы... И сэкономлю ли я что-то при этом?

Короче, сумбурно получилось, но возможно кто-то меня понял и знает, как это правильно реализовать?


--------------------
Давайте выпьем за алкоголь - источник и решение всех наших проблем! (с) Г.Симпсон
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dmitry-tomsk
сообщение Mar 9 2005, 13:15
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Delsian @ Mar 9 2005, 16:07)
На шину данных из FPGA в процессор выдается содержимое различных регистров, это всякие регистры состояний, управления и т.п., т.е. во внутреннюю память они не ложатся. Сейчас это сделано через Case, получился такой себе немаленький мультиплексор, просто пожирающий ячейки FPGA. Хотелось бы как-то сэкономить, вот я и прикидываю, как это красивее описать в VHDL?
Мысль крутится в сторону объединения всех выходов через OR, и  неиспользуемые запрещать, чтобы 0  был на выходе. Но при этом надо, чтобы регистры управления продолжали выдавать сигналы... И сэкономлю ли я что-то при этом?

Короче, сумбурно получилось, но возможно кто-то меня понял и знает, как это правильно реализовать?
*

Можно попробовать мультиплексор на tristate логике:

mux_gen : FOR i IN mux_length-1 DOWNTO 0 GENERATE
data_bus <= mux_in(i*8+7 DOWNTO i*8) WHEN sel_bin(i) = '1' ELSE (OTHERS => 'Z');
END GENERATE mux_gen;
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Mar 9 2005, 13:42
Сообщение #3


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

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



Цитата(dmitry-tomsk @ Mar 9 2005, 17:15)
Можно попробовать мультиплексор на tristate логике:


Не указано, какой именно спартан. В третьем спартане AFAIK нет тристабильных буферов внутри. "Вот уроды!"
Вообще если мультеплексор сильно развесистый, то тут уже не о красоте кода приходится думать, а о том как в таймингах шины уместиться.

Если интерфейс синхронный, можно разбить большой мультиплексор на несколько более мелких и запайплайнить это дело, а в проце или контроллере (или что там у вас) немного увеличить latency команды чтения.
Go to the top of the page
 
+Quote Post
belena7
сообщение Mar 17 2005, 10:07
Сообщение #4





Группа: Новичок
Сообщений: 10
Регистрация: 8-03-05
Пользователь №: 3 147



Naskol'ko ya znayu, u Spartana u Altera Cyclon i tonu podobnoe vnutri vse odno net tristate i on etot MUX po LUT rastashit. Dlya timinga lu4she ispol'zovat' megafunction ili CoreGen i flooplaner dlya ego placementa
Go to the top of the page
 
+Quote Post



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

 


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


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