Você está na página 1de 5

SEGUNDO LABORATRIO DE SISTEMAS DIGITAIS: MODELAGEM

COMPORTAMENTAL
Prof. Dr. Antnio Ramirez Hidalgo
05/09/2016
Eduardo Maia Renato Silva

2.1.1 Implementando o contador BCD em Verilog


Resumo Este relatrio discutir a criao de um contador no Comportamental
sistema decimal e de um contador no sistema hexadecimal, Para implementar o contador, foi realizada a diviso do
sendo o ltimo utilizado para acionar 3 subsistemas a depender problema em mdulos. Foram utilizados um mdulo para
no nmero sendo exibido. Ambos os contadores foram realizar a contagem, um mdulo para realizar a converso de
desenvolvidos utilizando a modelagem comportamental para binrio para BCD e no mdulo principal foi realizada a
sistemas digitais na linguagem Verilog. multiplexao para exibio dos nmeros no 4 displays ao
mesmo tempo.
1 INTRODUO
CONTADOR BCD DE 4 DGITOS
O contador proposto capaz de contar de 0 a 999,9 segundos,
com frequncia de 10 Hz. possvel definir o sentido da
contagem, alterar o valor inicial da contagem e pausar e resetar
a contagem. Alm disso, foi adicionada uma entrada que
quando ativa (nvel lgico "1"), se o contador estiver contando
de forma decrescente, faz com que um alarme seja ativado
quando a contagem chegue em 0.
CONTADOR HEXADECIMAL ATIVADOR DE
SUBSISTEMAS
O circuito proposto capaz de comparar dados
obtidos de um contador hexadecimal, com parmetros pr-
definidos pelo projeto. A partir do resultado um, dos quatro
subsistemas presentes neste, ser ativo (nvel lgico igual a 1).
Ambos os sistemas foram desenvolvidos utilizando os
conceitos de modelagem dataflow para sistemas digitais na
linguagem verilog.
Figura 1 - Mdulo Contador9999

2 DESENVOLVIMENTO O mdulo contador inicia a contagem apenas se boto de


INICIO for pressionado, caso no, continua em 0. Se o boto
2.1 CONTADOR BCD DE 4 DGITOS for pressionado, ele adiciona 1 sada CONTADOR sempre
que a entrada CLOCK realizar uma transio de 0 para 1. Se o
O contador BCD projetado possui 7 entradas. A entrada de boto de INICIO for pressionado novamente, a contagem ser
inicio/pausa serve para iniciar ou pausar a contagem. A entrada pausada. Com a contagem pausada possvel resetar a
de reset serve para voltar a contagem ao 0, se o sistema estiver contagem e pressionar o boto CARREGAMENTO, para que o
pausado. A entrada de carga serve para definir o valor a ser valor contido na entrada CARGA altere o valor da contagem
carregado quando a entrada de carregamento for ativa. A inicial segundo a equao valor = (1+CARGA) * 50. A entrada
entrada de up/down serve para definir o sentido da contagem UP_DOWN inverte o sentido da contagem a qualquer
(crescente ou decrescente). E a entrada de clock serve para momento (0 para sentido crescente e 1 para sentido
definir a frequncia em que o sistema vai operar. decrescente). Se a ENTRADA UP_DOWN estiver em 1 e se a
entrada ALARME tambm estiver em 1, a sada BUZZER ser
ativa.

Sistemas Digitais Laboratrio 2


contador funciona de maneira crescente, e caso contrrio, de
maneira decrescente. A entrada PAUSA capaz de congelar a
contagem, para que desta forma, a comparao seja efetuada e
outras opes adicionais podero ser utilizadas. Ou seja, para a
utilizao das demais entradas explicitadas a seguir, a entrada
PAUSA deve estar em nvel ativo (1). A entrada RESET
capaz de reiniciar a contagem instantaneamente, e quando
SENTIDO for igual a 0, reinicia a contagem para 0000, e se
no, para FFFF.
Como ferramentas adicionais, o usurio pode inserir
qualquer nmero hexadecimal de quatro bits nas posies do
contador, carregando-o com um valor permitindo uma
execuo mais rpida e prtica do sistema principal. Desta
Figura 2 - Mdulo Decimal2BCD
maneira, o usurio deve selecionar com as entradas SELECT, a
Esse mdulo recebe um nmero binrio de 16 bits e o posio em que o
separa em 4 nmeros BCD, correspondentes unidade, dezena, nmero ser
centena e milhar. inserido
(0, 1, 2, ou 3). O
nmero com
quatro bits
dever ser

determinado com as entradas VALOR, e para inseri-los deve-


se tornar ativa (igual a 1) a entrada INSERE.
A resposta da contagem que ser tratada e exibida nos
displays, a sada de 16 bits COUT.

Figura 3 - Mdulo Principal

O mdulo principal utiliza os mdulos


