Projetar o circuito integrado (CI) CD4069 em Verilog é extremamente simples, sendo uma ótima alternativa para aqueles que desejam aprender a projetar circuitos digitais semicondutores sem FPGA e tendo como base componentes eletrônicos conhecidos do mercado. Neste tutorial, iremos demonstrar como projetar este circuito na Plataforma Pitanga. Ao final, você será capaz de experimentar o CD4069 na sua máquina, em tempo real e sem FPGA, emulando-o na C-Board, conforme indicado na Figura 1:

CD4069 emulation on the Pitanga Virtual C-Board

Figura 1. Emulando o circuito integrado CD4069 na C-Board Virtual Pitanga.

Dois são os caminhos que o levarão até o resultado final deste tutorial. O primeiro é através do vídeo-tutorial abaixo. O segundo é através deste artigo, onde você encontrará uma descrição detalhada de cada etapa do projeto. Escolha o caminho que mais lhe agrada e vamos começar!

O que é o Circuito Integrado CD4069?

O circuito integrado CD4069 foi introduzido no mercado em meados de 1968 pela empresa americana RCA1 (Radio Corporation of America). Esta empresa introduziu a série de circuitos integrados digitais CMOS 40002, ainda disponível no mercado nos dias atuais pela Texas Instruments3.

Originalmente, esta série de circuitos integrados foi lançada com nodo tecnológico de 20 μm, o que significa que os transistores eram fabricados com uma largura de canal de 20 micrômetros. Com o passar do tempo, a tecnologia evoluiu e as larguras de canal foram reduzidas, permitindo a fabricação de circuitos integrados mais compactos e eficientes.

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

O CD4069 é composto por 6 portas lógicas inversoras independentes. No seu datasheet4 podem ser encontrados o diagrama de porta lógicas, a disposição dos pinos no encapsulamento do CD4069, bem como a descrição detalhada da funcionalidade de cada pino. As Figuras 2 e 3, a seguir mostram, respectivamente, a disposição dos pinos no encapsulamento e o diagrama lógico do circuito integrado CD4069UB da Texas Instruments.

CD4069UB Pin Configuration

Figura 2. Configuração de pinos do CI CD4069UB. Fonte: [4]

CD4069UB Functional Diagram

Figura 3. Esquemático lógico do CI CD4069UB. Adaptado de [4]

Nas seções seguintes, será desenvolvido o circuito integrado CD4069 utilizando a Plataforma Pitanga. A partir das Figuras 2 e 3, será descrito o circuito em Verilog, bem como o mapeamento das entradas e saídas para os componentes da Placa Virtual Pitanga C-Board. Na sequência, o projeto será compilado e submetido à análise com base nos relatórios de design gerados pela ferramenta. Por fim, será realizada a emulação do circuito na C-Board, permitindo a interação prática e a verificação do seu funcionamento em conformidade com as especificações descritas no datasheet da fabricante Texas Instruments.

Descrevendo a Interface do CD4069

As figuras 2 e 3 apresentam a configuração dos pinos do CD4069 e o seu correspondente diagrama lógico. A partir dessas informações, é possível construir a tabela 1, indicando quais pinos são de entrada e quais pinos são de saída, bem como a descrição de cada pino.

PinoDireçãoDescrição
AEntradaPino de entrada para o Inversor A
BEntradaPino de entrada para o Inversor B
CEntradaPino de entrada para o Inversor C
DEntradaPino de entrada para o Inversor D
EEntradaPino de entrada para o Inversor E
FEntradaPino de entrada para o Inversor F
GSaídaPino de saída do Inversor A
HSaídaPino de saída do Inversor B
ISaídaPino de saída do Inversor C
JSaídaPino de saída do Inversor D
KSaídaPino de saída do Inversor E
LSaídaPino de saída do Inversor F
Vdd-Fonte de alimentação positiva
Vss-Fonte de alimentação negativa

