Я программирую мультиплеер 32: 8 в vhdl. Задача основана на вопросе экзамена, который, очевидно, может быть интерпретирован несколькими способами. Первоначальная задача состояла в том, чтобы: запрограммировать мультиплеер 32: 8, используя «с выбором когда» и «если тогда еще». Я не понял, как будет работать мультиплекс 32: 8, поэтому я не знал, с чего начать, но благодаря вам, ребята, я решил, что буду программировать его как 4: 1 мультиплексор, проходящий 4 группы по 8 бит.Как работает мультиплексор 32: 8?
Это то, что я получил:
library ieee;
use ieee.std_logic_1164.all;
entity mux_using_with is
port (
input :in std_logic_vector (31 downto 0);
sel :in std_logic_vector (1 downto 0);
mux_out :out std_logic_vector (7 downto 0));
end entity;
architecture behavior of mux_using_with is
begin
with (sel) select
mux_out <= input(7 downto 0) when '00',
input(15 downto 8) when '01',
input(23 downto 16) when '10',
input(31 downto 24) when others;
end architecture;
И если для версии:
library ieee;
use ieee.std_logic_1164.all;
entity mux_using_if is
port (
input :in std_logic_vector (31 downto 0);
sel :in std_logic_vector (1 downto 0);
mux_out :out std_logic_vector (7 downto 0));
end entity;
architecture behavior of mux_using_if is
begin
MUX:
process (sel, input) begin
if (sel = '00') then
mux_out <= input(7 downto 0);
elsif (sel = '00') then
mux_out <= input(15 downto 8);
elsif (sel = '00') then
mux_out <= input(23 downto 16);
else
mux_out <= input(31 downto 24);;
end if;
end process;
end architecture;
ли я сделал какие-либо очевидные ошибки?
Возможный дубликат [Напишите код VHDL для реализации мультика 32: 8] (http://stackoverflow.com/questions/31783362/write-a-vhdl-code-to-implement-a-328-mux) – Peut22
Вы на правильном пути. Если у вас есть 32 бита ввода и 2 бита выбора, у вас есть мультиплексор 4: 1 (x8). Сколько выходных бит? – user1155120
Также обратите внимание, что 'when '0'' должно быть, когда «00» (длина sel равно 2), и оператор select должен покрывать все возможные значения select (это эквивалент - это case case), который, если вы собираетесь синтезировать не нужно ничего делать (используя выбор «другие»). Версия инструкции if не требуется. – user1155120