분류 전체보기 221

조합회로 응용2(MUX, deMUX)

MUX : 셀렉트 값에 따라 특정값을 출력으로 보내주는 회로. 프로그래밍으로 따지면 switch문과 비슷하다. 2입력 1sel(2의1승) 4입력 2sel(2의2승) 8입력 3sel (2의3승)이 필요하다. 2X1 mux => 4X1 => 8X1 순으로 익혀야 한다. 응용 : 조합논리회로 구현 조합회로는 보통 sum of product로 표현한다. 1인 값만 알면 되므로 MUX에 연결하여서 0인값은 GND 1인값은 5V연결하여 select로 각 값을 출력하게 만든다. deMUX : mux 를 반대방향으로 쓰면 된다.

조합회로 응용1, 가산기

1. 반가산기(half - adder, HA) X+Y = C+S으로 만드는 회로 1bit + 1bit = 1bit + 1bit X+Y = C+S 0+0 = 0+0 0+1 = 0+1 1+0 = 0+1 1+1 = 1+0 1.1 회로구하기 : 진리표를 구해 출력이 1인 항들을 더하면 된다.(sum of product) => 불대수, 카르노맵으로 최소화. 2. 전가산기(full - adder, FA) X+Y+Cin = Cout + S 를 만드는 회로 반가산기와 차이는 Cin의 유무다. (아랫자리를 고려한다. 즉, LSB가 아니란 것이다.) 1+1+1 = 1+1 1+1+0 = 1+0 인 것만 알면 이해는 끝난것이다. 2.1 회로구하기 : 진리표를 구해 출력이 1인 항들을 더하면 된다.(sum of product)..

레지스터

1. 레지스터 : F/F 여러개를 배열, 연결하여 nbit 2진수를 저장하게 만든 것. - 카운터는 레지스터의 특수형태이다. - 용도 : 카운터, shift, 임시저장, 2's complement, 곱셈,나눗셈 등 2. 구분 : 구조에 따라 - 입력(직렬,병렬), 출력(직렬,병렬) 에 따라 2X2 = 4가지의 레지스터가 존재한다. 보통 D F/F를 사용하는 것 같다. 2.1 직in - 직out : 링카운터 같은 형태이다. 마지막에 돌아오는 게 없어서, 한개씩 shift하는 기능만 있다. 즉, MSB F/F의 출력을 LSB의 F/F로 연결하지 않아서 shift되고 끝난다. 2.2 직in - 병out : (직,직 + 3-상태 버퍼) 3-state를 출력단에 배치하여, 값을 뽑던지, high-Z(open된것이..

카운터 응용 : 여러가지 카운터

1. 기타 카운터 1.1 링카운터(n개의 FF => n가지 상태) 0001 -> 0010 -> 0100 -> 1000 -> 0001 처럼 하나의 F/F만 1인 카운터. [D F/F사용, 여기표, 카르노맵 그려서 설계해보자] 출력과 입력이 상호 연결되어 링모양이 되는 것을 확인할 수 있다. 주의점 : 1000으로 초기화 해줘야 함! clr:0 (초기화) -> pr:1 ; 1000설정 응용 : 자판기[링카운터를 이용하여, 각 단계가 끝나면 처음으로 돌아온다] 1. 출력값이, 각 단계의 클록으로 적용되어 동작을 수행한다. 2. 동작 완료후 클록을 발생하고, OR게이트를 통해 링카운터의 클록으로 입력된다. 3. 클록으로 인해 다음 카운팅을 출력한다. 1.2 존슨카운터(n개의 F/F => 2n가지 상태) 원리: ..

카운터의 응용 : 주파수 분할, 분주회로

1.카운터의 동작원리 : 뒷단 F/F로 넘어갈수록 주기가 2배가 된다, 즉 주파수가 반으로 주는 것이다. 이 현상을 응용하여 주파수 분할의 용도로 사용해 본다. n번째 bit는 주파수가 (2의 n승)배로 나눠지게 된다. ex]16진 카운터 ÷2=> ÷4 => ÷8 => ÷16 2. mXn 분주회로 분주(分周) : 주파수를 나눈다, 쪼갠다는 뜻이다. mod-m의 MSB는 주파수가 클록의 ÷ m 이고, mod -n의 MSB는 주파수가 클록의 ÷ n 이다. mod-m의 MSB를 mod -n의 클록에 집어넣으면, ÷(mXn)을 한 것이 된다. ex) 16진 같은 경우 ÷2가 반복되는 형태이지만, mod -5나 mod-6 은 숫자가 중간에 잘려서 MSB는 ÷5나, ÷6으로, 특정 숫자로 주파수를 분할 할 수 있게..

동기식 카운터

