VHDL
Descrever em VHDL e simular no ModelSim uma entidade com dois vetores de entrada (S com 2 bits e D com 4 bits) e um bit de saída (Y) e sua arquitetura, que implemente um multiplexador de 4 para 1, descrito pela função lógica abaixo.
Y = D0 ⋅ ~S1 ⋅ ~S0 + D1 ⋅ ~S1 ⋅ S0 + D2 ⋅ S1 ⋅ ~S0 + D3 ⋅ S1 ⋅ S0
Já a função lógica do multiplexador 4 x 1 tem 4 entradas de dados (D0, D1, D2, D3),uma saída Y e um seletor S de 2 bits (S0 e S1). As entradas de seleção (S0 e S1) determinam qual dessas entradas de dados será observada na saída Y.
Soluções para a tarefa
Vamos ver como fica o código e, posteriormente, faço alguns comentários sobre ele.
Comentários:
--> As primeiras linhas foram reservadas para informar a utilização da biblioteca IEEE e dos recursos inclusos no padrão
1164.
--> No bloco "entity", declaramos todas entradas e saídas do circuito e quantos bits cada um possui. Note que, no caso de haver mais de um bit, declaramos como um vetor de bits. É importante ressaltar também que, o nome dado à entity deve ser igual ao do projeto, já que, dependendo do software utilizado, podem surgir erros na montagem e simulação do projeto.
--> No bloco "architecture", vamos tratar do comportamento do circuito, isto é, de que modo e o que ele apresentará na sua saída. Aqui o exercício nos dá a expressão booleana, assim basta traduzirmos para o VHDL.
--> É preciso ficar atento aos parêntesis e ponto e vírgulas no código, visto que são fontes de erro comuns.
A simulação deverá gerar um diagrama de formas de onda semelhante ao que é apresentado na figura anexada à resolução.
Fugindo agora um pouco do que é solicitado na tarefa, vamos apresentar mais uma forma de implementar o multiplexador em VHDL. Abaixo, utilizamos a estrutura when/else para definir o comportamento do circuito, perceba que esta forma não se "preocupa" em explicitar a lógica combinacional do circuito, damos o comportamento e deixamos todo mapeamento do circuito a cargo do software.