Aula 5.2: Porta xor (exor) em Verilog #LTCode

COMPARTILHAR:

Aula 5.2 - Código de uma porta xor 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.

Hoje vamos projetar um circuito lógico OU Exclusivo (xor) usando 3 maneiras para descrição em Verilog HDL.

A primeira maneira é a forma estrutural onde se usa-se portas lógicas primitivas para descrever um circuito através das conexões dos componentes que os compõe.

Confira como fica o código de um circuito XOR na forma ESTRUTURAL:

module porta_xor (Y,A,B);
output Y;
input A,B;
wire notA, notB;
wire and1, and2;
not invA (notA,A); //nega o A e atribui a notA
not invB (notB,B); //nega o B e atribui a notB
and flor (and1,notA,B); //faz AND entre notA e B
and bola (and2,notB,A); //faz AND entre notB e A
or sorte (Y,and1,and2); //faz OR entre and1 e and2 e atribui a Y
endmodule

Em laranja no código acima, são palavras aleatória (escolhida por você) para nomear os blocos entre parênteses. Você deve estar se perguntando o que é uma variável "wire", são variáveis intermediárias ou seja não são de entrada e nem de saída, por exemplo "and1" e "and2" são intermediárias pois no bloco "sorte" o resultado da operação "or" entre elas é atribuído a variável de saída "Y".

A segunda maneira é a forma de fluxo de dados onde são representados sinais de saída em função de sinais de entradas. 

Confira como fica o código do mesmo circuito acima na forma de FLUXO DE DADOS:

module porta_xor (Y,A,B);
output Y;
input A, B;
assign Y = ((~A)&B)|(A&(~B)); //atribui resultado da operação lógica a Y
endmodule

Em "assign Y = " temos: ((not A) and B) or (A and (not B));

Por fim temos abaixo um exemplo usando a maneira comportamental que descreve o circuito através do comportamento, na forma de um algoritmo. Geralmente usa-se if-then, case.


module porta_xor (Y,A,B);

output reg Y;
input A, B;
always@(A or B)
begin
case ({A,B}) //concatena A e B
2'b00 : Y = 1'b0; // caso 00: Y recebe 0
2'b01 : Y = 1'b1; // caso 01: Y recebe 1
2'b10 : Y = 1'b1; // caso 10: Y recebe 1
2'b11 : Y = 1'b0; // caso 11: Y recebe 0
endcase; //sim precisa de ";" aqui
end
endmodule

Note que "Y" é uma "output" do tipo "reg" pois "Y" está presente dentro do  ambiente "always". Neste ambiente as declaração são executadas sequencialmente se e somente se na lista de sensitividade "@ (lista de sensibilidade)"  houver uma mudança de evento lógico, no caso se A ou B tiver mudança de sinais de entrada. Na linha do "case", dentro das chaves "{}" ocorre uma concatenação dos bits de A e B, assim quando A e B forem 0 e 0 é o mesmo que 2 bits: 00. Note que no comando "case" basicamente foi criado a tabela verdade do XOR.

>> 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.2: Porta xor (exor) em Verilog #LTCode
Aula 5.2: Porta xor (exor) em Verilog #LTCode
Aula 5.2 - Código de uma porta xor em Verilog HDL
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/03/aula-5-2-codigos-em-verilog-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/03/aula-5-2-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