Experiment 6. Use of Arithmetic Logic Unit and Flip-Flops Abstract 본실험에서는현대 CPU의가장근간이되는 Unit인산술및논리연산기 (Arithmetic Logic Unit, ALU) 와순차회로 (Sequential Circuit) 을이루는대표적인기억소자인플립플롭 (Flip-flop) 의기능을익히며, 간단한연산회로와순차회로를구현해본다. 또, ALU와같은복잡한기능을구현하는회로의설계를위한하향식설계 (Top-Down design) 방법에대하여학습한다. 1. Theoretic Backgrounds 1.1. Arithmetic Logic Unit ALU (Arithmetic Logic Unit) 는두개의변수에대하여여러가지의논리연산및산술연산을수행해주는조합회로이다. ALU는 Adder의기능을추가적인외부 Gate들을이용하여확장한 Arithmetic Unit과, 여러가지의가능한논리연산들을구현한 Logic Unit으로이루어져있으며, 현대 CPU의가장핵심적인기능을수행하는조합회로라할수있다. ALU는연산할 Data Input과, 어떤연산을수행할지결정하는 Selection Input을입력받고, Selection Input에따라정해진연산을수행하게된다. 아래그림 1은 ALU의 Box Diagram 이다. 그림 1. ALU 의 Box Diagram ALU 는이후설명할 Top-Down Design 의전형적인예로써, 예를들면 4-bit ALU 의경우 Input 이 12 개가되며, Truth table 이 4096 Line 에이르게되므로일반적인설계를도저히할
수없기때문에간단한부분으로나눠서구현하고, 이를다시합침으로써전체를구현하게 된다. 실험에서는이미구현된 4-Bit ALU인 74LS181 Chip을사용한다. 이 Chip은 4-bit의 Data input A, B와 Selection input 4 bit, Carry In 1 bit, 그리고 Mode input 1bit의총 14bit의 Input 을받아서 Output으로 4-bit의연산결과와 A=B가같은지여부 (1bit), 그리고세종류의 Carry(Carry out, Carry Generate, Carry Propagate) 를발생시킨다. 그림 2. 74LS181 ALU 의 Pin Out 예를들어, 산술연산중 (A plus B) 를계산하기위해서는 M=low에연결하고, 표에있는바와같이 S=1001로연결하면된다. 뺄셈 (A minus B) 를계산하기위해서는산술연산이므로 Mode input에 0 (low voltage) 을인가하고, S =0110, carry-in (/Cn) = 0을인가해야한다. ALU 에서는 1의보수시스템을사용하므로뺄셈은 (A minus B = A + /B +1) 과같이이루어지며, Cn을 low로하지않으면결과는 A minus B minus 1이된다. A=B 출력은 A와 B를비교하기위한것이다. 뺄셈모드 (S=0110, /Cn=1) 에서 A와 B 가같으면출력 F=1111이되고, 동시에 A=B도 high로된다. A=B Output은 Open Collector이므로단독출력으로사용해서는안된다. ( 출력이 1 또는 Open이되므로, Open인경우 0으로간주하지않는 Chip이많다.) 따라서반드시 Buffer나 Inverter를두번연결하여사용하는등의추가적인회로구성이필요하다. 2개이상의 181을연결하여 4 bit이상의연산을수행할수있다. /Cn은 Carry-In Input이고, /Cn+4는 ALU 내에서 4bit 연산을통해발생하는 Ripple carry의 Output이다. /Cn+4은 carry가발생하면 0으로출력된다. 이때, Ripple carry를이용하지않고, 속도를빠르게하기위해 carry propagate(p) 와 carry generate(g) 를이용할수도있다. 그림 3에주어진표는입력과출력을 active-high로했을때의동작을나타낸것이다. M을 low로바꾸면 active-low 모드로바뀐다. 자세한설명은 74LS181 Chip의데이터시트를참고하기바란다.
그림 3. ALU Function Table 1.2. Top-Down Design 조합회로 (Combinatorial Circuit) 를설계하는데있어서크게상향식설계 (Bottom-up Design) 와하향식설계 (Top-down Design) 의두가지의방법을사용할수있다. 우선, 상향식설계란, 주어진기본기능들을이용, 결합하여회로에서요구하는기능들을구현하는것이다. 지금까지실험에서수행한대부분의회로는상향식설계라할수있으며, 구현하고자하는기능이복잡하지않고직관적일때유리하다. 하향식설계란, 계층적설계 (Hierarchical design) 이라고도하며, 상향식설계와는반대로전체회로의역할을특정기능을수행하는부분으로나누는것을반복함으로써이미구현되어있는기본기능까지도달하도록하는것이다. 이는복잡한기능을구현하고자할때분할하여생각함으로써문제를간단하게만들수있다는장점이있다. 예를들어, 4-Input XOR을 AND, OR, NOT gate로만구현한다고가정하면아래와같이생각할수있다. ( 예시로는한단계의세분화과정으로전부구현이가능하나, 복잡한회로의경우에는세분화과정이여러번이루어질수있다.) 1) Bottom-up Design Approach: AND, OR, NOT 이주어져있네? K-Map 을이용하여 Simplification 할수있 다 진리표를그리고 Sum-of-Product Form 으로구현하면되겠네?
a. 진리표 : A B C D A B C D Y 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 b. Simplification: K- Map: AB/CD 00 01 11 10 00 0 1 0 1 01 1 0 1 0 11 0 1 0 1 10 1 0 1 0 ( 식유도는생략 ) 2) Top-down Design Approach: 4-Input XOR 를작은기능으로분할할수없을까? 2-Input XOR 를이용하 여 4-Input XOR 를구현할수있다 2-Input XOR 를구현하고이걸이용해서 4-Input XOR 를구현하면되겠네 2-Input XOR 는 AND, OR, NOT 으로구현할수있네? a. 문제세분화 A B C D = (A B) (C D) 2-Input XOR 로기능세분화
(A B) (C D) = (AB + A B) (CD + C D) 세분화한 2-Input XOR 를주어진 AND, OR, NOT 으로구현 b. 세분화한문제구현 (AB + A B) (CD + C D) = (AB + A B)(CD + C D) + (AB + A B) (CD + C D) = (AB + A B)((C + D)(C + D )) + ((A + B)(A + B ))(CD + C D) =.( 이후식유도는생략 ) 1.3. JK Flip-Flop 플립플롭 (Flip-Flop) 이란디지털순차회로를구성하기위한기억소자중하나로, R-S 래치 에추가로 J, K Input 을 AND gate 를통하여인가한회로이다. 아래는 J-K Flip-flop 의회로도 와특성표이다. 그림 4. JK Flip Flop 의회로및특성표 이 Flip-Flop 은자기자신의출력과두개의 Control input J, K 를이용하여다음상태 Q+ 를정의하게된다. 표에서알수있듯이 JK = 00 일때는현재값을유지하며, JK = 01 일일 때 Q+ = 0 으로, JK = 10 일때는 Q+ = 1 로설정이되며, JK = 11 일때는 Q+ = /Q 가된다. JK Flip flop은순차회로로써처음값을예측하기어려운데, 이를해결하기위하여 Preset ( 미리 Q = 1로만드는 Input) 과 Clear(Q = 0으로만드는 Input) 을가짐으로써다양한동작 ( 예 : 시스템리셋, 초기화등 ) 에대응할수있도록만들기도하며, 이는 74LS73, 74LS76등의 Chip에구현되어있다. 이들 Chip의자세한동작특성은 Datasheet를확인하도록한
다. 1.4. Race Condition in Sequential Circuit JK Flip-Flop을포함한모든순차회로에서는특정한 Input이인가될경우 Race condition 상태에빠질수있다. Race condition이란, 마치경마장에서말이경주하듯이엎치락뒤치락하는상태, 즉 0과 1이경쟁적으로매우빠르게반복됨으로써 Output이무엇인지알수없게되는경우를의미한다. 아래그림 5는 Race condition이일어났을때의 Timing diagram이다. 이를해결하기위해서는한입력에우선순위를부여하고다른입력이이에종속되도록하거나, 특정조건에서만순차회로의연산이일어나도록주기적입력신호인 Clock을삽입하여회로를동기화하는방법이있다. 그림 5. Race condition(q 와 Q ) 2. Experimental Setup OrCAD 를사용하여, 74LS181 ALU chip 2 개를 ripple carry mode 로확장하여 2 개의 5-bit input 을더할수있는회로를작성하고시뮬레이션해본다. ALU 2 개이외의기본게이트 (AND, OR, NOT, NAND, XOR, XNOR, NOR) 를이용할수있다. OrCAD 에주어진플립플롭 (74LS73, 74LS74) 과 Clock Generator 를사용하여플립플롭의기 능을이해한다. 이때, 시뮬레이션을이용하여 Clock 이어떻게될때 Q 값이변하는지를 확인하도록한다. (positive edge, negative edge trigger 등등 ) OrCAD 에서 NOR gate 를사용하여 S-R Latch 를작성하고, 여기에 2-Input AND gate 를연 결하여 JK Flip-Flop 을작성한다. Toggle (JK = 11) 이정상작동하는지확인하고, 정상작동 하지않는다면그이유를고찰하고, 해결방안을찾아보도록한다.
3. Experiments ALU 2개와추가기본게이트들을이용하여 5-bit input 2개 A, B의덧셈과뺄셈을계산하는회로를작성한다. 이때, A, B, 그리고 output Z는모두 2의보수로표현된수이며, A, B 는 5bit, Z는 6bit임에유의한다. 즉 A,B와 Z의 MSB 위치가다르므로유의하도록한다. 추가게이트는 GAL16V8D 칩을준비하여대체해도된다. NOR gate 를이용하여 S-R Latch 를구현하고, 여기에 2-input AND gate 를이용하여 J-K Flip Flop 을구현한다. Toggle 이정상작동하는지확인한다. 시뮬레이션결과와같은지여 부를확인하고, 결과가같은, 또는다른이유를고찰해본다. Simulation에서발생한문제점을해결할수있는방안을수업자료나검색등으로찾아보고, 이를해결한회로를작성해본다. (Hint: Race condition!) Simulation에서문제가발생하지않더라도잠재적으로발생할수있는문제를찾고이를해결한회로를작성하도록한다. 4. Grading Criteria 1) ALU 의기능을올바르게이해하고, 2 개의 5-bit 입력을정확히연산할수있는회로를작성하 였는가? 2) Flip-flop 의기능을이해하고, J-K Flip-flop 을올바르게구현하였는가? 3) OrCAD 를사용하여 Simulation 가능한회로를정확하게구현하고, 실험결과와올바르게비교 하였는가? 4) Race condition 이어떤상황에서발생하는지이해하고, 이를해결하기위한방법을정확하게 알고있는가?