Tabela 1. Descrição dos pinos do CI CD4069UB. Adaptado de [4].

A partir dessa tabela, podemos descrever, ou modelar, a interface de comunicação do CI CD4069 em Verilog, conforme o código a seguir:

module cd4069(
    input   A, B, C, D, E, F,
    output  G, H, I, J, K, L
);
endmodule

Feito a modelagem inicial, vamos verificar se o código está corente compilando-o na Pitanga. Para isso, acesse a sua conta Pitanga e, usando a Placa Virtual C (C-Board), copie e cole o código acima no Editor Verilog. O Editor Verilog está indicado na Figura 4 a seguir, assim como o Editor de Pinos e o Terminal de Saída da Pitanga.

CD4069UB Verilog module description

Figura 4. Descrição da interface do CI CD4069UB na Pitanga

Em seguida, apague o código padrão localizado no Editor de Pinos (se houver) e compile o projeto clicando no botão “Run” localizado no lado direto da C-Board. Também é possível compilar o projeto clicando no ícone “Run” localizado no canto esquerdo inferior da barra lateral de ícones (veja a Figura 4). Fazendo isso, o seguinte relatório deve ser impresso no terminal de saída da Pitanga:

Top level design units:
    CD4069

Build succeeded: 0 errors, 0 warnings
Error: mismatched input '<EOF>' expecting {COMPONENT_ID, Identifier} in line 1:1 on file: pitanga.pinout

Embora o código tenha sido compilado com sucesso, a ferramenta reportou um erro no arquivo pitanga.pinout. Esse erro ocorre porque este arquivo — localizado no Editor de Pinos e responsável por mapear as conexões lógicas internas do circuito projetado aos pinos de saída — encontra-se vazio. Em outras palavras, o módulo Verilog foi devidamente compilado, porém não há qualquer vínculo entre os componentes virtuais da C-Board e a funcionalidade interna do circuito descrito em Verilog.

Para resolver esse problema, é necessário desenvolver a lógica interna do CD4069 e realizar o mapeamento adequado para os componentes virtuais da C-Board. Esse será exatamente o foco da próxima seção.

Descrevendo a Funcionalidade do CD4069 com um Inversor

O circuito integrado CD4069 é constituído por seis portas lógicas inversoras independentes. No entanto, antes de prosseguir com o desenvolvimento do projeto completo, será abordada inicialmente a funcionalidade de apenas uma dessas portas inversoras, conforme demonstrado a seguir.

module cd4069(
    input   A, B, C, D, E, F,
    output  G, H, I, J, K, L
);
  // Descrição de uma porta lógica inversora
  not(G, A);
endmodule

Na implementação acima, a porta lógica inversora foi descrita utilizando a construção not. Em Verilog, essa construção recebe dois parâmetros: o primeiro corresponde à saída da porta lógica e o segundo à entrada. Como o módulo CD4069 já possui os sinais G (saída) e A (entrada) previamente declarados como portas, não é necessário criar sinais intermediários para conectá-los à instância da porta not. O compilador reconhece automaticamente que os nomes referem-se aos mesmos sinais definidos na interface do módulo.

Nota: Neste tutorial, o termo “porta” é utilizado em dois contextos distintos: para representar elementos funcionais — como as portas lógicas — e para indicar as interfaces de entrada e saída de um módulo em Verilog. Essa sobreposição de significados pode gerar confusão, sobretudo para quem está começando. Por essa razão, sempre que possível, adotaremos a expressão “porta lógica” para nos referirmos a componentes funcionais (como inversores ou AND), e reservaremos o termo “porta” exclusivamente para tratar das interfaces de conexão de módulos Verilog.

Agora, precisamos mapear as portas G e A do módulo CD4069 para os componentes virtuais da C-Board. Neste tutorial, iremos mapear a porta G para o LED led0 e a porta A para a chave deslizante sw0. O código de pinagem, portanto, será o seguinte:

