4 To 1 Mux Design
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 tem 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 e, depois, na próxima lição, usando uma instrução case. Ambos os métodos funcionam, mas case costuma ser mais claro quando há muitas opções.
Um multiplexador 4-para-1 seleciona uma das 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:
- Create um módulo named
mux4to1 - Add input
in0(1 bit) - Add input
in1(1 bit) - Add input
in2(1 bit) - Add input
in3(1 bit) - Add input
sel(2 bits) - Add output
out(1 bit, typereg) - Add um bloco
always @(*) - Dentro dele, Add uma statement
if-elseverificandosel:- If
sel == 2'b00, definaout = in0 - Else if
sel == 2'b01, definaout = in1 - Else if
sel == 2'b10, definaout = in2 - Else, defina
out = in3
- If
- Feche com
endmodule
Experimente você mesmo
// Passo 1: Crie o módulo chamado mux4to1
// Passo 2: Adicione a entrada in0
// Passo 3: Adicione a entrada in1
// Passo 4: Adicione a entrada in2
// Passo 5: Adicione a entrada in3
// Passo 6: Adicione a entrada sel (2 bits)
// Passo 7: Adicione a saída out (tipo reg)
// Passo 8: Adicione o bloco always @(*)
// Passo 9: Adicione a 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
// else, out = in3
// Passo 10: EndmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicPratique por conta própria: Compilador de Verilog online