Recapitulação - Projeto de ALU
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 57 de 90.
Desafio
Uma ALU (Unidade Lógica e Aritmética) é um circuito digital que recebe duas entradas, realiza uma operação sobre elas e produz uma saída. Ela executa operações aritméticas e lógicas em duas entradas com base em um sinal de seleção. O sinal select escolhe uma operação para executar.
Como funciona
| select | Operação | Saída |
|---|---|---|
2'b00 | Adição | a + b |
2'b01 | Subtração | a - b |
2'b10 | AND bit a bit | a & b |
2'b11 | OR bit a bit | a | b |
Construa uma ALU simples usando uma instrução case.
O que fazer:
- Crie um módulo chamado
alu - Adicione as entradas:
a(4 bits),b(4 bits),select(2 bits) - Adicione a saída:
result(4 bits, tipo reg) - Adicione um bloco
always @(*) - Dentro dele, adicione uma instrução
case (select) - Adicione quatro casos para
2'b00,2'b01,2'b10,2'b11 - Adicione um caso
defaultpara definirresult = 0 - Feche com
endcaseeendmodule
Experimente você mesmo
// TODO: Criar módulo alu
// TODO: Adicionar entradas (a, b, select)
// TODO: Adicionar saída (result)
// TODO: Adicionar bloco always @(*)
// TODO: Adicionar case (select)
// TODO: Adicionar case 2'b00: result = a + b;
// TODO: Adicionar case 2'b01: result = a - b;
// TODO: Adicionar case 2'b10: result = a & b;
// TODO: Adicionar case 2'b11: result = a | b;
// TODO: Adicionar default: result = 0;
// TODO: Adicionar endcase
// TODO: Adicionar 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