Загвоздка с ПЛИС

Здравствуйте уважаемые.
Подскажите мне плз логику работы квартусового LPM_MUX.
вот этого:


Если это мультиплексор(как утверждает даташит) то почему один вход, вход селектора тоже шина… по пойму.
Просто пытаюсь изобразить его в ISE на VHDL, потому как достойного аналога среди имеющихся там символов нету.

С уважением, Евгений.
  • 0
  • 12 июля 2011, 11:10
  • Geban

Комментарии (12)

RSS свернуть / развернуть
По тому что шин дата может быть больше 2 и соответственно вход sel может иметь больше 1-й линии ввода. Вы наверное взяли примитив на прямую по этому он не корректно отображен, его надо настраивать через wizzard.
0
Ммм… да символ взял как был. а где подскажите в ISE этот визард?
0
хз, я в квартусе работаю, правда и там можно настроить вручную, надо открыть опции элементов и прописать настройки и количество портов, но я думаю в ISE есть какой то автопостроитель, либо копаться через контекстное меню примитива.
0
На vhdl типа такого будет (только не помню как там с двумерными массивами)


case (sel) is
	when "00" => result <= data1;
	when "01" => result <= data2;
	when "10" => result <= data3;
	when "11" => result <= data4;
end case;
0
спасибо, я так и думал, но не был уверен. сейчас попробую
0
Ммм… такая конструкция. Этот же мультиплектор. Вход — шина 16 бит, выход — логический сигнал(1 бит) линия sel — 3 бита…
моск пухнет
0
Тогда так
case (sel) is
        when "000" => result <= data(0);
        when "001" => result <= data(1);
        when "010" => result <= data(2);
        when "011" => result <= data(3);
        и так дальше, думаю мысль понятна
end case;


еще можно объявить sel как integer range 0 to 15
и написать так:
result <= data(sel);


в первом примере я имел ввиду что data1, data2… и result это шины с одной определенной разрядностью
0
case (sel) is
        when "000" => result <= data(0);
        when "001" => result <= data(1);
        when "010" => result <= data(2);
        when "011" => result <= data(3);
        when "100" => result <= data(4);
        when "101" => result <= data(5);
        when "110" => result <= data(6);
        when "111" => result <= data(7);
end case;


получается что 3я битами можно адресовать всего 8 линий. А из на входе 16.
Вобщем выглядит это вот так. Мне нужно переделать это из Квартуса в ISE. Но в ISE нету таких мультиплексоров, вот я и пытаюсь понять как они работают что бы изобразить их самому :)
0
Допиши четвертый разряд и сможешь тогда адресовать 16 линий.
0
А вообще в ISE довольное большое количество шаблонов и примеров, нажми лампочку и найти в синтезируемых конструкциях пример мультиплексора.
0
А если совсем сложно то вытащи из мультиплексоров, вот такой мультиплексор.
0
Вы случаем этот MUX не из мегафункций взяли? В квартусе открывается визард, через который можно настроить количество входов, разрядность и т.д.
0
  • avatar
  • NCCat
  • 22 октября 2011, 14:56
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.