// Texto seguido de duas barras consectivas não é processado pela Pitanga
//  PORTA       COMPONENTE NA PLACA
    A       =   sw0;
    G       =   led0;

Copie e cole o código Verilog e o de Pinagem acima nos editores Verilog e de Pinos, respectivamente. Em seguida, compile o código clicando no botão “Run”. O resultado será mostrado no terminal de saída da Pitanga, conforme indicado abaixo:

Top level design units:
    CD4069

Build succeeded: 0 errors, 0 warnings
ERROR: Found 5 problems in 'check -assert'.
Warning: Wire CD4069.\H is used but has no driver.
Warning: Wire CD4069.\I is used but has no driver.
Warning: Wire CD4069.\J is used but has no driver.
Warning: Wire CD4069.\K is used but has no driver.
Warning: Wire CD4069.\L is used but has no driver.

Perceba que os 5 erros de projeto estão relacionados com as portas H, I, J, K e L. Estas portas, localizadas no módulo CD4069, não possuem funcionalidade alguma no projeto. Para corrigir este problema, iremos remover essas portas do módulo CD4069, juntamente com as portas de entrada B, C, D, E e F. Dessa forma, manteremos apenas as portas necessárias para a descrição de uma única porta lógica inversora. O código corrigido encontra-se a seguir:

module cd4069(
    input   A,
    output  G
);
  // Descrição de uma porta lógica inversora
  not(G, A);
endmodule

Emulando o CD4069 com apenas um Inversor

Copie e cole código da seção anterior no editor Verilog. Compile novamente o projeto, clicando no botão “Run”. O resultado da compilação do projeto será impresso no terminal da Pitanga.

Top level design units:
    CD4069

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

Total number of wires: 2
Total number of cells: 1
Total number of ports: 4

  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              0 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF               0 | INV               1 | DFFRSE            0

Cells utilization: 1
Transistor count : 2/500 transistors (0.40 %)

Note que a Pitanga não reporta mais erros e indica o uso de uma porta lógica inversora (INV) no relatório de design. Este comportamento pode ser visto na C-Board indicada na Figura 5 através do LED led0 ligado enquanto a chave deslizante sw0 está desativada. Quando a chave sw0 é ativada, o LED led0 se apaga, indicando que o circuito está invertendo o sinal lógico da chave deslizante sw0.

CD4069UB Pin Configuration

Figura 5. Emulação de uma porta lógica inversora.

No relatório de design, é possível observar a presença de 2 wires (fios) e 4 ports (portas). Os dois fios correspondem às conexões entre a porta lógica interna INV e os sinais de entrada A e G. As quatro portas, por sua vez, referem-se aos pinos A, G, Vdd e Vss, conforme ilustrado na Figura 2. Embora os pinos de alimentação Vdd e Vss não sejam explicitamente declarados no módulo Verilog, a Plataforma Pitanga os reconhece e os contabiliza automaticamente no relatório de design, garantindo conformidade com a estrutura física do CI.

Descrevendo a Funcionalidade completa do CD4069

No momento que conseguimos emular uma única porta inversora do CD4069, podemos facilmente emular o CD4069 em sua totalidade. É isso que vamos fazer a seguir. A partir das Figuras 2 e 3, vamos elaborar uma figura adicional e mais completa. Esta figura, unindo a configuração dos pinos e o esquemático lógico do CD4069, é mostrada na Figura 6.

CD4069UB functional logic schematic

Figura 6. Esquemático lógico-funcional do CI CD4069UB.

A partir da Figura 6, vamos descrever a funcionalidade do CD4069 em Verilog. Para isso, devemos replicar a mesma construção de porta inversora 5 vezes, alterando os parâmetros das portas de entrada e saída dos inversores. Veja a Figura 6 e descreva o restante do circuito. Caso precise de ajuda, o código completo está a logo abaixo.

module cd4069(
    input   A, B, C, D, E, F,
    output  G, H, I, J, K, L
);
  // Descrição lógica do CD4069 (6 inversores independentes)
  not(G, A);
  not(H, B);
  not(I, C);
  not(J, D);
  not(K, E);
  not(L, F);
endmodule

Lembre-se que também é necessário mapear as portas de entrada e saída do módulo CD4069 para os componentes da C-Board. O código de pinagem, portanto, será o seguinte:

// Sintaxe:  
//  <port>  =   <serigrafia do componente na placa>
// portas de entrada do CD4069
    A       =   sw0;
    B       =   sw1;
    C       =   sw2;
    D       =   sw3;
    E       =   sw4;
    F       =   sw5;
// portas de saída do CD4069
    G       =   led0;
    H       =   led1;
    I       =   led2;
    J       =   led3;
    K       =   led4;
    L       =   led5;

Por fim, copie e cole o código Verilog e o de Pinagem acima nos editores Verilog e de Pinos, respectivamente. Em seguida, compile o código clicando no botão “Run”. O resultado da compilação do projeto será impresso no terminal da Pitanga, conforme indicado abaixo:

Top level design units:
    CD4069

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

Total number of wires: 12
Total number of cells: 6
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              0 | XNOR2             0
  OR3               0 | NOR3              0 | XNOR3             0
  OR4               0 | NOR4              0 | XNOR4             0
 -----------------------------------------------------------------
  BUF               0 | INV               6 | DFFRSE            0

Cells utilization: 6
Transistor count : 12/500 transistors (2.40 %)

Note que o relatório de design indica o uso de 6 portas lógicas inversoras (INV), o equivalente a 12 transistores CMOS5. Este é exatamente o resultado esperado de consumo de lógica para um CD4069, pois cada porta lógica inversora utiliza 2 transistores CMOS.

Emulando o Circuito Integrado CD4069 na Pitanga C-Board

Agora é o momento ideal para explorar e interagir com seu projeto, observando o comportamento dinâmico do circuito na C-Board.

Para isso, ative e desative as chaves deslizantes sw0 a sw5, observando o comportamento dos LEDs led0 a led5. Cada LED deve acender quando a chave correspondente estiver desativada (0) e apagar quando a chave estiver ativada (1). Este comportamento é exatamente o que se espera de um circuito integrado CD4069, que consiste em 6 portas lógicas inversoras independentes, representado na animação da Figura 1, apresentada no início deste tutorial, e novamente ilustrado na Figura 7 a seguir.

CD4069 emulation./images/pitanga-cd4069_emulation.gif on the Pitanga Virtual C-Board

Figura 7. Exemplo de emulação do CI CD4069 na C-Board Virtual Pitanga.

Conclusão

Se você chegou até aqui, parabéns! Isso significa que conseguiu projetar o circuito integrado CD4069 em Verilog, realizar o mapeamento dos sinais para os componentes virtuais da C-Board e compilar o projeto sem erros. Com o auxílio da Placa Virtual Pitanga, você obteve a experiência de projetar em Verilog, podendo implementar este mesmo projeto em dispositivos lógico-programáveis (FPGAs) ou em semicondutores, assuntos que iremos explorar em outros tutoriais.

Referências


  1. Wikipedia. “Radio Corporation of America.” [Online]. Disponível em: https://en.wikipedia.org/wiki/RCA . Acesso em: 21-Jul-2025. ↩︎

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

  3. Texas Instruments. “Site oficial.” [Online]. Disponível em: https://www.ti.com/ . Acesso em: 21-Jul-2025. ↩︎

  4. [8] Texas Instruments. “CD4069UB – Datasheet.” [Online]. Disponível em: https://www.ti.com/document-viewer/CD4069UB/datasheet . Acesso em: 21-Jul-2025. ↩︎

  5. N. H. E. Weste e D. M. Harris, CMOS VLSI Design: A Circuits and Systems Perspective, 4ª ed. Boston, MA, EUA: Addison-Wesley, 2011. ↩︎