Informática, perguntado por lucas27484, 6 meses atrás

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.

Anexos:

Soluções para a tarefa

Respondido por GeBEfte
3

Vamos ver como fica o código e, posteriormente, faço alguns comentários sobre ele.

\sf library~ IEEE;\\use~ IEEE.std\underline{~}logic\underline{~}1164.all;\\\sf \\entity~ mux4x1~ is \\~~~~	port(\\~~~~~~~~		S:~ in~ std\underline{~}logic\underline{~}vector(1~ downto~ 0);\\~~~~~~~~		D:~ in~ std\underline{~}logic\underline{~}vector(3~ downto~ 0);\\~~~~~~~~		Y:~ out~ std\underline{~}logic\\~~~~	);\\end~ mux4x1;

\sf architecture~ behavior~ of~ mux4x1~ is\\begin\\~~~~	Y~ <=~ (D(0)~ and~ not(S(1)) ~ and~ not(S(0)))~ or\\ ~~~~ 	~~~~~~~~~~\,	(D(1) ~and~ not(S(1))~ and~ S(0))~ or\\ ~~~~ 	~~~~~~~~~~\,		(D(2)~ and~ S(1) ~and ~not(S(0)))~ or\\ 	~~~~  	~~~~~~~~~~\,	(D(3)~ and~ S(1)~ and~ S(0));\\end~ behavior;

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.

\sf architecture~ behavior~ of~ mux4x1~ is\\begin\\~~~~	Y~ <=~ D(0)~ when~ S~ =~ "00"~ else\\ ~~~~ 	~~~~~~~~~~\,	D(1)~ when~ S~ =~ "01"~ else\\ ~~~~ 	~~~~~~~~~~\,		D(2)~ when~ S~ =~ "10"~ else\\ 	~~~~  	~~~~~~~~~~\,	D(3)~ when~ S~ =~ "11";\\end~ behavior;

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:
Perguntas interessantes