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

mux<= in0 whensel = ‘0’ elsein1;

 

В приведенном примере описан мультиплексор «2-в-1», который имеет, как следует из названия, два входа. Для того, чтобы выбрать требуемый вход, достаточно однобитного сигнала-селектора, поэтому порт sel является однобитным. Вообще, n-разрядный селектор достаточен для мультиплексора с 2n входами.

Мультиплексируемые входы не обязаны быть одноразрядными. В показанном примере нет никаких сведений о разрядности сигналов in0, in0 и mux, которая в действительности может быть любой.

Мультиплексоры с большим числом входов можно реализовать на базе процедурного блока.

Вариант 1:

process(sel)

begin

casesel is

when “00” => q <= a;

when “00” => q <= b;

when “00” => q <= c;

when “00” => q <= d;

when others => q <= ‘x’;

end case;

end

 

Вариант 2:

withsel select

 q <= a when “00”,

     b when “01”,

     c when “10”,

     d when “11”,

     ‘x’ whenothers;

 

Обратите внимание, что в приведенных фрагментах описан и нереализуемый в аппаратуре вариант, когда значение селектора не равно ни одной из допустимых двоичных комбинаций. В этом случае на выход отправляется значение X («неизвестно»). Это делается для того, чтобы при неполно заданной модели входных сигналов (т.е. когда sel = “UU”, Undefined) выход мультиплексора не принимал одного из значений по умолчанию. Например, можно было включить последний вариант при sel = “11” в ветку обработки по умолчанию, но тогда при моделировании мультиплексор давал бы на выходе сигнал d при отсутствии правильно заданной модели сигнала-селектора.

Вариант с использованием case (with … select) предпочтительнее использования вложенных операторов if/else, поскольку, как и в случае с арифметическими операциями, САПР ПЛИС имеет возможность использовать шаблоны проектирования, дающие оптимальные решения для мультиплексоров. Дополнительными ресурсами логических ячеек в этом случае являются их мультиплексоры – F5 и F6 дляПЛИС на базе 4-входовых логических генераторов (Spartan-3, Virtex-4) и F7, F8 для ПЛИС на базе 6-входовых логических генераторов (Spartan-6, Virtex-5, Virtex-6, серия 7).

 = Перейти к содержанию =