logo

Declaração de caso Verilog

A instrução case verifica se a expressão fornecida corresponde a uma entre outras expressões dentro da lista e ramificações. Normalmente é costume implementar um dispositivo.

A construção if-else pode não ser aplicável se houver muitas condições a serem verificadas na unidade de medida e seria sintetizada em um codificador de prioridade em vez de um dispositivo.

tipos de rede

Em Verilog , uma instrução case inclui todo o código entre as palavras-chave Verilog, case ('casez', 'casex') e endcase. Uma declaração de caso pode ser uma construção de seleção de muitos que é aproximadamente como a declaração if-else-if de Associate in nursing.

Sintaxe

Uma instrução case Verilog começa com a palavra-chave case e termina com a palavra-chave endcase.

A expressão entre parênteses é a unidade de área que pretende ser avaliada especificamente uma vez e é comparada com a lista de alternativas dentro da ordem em que são escritas.

E as afirmações de que a seleção corresponde à unidade de medida de expressão especificada estão mortas. Um bloco de múltiplas instruções deve ser classificado e estar entre o início e o fim.

 case () case_item1 : case_item2, case_item3 : case_item4 : begin end default: endcase 

Se nenhum dos casos corresponder à expressão fornecida, as declarações dentro da unidade de medida do item padrão serão mortas. A instrução default não é obrigatória e há apenas uma instrução default em toda a instrução case. As instruções case são aninhadas.

A execução sairá do bloco case sem fazer nada se nenhum dos itens corresponder à expressão e uma instrução padrão não for fornecida.

Exemplo

O próximo módulo de moda inclui um sinal opcional de 2 bits para rotear uma das três diferentes entradas de 3 bits para o sinal indicado como saída.

Uma instrução case é usada para atribuir a entrada correta à saída com suporte no valor de sel. Como sel pode ser um sinal de 2 bits, ele terá vinte combinações de 2, de zero a 3. A instrução padrão ajuda a alinhar a saída para zero se sel for 3.

Linux que
 module my_mux (input [2:0] a, b, c, // three 3-bit inputs [1:0]sel, // 2-bit opt for signal to choose on from a, b, c output reg [2:0] out); // Output 3-bit signal // invariably block is dead whenever a, b, c or sel changes in value invariably @ (a, b, c, sel) begin case(sel) 2'b00 : out = a; // If sel=0, output can be a 2'b01 : out = b; // If sel=1, output is b 2'b10 : out = c; // If sel=2, output is c default : out = 0; // If sel is something, out is commonly zero endcase end endmodule 

Cabeçalho da declaração do caso

Um cabeçalho de instrução case consiste na palavra-chave case ('casez', 'casex') seguida pela expressão case, geralmente tudo em uma linha de código.

Ao adicionar diretivas full_case ou paralelo_case a uma instrução case, a unidade de medida da diretiva é adicionada como um comentário em tempo real após a expressão case na ponta do cabeçalho da instrução case e antes de qualquer item do case nas linhas de código subsequentes.

Item de caso

O item de caso é que o bit, o vetor ou a expressão Verilog acostumada sejam comparados com a expressão de caso.

Ao contrário de diferentes linguagens de programação de alto nível como ' C ', a instrução Verilog case inclui instruções break implícitas.

O primeiro item de caso que corresponde a esta expressão de caso faz com que a instrução de item de caso correspondente seja inativa, portanto, todo o restante da unidade de medida de itens de caso ignorada para isso passa pela instrução de caso.

Declaração de item de caso

Uma instrução de item de caso é uma ou mais instruções Verilog mortas se o item de caso corresponder a esta expressão de caso. Ao contrário do VHDL, as coisas do caso Verilog podem ser expressões.

Para alterar a análise do documento de código Verilog, as instruções de item de caso Verilog devem ser colocadas entre as palavras-chave 'começar' e 'fim' se mais de uma instrução estiver morta para um item de caso específico.

Casez

Em Verilog, existe uma instrução casez, uma variação da instrução case que habilita 'z' e '?' valores a serem tratados durante a comparação de casos como valores 'não me importo'.

'Z' e '?' unidade de medida tratada como não importa se estão dentro da expressão case ou se estão dentro do item case.

Ao escrever secretamente uma instrução case com 'don't care', use uma instrução casez e use '?' caracteres em vez de caracteres 'z' dentro das coisas do caso para fins de bits 'não me importo'.

Casex

No Verilog, existe uma instrução casex, uma variação da instrução case que permite que os valores 'z', '?' e 'x' sejam tratados durante a comparação como valores 'não me importo'.

'x', 'z' e '?' unidade de medida tratada como não importa se estão dentro da expressão case ou se estão dentro do item case.

Declaração completa do caso

Uma instrução case completa pode ser uma instrução case dentro da qual todos os padrões binários de expressão case obtidos correspondem a um item case ou a um case default.

Se uma instrução case não abrange um case default e é possível procurar uma expressão binária case que não corresponde a nenhum dos itens case impressos, a instrução case não está completa.

Uma instrução case completa pode ser uma instrução case dentro da qual cada binário, não binário e mistura de padrões binários e não binários obtidos é enquadrado como um item de caso dentro da instrução case.

texto digitado para cada

A Verilog não gostaria que as declarações de caso fossem completas de síntese ou simulação de lipoproteína de alta densidade, mas as declarações de caso da Verilog são completadas adicionando um caso padrão. VHDL deseja que as declarações de caso sejam uma simulação completa de lipoproteína de alta densidade, que geralmente deseja a cláusula 'outros' do Associado em Enfermagem.

Declaração de caso paralelo

Uma instrução case paralela pode ser uma instrução case dentro da qual só é possível combinar uma expressão case com apenas um item de caso.

Se for possível procurar uma expressão de caso que possa corresponder a um item de caso, a unidade de medida de itens de caso correspondente é declarada como itens de caso sobrepostos e, portanto, a instrução de caso não é paralela.

Esquema de Hardware

O código RTL é elaborado para obter um esquema de hardware que representa um multiplexador 4 para 1.

Declaração de caso Verilog

Após executar o projeto acima, a saída é zero quando sel é 3 e corresponde às entradas atribuídas para outros valores.

 ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0b11 out=0x0 [10] a=0x5 b=0x5 c=0x5 sel=0b10 out=0x5 [20] a=0x1 b=0x5 c=0x6 sel=0b01 out=0x5 [30] a=0x5 b=0x4 c=0x1 sel=0b10 out=0x1 [40] a=0x5 b=0x2 c=0x5 sel=0b11 out=0x0 ncsim: *W,RNQUIE: Simulation is complete. 

Em uma instrução case, a comparação só é bem-sucedida quando cada bit da expressão corresponde a uma das alternativas incluindo 0, 1, x e z. No exemplo acima, se algum dos bits em sel for x ou z, o padrão a instrução será executada porque nenhuma das outras alternativas correspondeu. Nesse caso, a saída será totalmente zero.

 ncsim> run [0] a=0x4 b=0x1 c=0x1 sel=0bxx out=0x0 [10] a=0x3 b=0x5 c=0x5 sel=0bzx out=0x0 [20] a=0x5 b=0x2 c=0x1 sel=0bxx out=0x0 [30] a=0x5 b=0x6 c=0x5 sel=0bzx out=0x0 [40] a=0x5 b=0x4 c=0x1 sel=0bxz out=0x0 [50] a=0x6 b=0x5 c=0x2 sel=0bxz out=0x0 [60] a=0x5 b=0x7 c=0x2 sel=0bzx out=0x0 [70] a=0x7 b=0x2 c=0x6 sel=0bzz out=0x0 [80] a=0x0 b=0x5 c=0x4 sel=0bxx out=0x0 [90] a=0x5 b=0x5 c=0x5 sel=0bxz out=0x0 ncsim: *W,RNQUIE: Simulation is complete. 

Se a declaração de caso no design tiver x e z nas alternativas de item de caso, os resultados serão diferentes.

 module mux (input [2:0] a, b, c, output reg [2:0] out); // Case items have x and z, and sel has to match the exact value for // output to be assigned with the corresponding input always @ (a, b, c, sel) begin case(sel) 2'bxz: out = a; 2'bzx: out = b; 2'bxx: out = c; default: out = 0; endcase end endmodule 

Diferenciação entre o caso e if-else

A instrução case é diferente de if-else-if de duas maneiras, como:

  • Expressões dadas em um se-outro bloco são mais gerais, enquanto em um bloco case, uma única expressão é combinada com vários itens.
  • O caso fornecerá um resultado definitivo quando houver valores X e Z em uma expressão.