aula8 regs counters - home | instituto de...
TRANSCRIPT
![Page 1: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/1.jpg)
IC-UNICAMP
MC613 – 2012 1
MC 613
IC/Unicamp
2012s1
Prof Guido Araújo
Prof Mario Côrtes
Registradores e Contadores
![Page 2: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/2.jpg)
IC-UNICAMP
MC613 – 2012 2
Tópicos de Registradores
• Construção usando flip-flops
• Clear assíncrono e Enable
• Registradores deslocamento
• Carga paralela
• Registrador deslocamento universal
• Exemplo de uso em barramento
![Page 3: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/3.jpg)
IC-UNICAMP
MC613 – 2012 3
Registradores
• Conjunto de elementos de memória (flip-flops) utilizados
para armazenar n bits.
• Utilizam em comum os sinais de clock e controle
CLK
D0 D Q
Q
D1
D2
D3
Q0
Q1
Q2
Q3
D Q
Q
D Q
Q
D Q
Q
D Q
Q CLK
D3:0 Q 3:0
![Page 4: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/4.jpg)
IC-UNICAMP
MC613 – 2012 4
8-bit register with asynchronous clear
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY reg8 ISPORT ( D : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
Resetn, Clock: IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ;
END reg8 ;
ARCHITECTURE Behavior OF reg8 ISBEGIN
PROCESS ( Resetn, Clock )BEGIN
IF Resetn = '0' THENQ <= "00000000" ;
ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ;END IF ;
END PROCESS ;END Behavior ;
![Page 5: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/5.jpg)
IC-UNICAMP
MC613 – 2012 5
n-bit register with enable
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY regn ISGENERIC ( N : INTEGER := 8 ) ;PORT (R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;
Rin, Clock: IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;
END regn ;
ARCHITECTURE Behavior OF regn ISBEGIN
PROCESSBEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;IF Rin = '1' THEN Q <= R ;END IF ;
END PROCESS ;END Behavior ;
![Page 6: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/6.jpg)
IC-UNICAMP
MC613 – 2012 6
Shift Register
t 0
t 1
t 2
t 3
t 4
t 5
t 6
t 7
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
1
Q 1 Q 2 Q 3 Q 4 Out = In
D Q
Q Clock
D Q
Q
D Q
Q
D Q
Q
In Out Q 1 Q 2 Q 3 Q 4
![Page 7: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/7.jpg)
IC-UNICAMP
MC613 – 2012 7
Alternative Shift Register
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;ENTITY shift4 IS
PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;Clock : IN STD_LOGIC ;L, w : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;END shift4 ;
ARCHITECTURE Behavior OF shift4 IS
BEGINPROCESSBEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;IF L = '1' THEN Q <= R ;
ELSEQ(0) <= Q(1) ;Q(1) <= Q(2);
Q(2) <= Q(3) ; Q(3) <= w ;
END IF ;END PROCESS ;
END Behavior ;
![Page 8: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/8.jpg)
IC-UNICAMP
MC613 – 2012 8
n-bit left-to-right shift registerLIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY shiftn ISGENERIC ( N : INTEGER := 8 ) ;
PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;Clock : IN STD_LOGIC ;
L, w: IN STD_LOGIC ;Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;
END shiftn ;
ARCHITECTURE Behavior OF shiftn ISBEGIN
PROCESSBEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;
IF L = '1' THEN Q <= R ;ELSE
Genbits: FOR i IN 0 TO N-2 LOOPQ(i) <= Q(i+1) ;
END LOOP ;Q(N-1) <= w ;
END IF ;
END PROCESS ;END Behavior ;
![Page 9: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/9.jpg)
IC-UNICAMP
MC613 – 2012 9
Hierarchical code for a
four-bit shift registerLIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY shift4 ISPORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
L, w, Clock : IN STD_LOGIC ;Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift4 ;
ARCHITECTURE Structure OF shift4 ISCOMPONENT muxdff
PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ;Q : OUT STD_LOGIC ) ;
END COMPONENT ;BEGIN
Stage3: muxdff PORT MAP ( w, R(3), L, Clock, Q(3) ) ;Stage2: muxdff PORT MAP ( Q(3), R(2), L, Clock, Q(2) ) ;Stage1: muxdff PORT MAP ( Q(2), R(1), L, Clock, Q(1) ) ;Stage0: muxdff PORT MAP ( Q(1), R(0), L, Clock, Q(0) ) ;
END Structure ;
![Page 10: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/10.jpg)
IC-UNICAMP
MC613 – 2012 10
Shift Register com Carga Paralela
Q3 Q2 Q1 Q0
ClockParallel input
Parallel
output
Shift/LoadSerialinput
D Q
Q
D Q
Q
D Q
Q
D Q
Q
![Page 11: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/11.jpg)
IC-UNICAMP
MC613 – 2012 11
Shift Register com Carga ParalelaLIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY lpm ;USE lpm.lpm_components.all ;
ENTITY shift ISPORT ( Clock : IN STD_LOGIC ;
Reset : IN STD_LOGIC ;Shiftin, Load : IN STD_LOGIC ;R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift ;
ARCHITECTURE Structure OF shift ISBEGIN
instance: lpm_shiftregGENERIC MAP (LPM_WIDTH => 4, LPM_DIRECTION =>
"RIGHT")PORT MAP (data => R, clock => Clock, aclr => Reset,
load => Load, shiftin => Shiftin, q => Q ) ;END Structure ;;
![Page 12: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/12.jpg)
IC-UNICAMP
MC613 – 2012 12
Shift Register Universal
• Entrada Serial
– Deslocamento a Esquerda
– Deslocamento a Direita
• Carga Paralela
• Saída Paralela
Exercício:
Diagrama do Shift Register Universal de 4 bits
![Page 13: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/13.jpg)
IC-UNICAMP
MC613 – 2012 13
Registradores em um Barramento
D Q
Q
Clock
D Q
Q
R 1 i n
R 1 o u t
D Q
Q
D Q
Q
R 2 i n
R 2 o u t
Bus
R 1 R 2
![Page 14: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/14.jpg)
IC-UNICAMP
MC613 – 2012 14
Registradores em um Barramento
R1in
Bus
Clock
Control circuit Function
R1 R2 Rk
Data
Extern
R1out
R2in
R2out
Rkin
Rkout
![Page 15: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/15.jpg)
IC-UNICAMP
MC613 – 2012 15
Tópicos de Contadores
• Contadores síncronos e assíncronos
• Contadores de módulo configurável
• Contadores em anel e Johnson
• Preset e Clear síncronos e assíncronos
![Page 16: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/16.jpg)
IC-UNICAMP
MC613 – 2012 16
Contadores síncronos / assíncronos
• Contadores assíncronos
– Entrada de clock dos FFs recebe saída de
estágios anteriores
– Estado do contador: transições dos estágios não
simultâneas (em ripple)
– Circuito mínimo mas requer cuidados com
decodificação
• Contadores síncronos
– Entrada de clock dos FF recebe apenas sinal
externo de clock
– Estado do contador: transições sincronizadas
(razoavelmente simultâneas)
![Page 17: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/17.jpg)
IC-UNICAMP
MC613 – 2012 17
Clock
Q 0
Q 1
Q 2
Count 0 7 6 5 4 3 2 1 0
T Q
Q Clock
T Q
Q
T Q
Q
1
Q 0 Q 1 Q 2
Contador assíncrono: 3 bits DOWN
![Page 18: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/18.jpg)
IC-UNICAMP
MC613 – 2012 18
T Q
Q Clock
T Q
Q
T Q
Q
1
Q 0 Q 1 Q 2
Clock
Q 0
Q 1
Q 2
Count 0 1 2 3 4 5 6 7 0
Contador assíncrono: 3 bits UPAlternativas para UP/DOWN:
• FF sens. borda de descida
• saída = ~Q
![Page 19: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/19.jpg)
IC-UNICAMP
MC613 – 2012 19
0
0
1
1
0
1
0
1
0
1
2
3
0
0
1
0
1
0
4
5
6
1 1 7
0
0
0
0
1
1
1
1
Clock cycle
0 0 8 0
Q 2 Q1 Q0 Q 1 changes
Q 2 changes
Projeto de contador síncrono: 3 bits
![Page 20: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/20.jpg)
IC-UNICAMP
MC613 – 2012 20
Clock
Q 0
Q 1
Q 2
Count 0 1 2 3 5 9 12 14 0
Q 3
4 6 8 7 10 11 13 15 1
T Q
Q Clock
T Q
Q
T Q
Q
1 Q 0 Q 1 Q 2
T Q
Q
Q 3
Contador síncrono: 4 bits
![Page 21: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/21.jpg)
IC-UNICAMP
MC613 – 2012 21
T Q
Q Clock
T Q
Q
Enable
Clear
T Q
Q
T Q
Q
Inclusão de Enable e Clear
Obs: o clear é assíncrono
![Page 22: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/22.jpg)
IC-UNICAMP
MC613 – 2012 22
Contador síncrono com FF D
Clock
Enable D Q
Q
D Q
Q
D Q
Q
D Q
Q
Q0
Q1
Q2
Q3
Outputcarry
![Page 23: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/23.jpg)
IC-UNICAMP
MC613 – 2012 23
Inclusão
de Load EnableD Q
Q
Q 0
D Q
Q
Q 1
D Q
Q
Q 2
D Q
Q
Q 3
D 0
D 1
D 2
D 3
Load
Clock
Outputcarry
0
1
0
1
0
1
0
1
![Page 24: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/24.jpg)
IC-UNICAMP
MC613 – 2012 24
Enable
Q 0 Q 1
Q 2
D 0 D 1
D 2
Load
Clock
1
0
0
0
Clock
Contador mod-6 com Reset síncrono
Obs: o Reset é obtido carregando-se 000 via sinal de load síncrono
0 1 2 3 4 5 0 1
Clock
Count
Q 0
Q 1
Q 2
Ld
![Page 25: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/25.jpg)
IC-UNICAMP
MC613 – 2012 25
Clock
Q 0
Q 1
Q 2
Count 0 1 2 3 4 5 0 1 2
T Q
Q Clock
T Q
Q
T Q
Q
1 Q 0 Q 1 Q 2
Contador mod-5 com Reset assíncrono
Obs: apesar do estado final a ser detectado ser o mesmo do caso anterior,
estado 101 (5), o módulo deste contador é 5 (contagem 0 1 2 3 4 0 1 2 3 4)
![Page 26: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/26.jpg)
IC-UNICAMP
MC613 – 2012 26
EnableQ0Q1Q2
D0D1D2
LoadClock
1000
Clock
Q30 D3
EnableQ0Q1Q2
D0D1D2
LoadClock
000
Q30 D3
BCD0
BCD1
Clear
Contador BCD de 2 dígitos
![Page 27: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/27.jpg)
IC-UNICAMP
MC613 – 2012 27
Contador em anel
D Q
Q
Clock
D Q
Q
D Q
Q
Start
Q 0 Q 1 Q n 1 ”
Contagem p 4 bits: 1000 0100 0010 0001 1000 0100 0010 0001 ....
Módulo?
![Page 28: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/28.jpg)
IC-UNICAMP
MC613 – 2012 28
Contador Johnson
D Q
Q
Clock
D Q
Q
D Q
Q
Q 0
Q 1
Q n 1 –
Reset
Para um contador de 4 estágios:
• Qual é a sequência de contagem
• Qual é o módulo do contador?
![Page 29: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/29.jpg)
IC-UNICAMP
MC613 – 2012 29
Implementação de
contadores em VHDL
![Page 30: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/30.jpg)
IC-UNICAMP
MC613 – 2012 30
LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;ENTITY upcount IS
PORT ( Clock, Resetn, E : IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)) ;
END upcount ;
ARCHITECTURE Behavior OF upcount ISSIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
BEGINPROCESS ( Clock, Resetn )BEGIN
IF Resetn = '0' THENCount <= "0000" ;
ELSIF (Clock'EVENT AND Clock = '1') THENIF E = '1' THEN
Count <= Count + 1 ;ELSE
Count <= Count ;END IF ;
END IF ;END PROCESS ;Q <= Count ;
END Behavior ;
Contador crescente 4 bits
![Page 31: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/31.jpg)
IC-UNICAMP
MC613 – 2012 31
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY upcount ISPORT ( R : IN INTEGER RANGE 0 TO 15 ;
Clock, Resetn, L : IN STD_LOGIC ;Q : BUFFER INTEGER RANGE 0 TO 15 ) ;
END upcount ;
ARCHITECTURE Behavior OF upcount ISBEGIN
PROCESS ( Clock, Resetn )BEGIN
IF Resetn = '0' THENQ <= 0 ;
ELSIF (Clock'EVENT AND Clock = '1') THENIF L = '1' THEN
Q <= R ;ELSE
Q <= Q + 1 ;END IF;
END IF;END PROCESS;
END Behavior;
Contador com LD paralelo, c/ sinais inteiros
Obs: com o uso do tipo BUFFER,
o sinal count não é necessário
![Page 32: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/32.jpg)
IC-UNICAMP
MC613 – 2012 32
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
ENTITY downcnt ISGENERIC ( modulus : INTEGER := 8 ) ;
PORT ( Clock, L, E : IN STD_LOGIC ;Q : OUT INTEGER RANGE 0 TO modulus-1 ) ;
END downcnt ;
ARCHITECTURE Behavior OF downcnt IS
SIGNAL Count : INTEGER RANGE 0 TO modulus-1 ;BEGIN
PROCESS
BEGINWAIT UNTIL (Clock'EVENT AND Clock = '1') ;
IF E = '1' THENIF L = '1' THEN
Count <= modulus-1 ; -- carrega c móduloELSE
Count <= Count-1 ;
END IF ;END IF ;
END PROCESS;Q <= Count ;
END Behavior ;
Contador decrescente
![Page 33: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/33.jpg)
IC-UNICAMP
MC613 – 2012 33
LIBRARY ieee ;USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;ENTITY upcount IS
PORT ( Clear, Clock: IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) ) ;END upcount ;
ARCHITECTURE Behavior OF upcount ISBEGIN
upcount: PROCESS ( Clock )BEGIN
IF (Clock'EVENT AND Clock = '1') THENIF Clear = '1' THEN
Q <= "00" ;ELSE
Q <= Q + '1' ;
END IF ;END IF;
END PROCESS;END Behavior ;
Contador crescente com Reset Síncrono
![Page 34: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/34.jpg)
IC-UNICAMP
MC613 – 2012 34
LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;
ENTITY BCDcount IS
PORT ( Clock : IN STD_LOGIC ;Clear, E : IN STD_LOGIC ;
BCD1, BCD0 : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;END BCDcount ;
Contador BCD de 2 dígitos (entity)
![Page 35: aula8 regs counters - Home | INSTITUTO DE COMPUTAÇÃOcortes/mc613/slides/aula_08/aula8_regs_counters.pdfIC-UNICAMP MC613 –2012 1 MC 613 IC/Unicamp 2012s1 ProfGuido Araújo ProfMario](https://reader033.vdocumento.com/reader033/viewer/2022050120/5f500be1eaa24770222694b6/html5/thumbnails/35.jpg)
IC-UNICAMP
MC613 – 2012 35
ELSIF E = '1' THEN
IF BCD0 = "1001" THEN
BCD0 <= "0000" ;IF BCD1 = "1001" THEN
BCD1 <= "0000";
ELSEBCD1 <= BCD1 + '1' ;
END IF ;ELSE
BCD0 <= BCD0 + '1' ;END IF ;
END IF ;
END IF;END PROCESS;
END Behavior ;
Contador BCD de 2 dígitos (architect.)ARCHITECTURE Behavior OF BCDcount ISBEGIN
PROCESS ( Clock )BEGIN
IF Clock'EVENT AND Clock = '1' THENIF Clear = '1' THEN
BCD1 <= "0000" ; BCD0 <= "0000" ;