Aula 5.5: Decodificador BCD para display de 7-segmentos em Verilog #LTCode

COMPARTILHAR:

Aula 5.5 - Decodificador BCD 8421 para display de 7-segmentos em Verilog

Este artigo faz parte do projeto #LTCode

Na primeira aula dessa série de aulas você aprendeu toda a base para compreender códigos em Verilog HDL e rodar os códigos, se ainda não leu clique aqui e confira.

Vamos implementar em Verilog HDL um decodificador BCD 8421 para display de 7-segmentos de 2 formas. Note que o display deverá exibir números de 0 a 9, e que o display de 7-segmentos que pretendemos projetar é para anodo comum, ou seja, o led do display acende com nível lógico 0.

A primeira forma é utilizando expressões booleanas. Para isto montamos a tabela verdade com as entradas e saídas.

Note que cada led é representado por uma letra de 'a' até 'g'.
Depois basta encontrar as expressões simplificadas para cada led. Note que o código BCD 8421 vai até 9, sendo irrelevante continuar preenchendo a tabela até 15, apesar do restante da tabela poder facilitar a simplificação da expressão.

Assim podemos escrever nosso código.


module decodificador (a,b,c,d,e,f,g,A,B,C,D);

input A,B,C,D;
output a,b,c,d,e,f,g;

assign a = (B &(~C)&(~D)) | ((~A)&(~B)&(~C)& D);
assign b = (B & ~C &D) | (B & C &~D);
assign c = (~B)& C &(~D);
assign d = ((B)&(~D)&(~C))|(B & C & D) | ((~A)&(~B)&(~C)&D);
assign e = (B&(~C)) | D;
assign f = (~B)&C | (B & C & D) |((~A) & (~B) & D);
assign g = ((~A)&(~B)&(~C)) | (B & C & D);


endmodule


A segunda forma de se fazer um decodificado BCD 8421 para display 7-segmentos é utilizando a estrutura "case".

module decodificador_case (E,S);

input [3:0]E; //vetor de 4 bits
output reg [0:6]S;//bit mais significativo a direita, se não o display fica invertido

always @(*) //o asterisco basicamente cria a lista de sensibilidade para você
begin
case(E)
4'b0000 : S=7'b0000001; // 0 em binário, não acende led 'g'
4'b0001 : S=7'b1001111;
4'b0010 : S=7'b0010010;
4'b0011 : S=7'b0000110;
4'b0100 : S=7'b1001100;
4'b0101 : S=7'b0100100;
4'b0110 : S=7'b0100000;
4'b0111 : S=7'b0001101;
4'b1000 : S=7'b0000000;
4'b1001 : S=7'b0000100;
default : S=7'b1111111; //padrão, todos leds apagados
endcase
end

endmodule

A variável "E" é um vetor de 4 bits, ou seja, o usuário entra com 4 bits e coloca nesta variável. A variável "S" é um vetor de 7 bits, por ser uma variável de saída para armazenar os bits dos leds do display. Sendo assim, supondo que usuário queira mostrar no display o número 2, então ele entra com bits: 0010. Seguindo a lógica, caso 'E' seja 0010 então 'S' recebe 0010010 ou seja os led 'c' e 'f' não acendem, formando o número 2 no display.

Próxima aula, clique aqui.

COMENTÁRIOS

Nome

#ann,24,#HK,20,#LTCode,70,Artigo - Diversos,159,Artigo - Games,196,Artigo - Tecnologia,530,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,58,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,HN,12,Raspberry Pi,9,root,70,Shorty Awards,1,Smartphones - Reviews,33,Top Nostalgia,2,VPN,17,WhatsApp,44,
ltr
item
Limon Tec: Aula 5.5: Decodificador BCD para display de 7-segmentos em Verilog #LTCode
Aula 5.5: Decodificador BCD para display de 7-segmentos em Verilog #LTCode
Aula 5.5 - Decodificador BCD 8421 para display de 7-segmentos em Verilog
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s640/ltcode.jpg
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2019/05/aula-5-5-codigos-em-verilog-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/05/aula-5-5-codigos-em-verilog-ltcode.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo