제 8 장 Counters 실험의목표 - Catalog counter 의동작원리에대하여익힌다. - 임의의 counter를통하여 FSM 구현방법을익힌다. - 7-segment display 의동작원리를이해한다. 실험도움자료 1. 7-segment display 7-segment는디지털회로에서숫자를표시하기위하여가장많이사용하는소자이다. 이름에서알수있듯이 7개의 LED( Light Emitting Diode) 를이용하여왼쪽그림과같이숫자를디스플레이하는데많이사용된다. 7-segment는크게두가지로나눈다. 공통양극 (common anode) 과공통음극 (common cathode) 이다. 7개의 LED의어떤극을공통으로놓느냐에따라종류를나눌수있다. 아래그림에서 (a), (b) 는각각공통양극, 공통음극 7-segment 내부회로이다. [ 그림 8-1] 7-segment display 또한이런 7-segment에따라각각제어기가틀려진다. 흔히이제어기를 7-segment display decoder라한다. 이런일을하는 IC에는 7446과 7447등이있다. 이는 2진숫자 89
로들어온값을사람이알아볼수있게디스플레이하는디코더이다. 7-segment로숫자를나타내기위해서는각부분의 LED에 ON/OFF를알맞게해야한다. 즉 1을표시하기위해서는 b, c의 LED를켜야하고나머지는꺼야한다. 8의경우는모두켜야한다. 이러한작업을해주는것이 7-segment 제어기이다. 2진으로들어온숫자를 7-segment에알맞게디코딩해야한다. BCD-to 7-segment decoder를이용하면이진수신호를 7segment 표시기에 10진수로나타낼수있다. [ 그림 8-2] Overall structure of BCD to 7-segment Decoder 0부터 9까지숫자를표현하기위한디코더의입력값과출력값을아래의표 7-1에정리하였다. 입력은 4비트이다. 출력은각세그먼트에서 1이면 LED가켜지는것이고, 0이면 LED가꺼지는것이다. 입력 7-세그먼트출력 디스플레이 A B C D A b C d e f g 숫자 0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 2 0 0 1 0 1 1 0 1 1 0 1 3 0 0 1 1 1 1 1 1 0 0 1 4 0 1 0 0 0 1 1 0 0 1 1 5 0 1 0 1 1 0 1 1 0 1 1 6 0 1 1 0 0 0 1 1 1 1 1 90
7 0 1 1 1 1 1 1 0 0 0 0 8 1 0 0 0 1 1 1 1 1 1 1 9 1 0 0 1 1 1 1 0 0 1 1 [ 표 8-1] 입력값에대한디코딩값 이러한일을하는 IC에는 7448이있다. 이진리표를 Karnaugh map을이용하여직접게이트로구현하려면상당히복잡한연산과정을통하여복잡한회로가구성된다. 디코딩해야하는것의개수가 4개나되기때문이다. 그러나이렇게복잡한회로를동작수준 (behavioral level) 에서 VHDL로구현하면간단한입출력의기술만으로도같은동작을구현할수있다. 왜냐하면논리합성과정을통해서 CAD도구가자동으로게이트수준으로바꾸어주기때문이다. 2. VHDL 를이용한 counter 의기술 counter는입력펄스에따라서레지스터의상태가미리정해진순서대로변화하는레지스터이다. 어떤사건의발생횟수를세거나동작순서를제어하는타이밍신호를만드는데사용한다. counter는동작이클럭에의해서동기화되는 synchronous counter와클럭이존재하지않는 asynchronous counter의두가지종류로나눌수있다. 비동기식은 counter 내의모든 flip-flop이병렬로동시에같은클럭펄스로 trigger되지않고전단의 flip-flop이반전상태로바뀔때까지기다려야한다. asynchronous counter는동작속도가느리므로연산속도가중요한요소로작용하는경우에는 synchronous counter가사용된다. synchronous counter 에서는모든 flip-flop이같은클럭펄스로동시에 trigger되어, ripple counter보다전달속도가빨라전송지연이적으므로고속계수기에이용된다. ENTITY counters IS PORT( d : IN INTEGER RANGE 0 TO 255; clk : IN BIT; clear : IN BIT; ld : IN BIT; enable : IN BIT; load : IN BIT; up_down : IN BIT; qa : OUT INTEGER RANGE 0 TO 255; qb : OUT INTEGER RANGE 0 TO 255; 91
qc : OUT INTEGER RANGE 0 TO 255; qd : OUT INTEGER RANGE 0 TO 255 ); END counters; ARCHITECTURE a OF counters IS -- An enable counter IF enable = '1' THEN cnt := cnt + 1; qa <= cnt; -- A synchronous load counter IF ld = '0' THEN cnt := d; cnt := cnt + 1; qb <= cnt; -- A synchronous clear counter IF clear = '0' THEN 92
cnt := 0; cnt := cnt + 1; qc <= cnt; -- An up/down counter VARIABLE direction : INTEGER; IF (up_down = '1') THEN --Generate up/down counter direction := 1; direction := -1; IF (load = '1') THEN --Generate loadable cnt := d; --counter. Take these --lines out to increase performance. cnt := cnt + direction; --The following lines will produce a synchronous --clear on the counter IF (clear = '0') THEN cnt := 0; qd <= cnt; --Generate outputs END a; [ 표 8-2] VHDL 을이용한 counter 의기술 93
예비보고서 1-1. 4bit binary counter (74LS163) 를이용하여 0011에서 1011까지카운트를반복하는 counter를구현하여라. Data sheet 을참고로하여각입력의의미를조사하여라. 1-2. [ 시뮬레이션 ] 위 counter의 schematic을그리고 waveform viewer로결과를확인하여라. 1-3. 4-bit counter 의값을 7-segment display 로표시하기위한회로를그려라. 2-1. T flip-flop 4 개를이용하여 4-bit ripple counter 를구현하여라. 2-2. [ 시뮬레이션 ] 위 counter의 schematic을그리고 waveform viewer로결과를확인하시오. 3-1. BCD Down-counter (4-bit) 의 transition table을그리고, J-K Flip-Flop을이용하여구현하여라. 3-2. [ 시뮬레이션 ] 위 counter의 schematic을그리고 waveform viewer로결과를확인하시오. 4-1. counting sequence가다음과같은 counter를 D Flip-Flop을이용하여구현하여라.... -> 001 -> 010 -> 111 -> 100 -> 001 ->... 4-2. 이 counter 는 self-starting counter 인가? 그근거를설명하여라. 5-1. 4-bit catalog counter 를이용하여 8-bit counter 를구현하여라. 5-2. [ 시뮬레이션 ] clock 주파수를 64로나눈파형을얻으려고한다. 출력을어떻게얻으면좋겠는가? 시뮬레이션을통하여동작을바르게함을확인하여라. 6. 실험도움자료 절에기술된 VHDL 코드를시뮬레이션을통하여확인하여라. 그리고, Down counter 하는회로로수정하여시뮬레이션하여라. 94
실험및검토 1. 예비보고서 1-1 의 counter 를구현하고 7-segment display 를이용하여결과를확인하여라. 2. 4-bit ripple counter 를구현하고결과를확인하여라. 3. 예비보고서 3-1 의회로를구현하고동작을확인하여라. 4. 예비보고서 4-1 의회로를구현하고동작을확인하여라. 5. 클럭의주파수를 10 만큼분주하는회로를구현하고오실로스코우프를통하여확인하여라. 95