CONTADOR9999 e o mdulo DECIMAL2BCD para realizar
a contagem, converter o resultado desta em 4 nmeros BCD e
com a utilizao de um sistema de multiplexao, explicado em
mais detalhes no prximo tpico, jogar esses 4 nmeros BCD
nos 4 displays da placa NEXYS2.
Figura 4: Mdulo CONTHEX.

2.2 CONTADOR HEXADECIMAL Vale salientar que no projeto este mdulo est
ATIVADOR DE SUBSISTEMAS nomeado como TESTE4BITS, mas para facilitar a
Para a realizao deste circuito utilizamos o conceito compreenso e coerncia, aqui o denominamos de CONTHEX.
de subdiviso do sistema principal, por blocos menores
(mdulos), em conjunto com a sintaxe do nvel de modelagem 2 MDULO DE COMPARAO
comportamental e os dados propostos pelo projeto (presente na (CONTROLE)
Tabela 1). Vale ressaltar que o mdulo CLOCK utilizado o
mesmo repassado pelo professor Antnio Ramirez.

Tabela 1: Parmetros de comparao e operao dos


subsistemas propostos pelo exerccio.

Figura 5: Mdulo CONTROLE.

O mdulo CONTROLE responsvel pela


comparao do resultado obtido com o mdulo CONTHEX e
os parmetros definidos na Tabela 1.
Este opera recebendo uma entrada de controle CTR
1 CONTADOR HEXADECIMAL (CONTHEX) que permite fazer sua sada estar em nvel lgico igual a 0
O mdulo responsvel pela contagem do sistema foi quando est desativada, e caso contrrio, a efetuao da
construdo utilizando a borda de subida da entrada CLK. A comparao. A entrada INPUT de 16 bits, comparada com os
entrada SENTIDO determina que quando esta igual a 0, o
Sistemas Digitais Laboratrio 2
nmeros hexadecimais pr-determinados tambm com
tamanho de 16 bits. (Exemplo: 16h1388)
Feito isto, a sada SUB determina qual subsistema
ser o ativo. Esta sada tem como configuraes: o primeiro bit
(SUB[0]) corresponde ao subsistema 1 (S1), o segundo bit
(SUB[1]) ao subsistema 2 (S2), o terceiro ao S3, e o quarto ao
S4.
Figura 9: Mdulo SUB4, tambm determinado como S4.
3- SUBSISTEMA 1 (SUB1)
Este mdulo opera semelhante ao mdulo anterior
(SUB3), porm este faz no sentido inverso, ou seja, deslocando
e acumulando para a direita.

7- MDULO PARA O CONTROLE DAS SADAS


DOS LEDS (CONTROLA_SAIDAS)

Figura 6: Mdulo SUB1.

O mdulo SUB1, citado anteriormente como S1, faz


com que os LEDs pisquem de acordo com a sada de um
mdulo CLOCK com frequncia de 1Hz.
A entrada CTR faz com que suas sadas sejam iguais a
0 quando esta est desativada (igual a 0). Quando esta igual a
1, os bits da sada LED, recebem a concatenao do valor da
entrada CLK.

4- SUBSISTEMA 2 (SUB2)
Figura 10: Mdulo CONTROLA_SAIDAS.

Este mdulo tem a funo de receber as sadas dos


subsistemas e alimentar as sadas principais dos LEDs de
acordo com o subsistema em funcionamento.
Desta maneira, as entradas IN0, IN1, IN2, IN3
correspondem respectivamente s sadas dos mdulos dos
Figura 7: Mdulo SUB2. subsistemas SUB1, SUB2, SUB3, e SUB4. A entrada CTR
responsvel pela determinao de qual entrada INx (x = 1, 2, 3,
O mdulo SUB2, citado anteriormente como S2, faz 4), a sada OUT estar recebendo.
com que os LEDsde numerao par e mpar pisquem
alternadamente, de acordo com a sada de um mdulo CLOCK 8- MDULO CONTADOR DE 2BITS (CONT_2)
com frequncia de 10Hz.
A entrada CTR faz com que suas sadas sejam iguais a
0 quando esta est desativada (igual a 0). Quando esta igual a
1, os bits da sada OUT, recebem a concatenao do valor da
entrada CLK: OUT =
{CLK,~CLK,CLK,~CLK,CLK,~CLK,CLK,~CLK};.
Figura 11: Mdulo CONT_2.
5- SUBSISTEMA 3 (SUB3)
Este mdulo tem a funo de contar entre 0 e 3 com
uma frequncia alta, para que com a interconexo entre os
demais mdulos possa demonstrar os quatro valores nos quatro
displays ao mesmo tempo.
A contagem realizada a cada borda positiva da
entrada CLK, e tem como sada COUT de dois bits. No projeto,
este recebe o nome de TESTE.
Figura 8: Mdulo SUB3, tambm determinado como S3. 9- MDULO MULTIPLEXADOR (MUX4X2)
Este mdulo faz o deslocamento para a esquerda, e em
seguida acumula os LEDs acesos esquerda, de acordo com o
seu progresso, at que se obtenha todos os bits da sada OUT
iguais 1, reiniciando o processo.
A entrada CTR controla assim como nos mdulos
anteriores a resposta da sada, e desta maneira, quando esta
igual a 1, a borda de subida da entrada CLK utilizada como
referncia para o tempo e frequncia do deslocamento.

6- SUBSISTEMA 4 (SUB4)

Sistemas Digitais Laboratrio 2


Figura 12: Mdulo MUX4X2.
Figura 15: Mdulo principal QUESTAO3.
Este mdulo responsvel pela multiplexao da
sada do contador hexadecimal, a partir da seleo da entrada Analisando as necessidades do projeto e as
com o resultado da contagem do mdulo anterior (CONT_2). interconexes entre os mdulos, finalizamos o mdulo
As entradas IN0, IN1, IN2, e IN3 recebem a diviso principal do projeto (neste conhecido como
da sada do contador hexadecimal em 4 nmeros de 4 bits cada, CONT4B_RESET).
sendo IN0 os 4 primeiros bits e assim sucessivamente. A A entrada CLK a entrada para o oscilador de cristal
entrada CTR responsvel pela seleo da entrada para a sada da placa FPGA, as sadas SDT, AN so para os displays, e a
OUT. sada LED, para os LEDs.
Seguindo o modelo da interconexo dos mdulos,
10- MDULO DECODIFICADOR (DECOD2X4) obtemos a seguinte estrutura final:

Figura 13: Mdulo DECOD2X4.

A funo deste mdulo de determinar


qual o display estar ativo exibindo o seu
respectivo valor. Como este tem como entrada
(IN) o resultado do mdulo CONT_2, a alta
frequncia d a impresso de todos estarem
ativos ao mesmo tempo, e neste caso a sua sada
OUT.
11- MDULO DECODIFICADOR
HEXADECIMAL (DISP_HEX)

Figura 14: Mdulo DISP_HEX.

O papel deste mdulo de receber a


sada da multiplexao e converte-la para um
nmero hexadecimal que poder ser exibido no
display de 7 segmentos.
A cada valor em decimal da entrada IN,
haver uma respectiva sada OUT em BCD hexadecimal (de 0
F).
12- MDULO PRINCIPAL (QUESTAO3)

Sistemas Digitais Laboratrio 2


DESENVOLVIMENTO
Para a execuo desta questo, analisamos os mtodos
para a realizao da contagem hexadecimal, e determinamos
que esta deveria ser feita como um nmero de 16 bits a cada
borda de subida do clock principal do contador, que est
regulada para uma frequncia de 200Hz. Este primeiro mdulo
clock recebe o nome de CK0.
Com isto, podemos comparar os nmeros obtidos com
a contagem com nmeros hexadecimais de 16 bits. Mas, com o
intuito da economia de energia e optimizao do sistema, a
comparao s efetuada mediante a ativao da entrada
PAUSA. Com isto, o subsistema que dever ser executado
mediante apresentao do resultado se torna ativo, enquanto os
demais permanecem inativos.
Como os subsistemas utilizam mdulos CLOCK com
diferentes frequncias, adotamos o mdulo CK1, com uma
frequncia de 1Hz, para os subsistemas SUB1, SUB3 E SUB4.
J para o subsistema 2 foi associado um mdulo CK2, com
uma frequncia de 10Hz.
As sadas dos LEDs da placa FPGA, recebem os
valores dos subsistemas a partir da multiplexao efetuada pelo
mdulo de controle de sadas.
Para os displays um mdulo CLOCK, com nome de
M2 de alta frequncia (1.000Hz), foi atribudo as entradas dos
mdulos de multiplexao e decodificao. A insero do
mdulo que converte os dados para a apresentao no display
(DISP_HEX) apenas no fim da multiplexao, possibilitou a
economia de tempo e autonomia, permitindo a utilizao de
apenas um mdulo para este fim.
Vale ressaltar que so utilizados apenas quatro dos
oito bits das entradas e sadas do multiplexador e isto no nos
acarreta nenhum problema. Isto devido a vasta utilizao
deste mdulo em outros projetos, o que possibilita uma maior
flexibilidade deste.

3 RESULTADOS
Os sistemas foram implementados no FPGA NEXYS2. Os
sistemas funcionaram sem maiores problemas.

REFERNCIA BIBLIOGRFICA
Hidalgo, Antonio R. Laboratrio N 3 de Sistemas Digitais
Modelagem Comportamental, Acesso em: 01/09/2016.

Sistemas Digitais Laboratrio 2

Você também pode gostar