Projeto de Mux 4 para 1
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 65 de 90.
Desafio
Multiplexador 4 para 1
O multiplexador 4 para 1 possui quatro entradas de dados (in0, in1, in2, in3), dois bits de seleção (sel[1:0]) e uma saída (out). Os dois bits de seleção escolhem qual entrada passa para a saída:
- Quando
sel = 2'b00, a saída éin0 - Quando
sel = 2'b01, a saída éin1 - Quando
sel = 2'b10, a saída éin2 - Quando
sel = 2'b11, a saída éin3
Você construirá este multiplexador de duas maneiras: primeiro usando instruções if-else, depois, na próxima lição, usando uma instrução case. Ambos os métodos funcionam, mas o case costuma ser mais limpo quando você tem muitas escolhas.
Um multiplexador 4 para 1 seleciona uma de quatro entradas e a passa para a saída com base em um sinal de seleção de 2 bits.
Tabela Verdade
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Quando sel é 00, a saída segue in0. Quando sel é 01, a saída segue in1. Quando sel é 10, a saída segue in2. Quando sel é 11, a saída segue in3.
O que fazer:
- Crie um módulo chamado
mux4to1 - Adicione a entrada
in0(1 bit) - Adicione a entrada
in1(1 bit) - Adicione a entrada
in2(1 bit) - Adicione a entrada
in3(1 bit) - Adicione a entrada
sel(2 bits) - Adicione a saída
out(1 bit, tiporeg) - Adicione um bloco
always @(*) - Dentro dele, adicione uma instrução
if-elseverificandosel:- Se
sel == 2'b00, definaout = in0 - Senão, se
sel == 2'b01, definaout = in1 - Senão, se
sel == 2'b10, definaout = in2 - Senão, defina
out = in3
- Se
- Feche com
endmodule
Experimente você mesmo
// Passo 1: Criar módulo chamado mux4to1
// Passo 2: Adicionar entrada in0
// Passo 3: Adicionar entrada in1
// Passo 4: Adicionar entrada in2
// Passo 5: Adicionar entrada in3
// Passo 6: Adicionar entrada sel (2 bits)
// Passo 7: Adicionar saída out (tipo reg)
// Passo 8: Adicionar bloco always @(*)
// Passo 9: Adicionar instrução if-else
// se sel == 2'b00, out = in0
// senão se sel == 2'b01, out = in1
// senão se sel == 2'b10, out = in2
// senão, out = in3
// Passo 10: EndmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo