Projetar o circuito integrado (CI) CD4001 em Verilog é um excelente exercício para compreender, na prática, como portas lógicas compostas podem ser modeladas e testadas na Plataforma Pitanga. Neste tutorial, vamos descrever o CD4001 e emulá-lo na C-Board da Plataforma Pitanga. Ao final, você será capaz de interagir com quatro portas lógicas NOR de duas entradas independentes, conforme ilustrado na Figura 1.

CD4001 emulation on the Pitanga Virtual C-Board

Figura 1. Emulação do circuito integrado CD4001 na C-Board Virtual Pitanga. O LED led3 está conectado na saída de uma NOR com ambas as entradas em 0.

Assim como nos tutoriais anteriores, seguiremos um fluxo progressivo: primeiro entenderemos a função lógica do CI, depois descreveremos uma única porta NOR em Verilog, descreveremos a pinagem na C-Board e, por fim, expandiremos o projeto até obtermos o CI CD4001 por completo.

O que é o Circuito Integrado CD4001?

O CD4001 é um circuito integrado da família CMOS 40001 composto por quatro portas lógicas NOR de duas entradas. Essas quatro portas são independentes entre si, o que significa que cada uma pode ser utilizada isoladamente ou em conjunto com as demais, dependendo da aplicação.

A porta NOR realiza a negação da operação OR. Em outras palavras, sua saída será nível lógico 1 apenas quando ambas as entradas estiverem em nível lógico 0. Se qualquer uma das entradas estiver em 1, a saída será 0.

Qual é a pinagem e o diagrama lógico do CD4001?

O CD4001 é composto por 4 portas NOR2 independentes2. A Figura 2 apresenta esse diagrama lógico-funcional e sua configuração de pinos.

CD4001 Functional Diagram

Figura 2. Diagrama lógico e disposição de pinos do CI CD4001. Fonte:[2]

Nas próximas seções, vamos utilizar essa organização lógica para construir o circuito em Verilog, compilar o projeto na e analisar o comportamento resultante na Placa Virtual C-Board.

Descrevendo a Funcionalidade do CD4001 com uma porta NOR

A partir do diagrama lógico do CD4001 indicado na Figura 2, podemos organizar as portas de entrada e saída do circuito conforme a Tabela 1.

PinoDireçãoDescrição
AEntradaPino de entrada para a NOR a
BEntradaPino de entrada para a NOR a
CEntradaPino de entrada para a NOR b
DEntradaPino de entrada para a NOR b
EEntradaPino de entrada para a NOR c
FEntradaPino de entrada para a NOR c
GEntradaPino de entrada para a NOR d
HEntradaPino de entrada para a NOR d
JSaídaPino de saída da NOR a
KSaídaPino de saída da NOR b
LSaídaPino de saída da NOR c
MSaídaPino de saída da NOR d
Vdd-Fonte de alimentação positiva
Vss-Fonte de alimentação negativa

Tabela 1. Descrição das portas de entrada e saída do CI CD4001.

Com essas informações, já podemos projetar o CI por completo. No entanto, vamos implementar apenas uma porta lógica NOR. Para isso, iremos descrever em Verilog a porta NOR a:

module cd4001(A, B, J);
    input   A, B;   output J;

    nor(J, A, B);   // NOR a
endmodule

Na implementação acima, utilizamos a construção nor, própria da linguagem Verilog. O primeiro parâmetro corresponde à saída da porta lógica, enquanto o segundo e o terceiro parâmetros correspondem às duas entradas da porta NOR.

Concluída a descrição funcional, o próximo passo é mapear as portas A, B e J para os componentes da C-Board. Neste tutorial, vamos utilizar as chaves sw0 e sw1 como entradas e o LED led0 como saída.

// Texto seguido de duas barras consectivas não é processado pela Pitanga (comentário)
//  PORTA       COMPONENTE NA PLACA
    A       =   sw0;
    B       =   sw1;
    J       =   led0;

Agora, copie e cole os códigos Verilog e de pinagem nos editores de código e de pinagem na plataforma Pitanga. Em seguida, clique em Run. O resultado deve ser o mostrado a seguir:

Top level design units:
    cd4001

Build succeeded: 0 errors, 0 warnings
                     DESIGN SUMMARY REPORT
  module     : cd4001
  design file: pitanga.v
  pinout file: pitanga.pinout

Total number of wires: 3
Total number of cells: 1
Total number of ports: 5

  Cell      Instances   Cell      Instances   Cell      Instances
 -----------------------------------------------------------------
  AND2              0 | NAND2             0 | XOR2              0 
  AND3              0 | NAND3             0 | XOR3              0
  AND4              0 | NAND4             0 | XOR4              0
  OR2               0 | NOR2              1 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF               0 | INV               0 | DFFRSE            0

Cells utilization: 1
Transistor count : 4/500 transistors (0.80 %)

O relatório de saída deve indicar a presença de uma única porta NOR2, além de 3 wires (fios), 1 cell (porta lógica) e 5 ports (entradas e saídas). Se você obteve este relatório, seu projeto foi bem sucedido e a C-Board deverá apresentar o comportamento típico de uma porta NOR: o LED led0 acende apenas quando sw0 e sw1 estão desativadas ao mesmo tempo. A Figura 3 reforça este comportamento.

CD4001 NOR2 gate emulation

Figura 3. Emulação de uma porta lógica NOR de duas entradas na C-Board.

Por fim, experimente você mesmo todas a combinações possíveis do seu projeto, verificando visualmente se o seu projeto se comporta como uma porta lógica NOR de duas entradas. Use a tabela-verdade mostrada na Tabela 2.

ABJ = NOR(A, B)
001
010
100
110

Tabela 2. Tabela-verdade de uma porta lógica NOR2.

Projetando o Circuito Integrado CD4001 na C-Board

Agora que validamos uma única porta NOR2, podemos expandir o projeto para emular o CI CD4001 completo. Para isso, basta replicar a mesma construção lógica para as demais portas lógicas b, c e d, indicadas na Figura 2.

// Descrição do Circuito CD4001
module cd4001(A, B, C, D, E, F, G, H, J, K, L, M);
// Declaração e direcionamento das portas
    input   A, B;   output J; // entradas e saída da porta 'a'
    input   C, D;   output K; // entradas e saída da porta 'b'
    input   E, F;   output L; // entradas e saída da porta 'c'
    input   G, H;   output M; // entradas e saída da porta 'd'

// Portas lógicas NOR2
    nor(J, A, B);   // porta 'a'
    nor(K, C, D);   // porta 'b'
    nor(L, E, F);   // porta 'c'
    nor(M, G, H);   // porta 'd'
endmodule

O CD4001 possui 8 entradas e 4 saídas. Como a C-Board dispõe de apenas 6 chaves deslizantes, utilizaremos os botões virtuais btn0 e btn1 para completar o mapeamento das duas últimas entradas.

// Sintaxe:
//  <port>  =   <etiqueta do componente na placa>;
// Mapeamento do CD4001 na C-Board
// portas de entrada
    A   =   sw0;    B   =   sw1;
    C   =   sw2;    D   =   sw3;
    E   =   sw4;    F   =   sw5;
    G   =   btn0;   H   =   btn1;
// portas de saída
    J   =   led0;
    K   =   led1;
    L   =   led2;
    M   =   led3;

Após compilar o projeto, o relatório resumido da Plataforma Pitanga deve indicar 4 instâncias de NOR2, totalizando 4 cells, 12 wires e 14 ports. O relatório encontra-se a seguir:

Top level design units:
    cd4001

Build succeeded: 0 errors, 0 warnings
                     DESIGN SUMMARY REPORT
  module     : cd4001
  design file: pitanga.v
  pinout file: pitanga.pinout

Total number of wires: 12
Total number of cells: 4
Total number of ports: 14

  Cell      Instances   Cell      Instances   Cell      Instances
 -----------------------------------------------------------------
  AND2              0 | NAND2             0 | XOR2              0 
  AND3              0 | NAND3             0 | XOR3              0
  AND4              0 | NAND4             0 | XOR4              0
  OR2               0 | NOR2              4 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF               0 | INV               0 | DFFRSE            0

Cells utilization: 4
Transistor count : 16/500 transistors (3.20 %)

Emulando o Circuito Integrado CD4001 na Pitanga C-Board

Com o circuito completo compilado, experimente alternar as chaves sw0 a sw5 e observar os LEDs led0 a led2. O LED led0, por exemplo, deve acender apenas quando sw0 e sw1 estiverem simultaneamente em nível lógico 0. O mesmo raciocínio vale para as demais portas do CI.

No caso da porta d, associada a btn0 e btn1, a verificação simultânea na C-Board só será possível se o seu monitor possuir sensibilidade ao toque (touch screeen). No entanto, você pode verificar com as chaves deslizantes sw6 e sw7 se possuir uma assinatura Pitanga Student . O resultado esperado na S-Board, neste caso, é mostrado a seguir:

CD4001 emulation on the Pitanga Virtual S-Board

Figura 4. Exemplo de emulação do CI CD4001 na S-Board (requer uma assinatura Pitaga Student).

Conclusão

Neste tutorial, desenvolvemos o CI CD4001 em Verilog, começando pela modelagem de uma única porta NOR2 e evoluindo até a descrição completa das quatro portas lógicas independentes do circuito. Em seguida, realizamos a pinagem na C-Board da Pitanga SaaS e identificamos como validar o funcionamento esperado por meio da emulação.

Referências


  1. B. Lojek. History of Semiconductor Engineering. Berlin, Germany: Springer, 2007. ↩︎

  2. Texas Instruments. CD4001B CMOS Quad 2-Input NOR Gates. Disponível em: https://www.ti.com/lit/ds/symlink/cd4001b.pdf . Acesso em: 10 jun. 2026. ↩︎