1. 동기식 카운터 : 모든 F/F에 클락이 연결되어, 클락마다 동시동작하는 카운터. 비동기식의 문제점을 보완하기 위해 만들었다. 비동기 카운터의 문제 : 전파지연, timing issue F/F를 거칠 때 마다, Tpd(전파지연시간)가 생기는데, 비동기 카운터는 리플형태이다. 즉, 일렬로 연결되기 때문에, n(플립플롭수)X Tpd로 계속 지연시간이 늘어난다. 지연시간이 길어질 수록, 그 사이에서 오동작 확률이 높아지므로, 이런 문제는 없애야 마땅하다. 2. 동기식 카운터 설계 : 앞서 배운 순서회로 설계방법을 그대로 사용하면 된다. 1. 동작을 상태도로 표현한다. 2. 상태도를 이용하여, 상태표를 작성한다. 3. 상태축소, 상태할당 (카운터이므로 이미 할당되어 패스!) 4. F/F의 개수, 종류 결정 ..

비동기 카운터 응용

1. modulo-m 비동기 카운터 1.1 비동기 10진 카운터(BCD카운터, decade 카운터) : 0~9 까지 10개의 수를 카운팅한다. 16개의 상태에서 10~15, 6개를 제거하면 된다. 1.2 방법 조건 : F/F에 clear기능이 있어야한다. 원리 : NAND게이트 1개를 추가해서 최고값+1이되는 순간을 포착하여 전체를 0으로 clear해주어 9까지만 카운팅 한다. 9+1 = 10 = 1010이므로, Qd =1, Qb = 1 인 순간에 초기화 해주면 된다. Qd, Qb를 Nand로 연결하여 clear에 넣어준다. 11인 순간, 0이되고, active low인 CLR단자에 들어가면 clear되어 0부터 시작하게 된다. 1.3 문제점 강제초기화(비동기입력) CLR 때문에, glitch가 생긴다 ..

비동기 카운터

1.먼저 용어부터 설명하자 modulus : 카운터의 상태수, m으로 표현한다. 상태수가 m 때, modulo -m , mod -m, m진 카운터 이런 식으로 부른다. ex)4비트 2진 카운터 2진 카운터 4개로 구성된 카운터이다 0~15까지 이므로 16진 카운터와 동일하다.(mod-16으로도 말할 수 있다) 2. 비동기 카운터는 T플립플롭을 사용한다(JK로 T를 만들기도 함) 3. 상향(UP)과 하향(Down) 2가지 방식이 있다. 4.상향카운터 - 앞비트의 출력을 뒷비트의 CP로 넣어준다(falling edge로) 4.1. 핵심원리는 falling edge 트리거 방식이다. 비동기 카운터 = 리플 카운터 이다. 사용되는 F/F는 T(oggle) F/F이다. 앞의 F/F의 출력값의 뒤의 F/F의 CP로..

순서 논리회로의 설계2 : 미사용 상태의 설계

- 순서논리에서는 어떤 상태도 초기상태가 될 수 있다. - 상태축소 등으로 미사용 상태가 발생하는데, 여기서 문제가 발생한다. - 미사용 상태의 차기 상태를 구하여 오작동을 방지하자. -즉, 상태할당시, 할당되지 않은 상태들의 차기상태를 구하는 것이다. 1. 카르노맵 작성에서 처리해 주면 된다. => 사용하지 않은 상태는 don't care로 처리 2. 회로를 만든다. 3. 미사용 상태의 상태표, 상태도를 구한다.(회로를 이용) 3.1 미사용 상태가 자기들끼리 갖히지 않는 경우 => 설계 완료. 3.2 미사용 상태에서만 루프가 걸리는 경우 : 미사용 상태를 정의해 준다. 즉, 미사용 상태에, 임의의 차기상태를 할당하여 다시 처음부터 설계한다.

논리회로의 표 구별

진리표 : 어떤 문제에 대한 오직 유일한 진리값을 표현한 표(조합회로) : 입력값으로 출력이 정해짐(입력,출력) => 부울식으로 표현 상태표: 시간순서에 따른 입력, F/F의 상태 및 출력을 나타냄 : (입력, F/F 현재상태, 출력, F/F 다음상태) : 진리표 + 상태값 => 상태식으로 표현 특성표 : F/F의 동작을 표현, 입력이 어떤 기능인가? : (입력) => 다음상태 => 특성식으로 표현 여기표 : FF의 입력을 구하는 표, (현재, 다음상태) => 입력 => 플립플롭 입력식으로 표현 밑의 => 는 대수적 표현이다. 부울식 : F=x + y'z 상태식 : A(t+1) = Ax+Bx 특성식 : Q(t+1) = JQ'+K'Q 입력식 : K= A'x+Ax' 참고 http://www.kocw.net/..