Aula 5.4: Implementando um semáforo em Verilog #LTCode

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Aula 5.4 - Projeto de circuito combinacional, implementando um semáforo em Verilog HDL

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.

Agora vamos fazer um projeto de circuito combinacional, este projeto é muito simples. No cruzamento de 3 ruas A, B e C deseja-se instalar um sistema automático para os semáforos com as seguintes características:
  1. Quando o semáforo 1 abrir para a rua A, os outros dois devem fechar;
  2. Analogamente, para o semáforo 2 e 3.
  3. O motorista que está na rua A tem prioridade em relação ao que está na rua B;
  4. O motorista da rua B tem prioridade em relação ao da rua C;
  5. O motorista da rua C tem prioridade em relação ao da rua A;
  6. Quando houver carros nas três ruas, a rua A é preferencial;
  7. Quando não houver nenhum carro nas ruas, deve-se abrir abrir o sinal para a rua A.
Com essas informações, vamos impor regras e convenções.

Entradas: A, B e C.
Existe carro = 1.
Não tem carro = 0.

Saídas: 
G1, G2 e G3, são respectivamente sinais verde (green) para A, B e C.
R1, R2 e R3, são respectivamente sinais vermelho (red) para A, B e C.
Sinal aceso = 1.
Sinal apagado = 0.

Agora podemos montar a tabela verdade para nosso projeto:


Simplificando as expressões temos:

G1 = (A and B) or ((not B) and (not C))
G2 = (not A) and B
G3 = (not B) and C
R1 = ((not A) and B) or ((not B) and C)
R2 = A or (not B)
R3 = B or (not C)

Agora é só montar nosso código em Verilog. Note que o sinal R1, R2 e R3 vai ser sempre a negação de G1, G2 e G3 respectivamente, por conta disso no código abaixo resolvemos barrar G1, G2 e G3 para R1, R2 e R3 em vez de usar as expressões acima.

module semafaro(A,B,C,G1,G2,G3,R1,R2,R3);

input A,B,C;
output G1,G2,G3,R1,R2,R3;

assign G1 = ((~B) & (~C)| (A & B));
assign R1 = ~(G1);

assign G2 = (~A)& B;
assign R2 = ~(G2);

assign G3 = (~B)&C;
assign R3 = ~(G3);

endmodule

Próxima aula, clique aqui.

COMENTÁRIOS

Nome

#ann,25,#HK,30,#LTCode,130,Artigo - Diversos,156,Artigo - Games,201,Artigo - Tecnologia,615,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,72,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,logica,14,Pentest,23,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,25,Programar verilog,12,qradar,4,Raspberry Pi,15,Redes,3,root,117,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,19,WhatsApp,46,
ltr
item
Limon Tec: Aula 5.4: Implementando um semáforo em Verilog #LTCode
Aula 5.4: Implementando um semáforo em Verilog #LTCode
Aula 5.4 - Projeto de circuito combinacional, implementando um semáforo em Verilog HDL
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s640/ltcode.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmI65og5X32bSLCmBz3uJnZlmDvzOFWZWoZzyvUhh2rtp8Hr_kolKy02pOjxpkThrz8uHaTu3skUdeDJlkFEKkC2a9EabpwPzbwJ-hm-po0QIaNeNvYm5CJw3k4SbN03V-d2h1dxrW2tz4/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2019/04/aula-5-4-codigos-em-verilog-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/04/aula-5-4-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