Aula 5.8: Contador de 4 bits para display de 7-segmentos

COMPARTILHAR:

Aula 5.8 - Contador de 4 bits para display de 7-segmentos

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.

Para começarmos a aula de hoje, é recomendado que tenha lido a aula 5.7, caso não tenha lido.. clique aqui e confira!

Nesta aula vamos criar um contador que possa ser exibido em display de 7 segmentos. Para isso precisaremos dos códigos de um decodificador que você viu nas aulas anteriores.

Código decodificador:

module decodificador (E,S);

input [3:0]E;
output reg [0:6]S;

always @(*)
begin
case(E)
4'b0000 : S=7'b0000001;
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;
endcase;
end
endmodule

Vamos precisar de um código chamado divisor, ele permitirá nós utilizar o dispositivo de clock presente na FPGA em uma frequência que nós humanos conseguimos enxergar.

Código divisor:

module divisor(clocknovo,reset,clock);
input reset,clock;
output clocknovo;
reg [23:0]Q;
initial 
begin
Q = 24'b000;
end
always @ (posedge clock or posedge reset
begin
   if (reset == 1'b1)   begin
     Q = 24'b000;
   end
   else begin
     Q = Q + 1;
   end
end
assign clocknovo = Q[23];
endmodule

Agora precisamos do código de um contador de 4 bits para chamar o módulo divisor acima. 

Contador 4 bits:

module contador4bits(CLOCK_50, preset, reset,HEX0,HEX1); //clock pinado, saidas pinadas hex
input reset, preset, CLOCK_50;
reg [3:0]Q;
output[0:6]HEX0,HEX1;
wire[3:0] dez,unid;
initial
begin
Q=4'b0000;
end
wire clocknovo;
divisor(clocknovo,reset,CLOCK_50); //chama modulo divisor
always@(posedge clocknovo or posedge reset or posedge preset) //tem que ser a mesma borda do divisor
begin
if (reset ==1'b1)
begin
Q=4'b0000;
end
else if(preset==1'b1)
begin
Q=4'b1111;
end
else
begin
Q=Q+1;
end
end
assign dez= Q/10;
assign unid = Q%10;
decodificador(unid,HEX0);
decodificador(dez,HEX1);
endmodule

Com os código acima você consegue criar um contador crescente de 4 bits (módulo 16) síncrono. O contador é controlado pelo clock de no máximo 10Hz, sendo assim necessário usar o cristal de 50MHz. A contagem deve aparecer nos displays de 7-segmentos (dezena e unidade) conforme configurado o decodificador.

Finalizamos então aqui a primeira parte de uma série de aulas sobre códigos em Verilog. Quem sabe teremos mais? Salve em seus favoritos nosso site.

Voltar ao menu inicial, 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.8: Contador de 4 bits para display de 7-segmentos
Aula 5.8: Contador de 4 bits para display de 7-segmentos
Aula 5.8 - Contador de 4 bits para display de 7-segmentos
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/09/aula-5-8-codigos-em-verilog-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/09/aula-5-8-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