전공/디지털 논리

11강 순차논리 회로 다양한 예제 (비동기 카운터,Modulo-m Counter, Preset Counter,Serial-to-Parallel Register, Serial-to-Serial Register,parallel-to-parallel register)

뜨거운 개발자 2023. 5. 24. 22:05

지난 시간에는 동기모드에 대해 배웠다.

이번시간은 비동기모드 카운터와 레지스터에 대해 배운다.

동기 카운터는 같은 클럭 신호를 받았었다.

복습 : 동기 카운터

  • 4비트 동기 카운터는 4개의 j-k flip flop을 이용하면서 and gate 2개를 이용해서 셀 수가 있었다.

비동기 카운터

  • 비동기 카운터는 플립플롭이 공동 클럭 신호를 사용하지 않는 카운팅 회로이다.
  • 비동기 카운터의 클럭 시그널은 이전 출력에서 나오는 JK플립플롭의 결과 값이다.
  • 이전에 동기 카운터에서는 가장 앞에 J,K에만 1이 들어갔지만 이제 비동기는 모든 J,K에 1이 들어가게 된다.
    • 이말은 쉽게 말해서 모든 JK-Flip-Flop이 토글 모드로 동작한다는 의미이다.
  • 이것의 별명은 Ripple counter이다. (이유: 파도처럼 작동하기 떄문에)
  • 이슈 : The accumulated propagation delay time(누적전파 지연시간)은 지연상태 전환이 발생해서 잘못된 카운팅이 발생 할 수 있다.
  • 비동기 카운터에 대한 timing constraint 계산
  • 보통 동그라미 (not) 이 있으면 falling edge 이고 없으면 라이징엣지이다.
  • 떨어질때마다 주기가 2배로 늘어난다.

다만 큰 문제가 있다. (약간의 딜레이 계속 증가)

  • 𝑝 > 𝑛 × 𝑡𝑝𝑑 (𝑝𝑚𝑎𝑥: the period of clock(시계 주기), 𝑡𝑝𝑑: the propagation delay time(전파 지연시간)) 즉 이 조건을 만족해야만 한다.
  • 이 식 매우 중요!!
  • 최소 시계 주기 > 전파 지연시간 * N
    • 최대 주파수 : 1/(80 * 10^-9) = 12.5MHZ
  • 그 딜레이가 propagation delay time이라고 부른다.

Q. 비동기 카운터 언제 쓰는지 + 위의 그림은 이상적인 상황이고 실제로는 오른쪽으로 조금씩 밀리는건지.

A. 밀리고 비동기 거의 안 쓴다.

Direct Control Inputs to Flip-flops(복습)

일부 플립플롭은 비동기 입력 신호를 수신하여 상태를 초기화 한다.

  • – The direct input signals는 SR래치의 설정(프리셋)및 재설정(클리어)와 유사하다.
  • 예시 SR-D-flip-flop

Modulo-m Counter

  • Modulo는 나머지라고 생각하면 된다.
  • 모듈러 m카운터는 미리 정의된 숫자 m까지 카운트 할 수 있다.
  • %(모듈로) 명령은 : 나머지이다.
  • Modulo-10 asynchronous counter
    • (0~9까지 센다.)
    • 숫자 10이되면 재설정(지우기 명령)이 활성화 된다.
    • 10이 되려하면 즉시 리셋된다.
  • 어떻게 10을 감지하는가?
  • 10 : [1010] 4개의 비트를 AND게이트로 연결해서 보면 되는데..
  • 0일 때 clear해주기 때문에 Not을 붙혀서 들어가는 것을 볼 수가 있다.
  • 우리에게 주어진 그림에서는 2개만 연결되어있다.
  • 그 이유는 1X1X의 경우는 전부 다 초기화 해주면 되기 때문이다.!
    • 즉 10이상은 다 초기화가 되기 때문!
  • 이슈 : 아주 짧은 시간이지만 10이 되는 순간이 발생하기 때문에 위험성이 존재한다. (이런 잠깐 올라가는 값이 giltch라고 한다.

4-digit asynchronous decimal counter

  • BCD counter라고 부른다.
  • 0000에서 9999까지 셀 수 있다.
  • MSB가 당음 카운터의 클럭 신호에 연결된 4개의 BCD카운터 체인이다.
  • 9에서 10으로 갈 떄 falling edge가 발생하기 때문에!

Preset Counter

  • 이건 카운터가 주어진 숫자로부터 시작된다. (몇부터 숫자를 셀 수 있는 것..!)
  • Set을 Preset이라고 부르기도 하고, reset 을 CLR이라고 부르기도 한다.
  • Load = 0 일때 그냥 비동기 카운터이다.
  • LOAD= 1이되면 이니셜라이즈를 하고 아니면 그냥 4비트 비동기 카운터로 작동한다.
  • Not인 부분들만 다 지우면 생각보다 단순하다. (양 옆에 NOT이 있으면 그냥 선과 같음)

레지스터 공부 전 복습

Tri-state Buffer Gate복습

  • Z는 undefined 로지심은 U라고 씀

Serial-to-Parallel Register

직렬 병렬 레지스터

  • 레지스터는 특수 하드웨어 관련 기능을 갖춘 멀티비트 메모리 요소(일반적으로 플립플롭으로 구성)입니다.
  • D플립플롭을 사용하는 4비트 직렬-병렬 레지스터이다.
  • Input이 들어올 때 순서대로 쭉 들어온다.(0101이런식)

4-bit serial-to-parallel register using D flip-flops

  • 클럭이 쭉 들어오고, 입력이 Serial 1비트로 들어온다. (Serial은 1bit라고 생각하면 된다.)
  • 이 그림에서는 Falling edge 이다.
  • 이런 식으로 뒤쪽 레지스터로 밀리면서 들어가는데, 저렇게 4개를 다 넣었다면 RD를 active 시켜서 읽을 수 있다. (0으로 만들어 주면 값이 한번에 쭉 나오게 된다.)
  • 입력이 1비트 시리얼로 들어온 것을 출력을 4비트로 바꿔준 것이다.

복습 2 Multiplexer

  • 값을 선택해 주는 것이다.
  • 입력이 여러개 이고 출력이 하나 일 때 입력중에 어떤 입력을 내보낼 지를 정해주는 것이다.
  • 진리표

4-bit parallel-to-serial register using D flip-flops

  • 아까와 반대입니다.
  • 입력을 선택할 수 있게 해주는 MUX 멀티 플렉서(3개), D-flip -flop(4개)가 필요하다.
  • 클럭이 falling edge일 떄 값이 들어오게 되는데..!
  • LOAD와 SHIFT가 있는데
    • LOAD가 0일 때 : (LOAD하라는 말) : 그럴 떈 IA,IB, IC,ID 이렇게 기억이 된다.
    • 그 다음에 SH (Load = 1) : shift 가 동작하고 더이상 IA,IB,IC,ID가 선택되지 않는다.
    • 그러면 하나씩 뒤로 튀어나오게 된다.
    • 클럭이 falling 될때마다 ID, IC, IB, IA 한비트씩 출력이 된다.

Serial-to-Parallel/Parallel-to-Serial Register 의 활용

  • 사용처 Serial data transfers
  • 사용처 : USB, SATA
  • USB는 Univarsal serial Bus
    • 1비트 여러개를 모아서 1바이트를 만들어 준다.
    • 이때 필요한게 Serial-to-Parallel레지스터를 사용하는 것이다. (바이트 단위로 가져올 수 있게 됨)
  • 컴퓨터의 데이터를 USB에 저장할 때는 Parallel-to-Serial Register 를 사용합니다.
  • SATA도 마찬가지 인데
  • Serial 데이터를 다시 parallel port 로 보내는 것도 있다.
  • USB와 SATA가 나오기 전에 Parallel 을 사용을 많이 했다.
  • USB나오기 전에
  • 과거 SATA 전에
  • 왜 시리얼이 더 빠를까?
    • 이상하다..! 분명히 parralel이 더 빠른게 정상인데 serial이 더 빠른게 이상하다.
    • 고속 전송을 위해 parrallel 보다 Seial이 더 빨랐다.
    • 여러 데이터 처리에는 parallel 이 8배는 빠르다.
    • 사실 보내는 건 당연히 parallel이 더 빠른데.. 동기화가 문제때문에 더 속도가 느려지는 것이다.
  • 시리얼이 더 많이 사용된다.

4-bit parallel-to-parallel register using D flip-flop

  • 별 기능이 없는 레지스터이다.
  • 4개의 D-flip flop로 구성되어 있다.
  • 입력을 동시에 받아 드릴 수 있도록 하는 WR(Write signal)이 있고
  • 준비된 output을 한번에 Ready 시키는 Read 시그널이 있다.
  • Write 하고 싶을 때 WR , 읽고 싶을 때 RD
    • 사용자 관점에서 Read는 Jk flip-flop의 데이터를 읽는 것 Write는 JK flip-flop에 입력을 넣는 것 입니다.
  • 일반적으로 서로 반대이기 때문에 이런 입력만 허용됩니다.
  • 이런 입력도 가능한데
    • (RD = 1. WR= 0) 둘 다 Active하지 않은 첫번째 경우는 data를 reset해주고
    • (RD = 0, WR = 1) 둘다 Active한 경우는 결과가 바로 씌워지고, 직전에 있던 Signal이 output을 내고 바꾼것도 output이 나온다. (따라서 이건 잘 사용하지 않는다.)
  • 따라서 일반적으로 위의 두가지 방식만 가능하다.

parallel-to-parallel register 사용처

  • 별다른 특수기능이 없어서 별로 안 쓰인다.
  • 메모리 요소로 많이 사용된다.
  • 애플리케이션) SRAM(정적 RAM)의 내부의 메모리 요소
    • SRAM은 flip-flip으로 으로 구현되어 있고 (DRAM보다 훨씬 복잡한 구조)
    • 크기도 훨씬 크다.
    • 다만 SRAM은 flip-flop형태로 되어있어서 속도가 매우 빠르다.
    • 따라서 CPU cashe나 HDD buffer, router buffer에서 사용
  • DRAM(Dynamic ram) 은 Capacitror로 구현되어있다.
    • Capacitor는 간단해서 집적도를 높일 수 있다.
    • 집적도가 높아서 고용량으로 들어가고 컴퓨터와 GPU의 일반적인 메모리에서 주로 사용
  • SDRAM이란 : 이건 Synchronous DRAM이다.
    • 이건 우리가 주로 사용하는 DRAM입니다.

Serial-to-Serial Register

  • 매우 간단하게 구현되어 있다.
  • I가 O로 바로 나온다.
    • falling edge 일 때마다 입력 데이터를 가져온다.
    • 즉 Clock이 내려올 때마다 하나씩 내려온다.
    • 따라서 순서대로 줄줄 나온다.
  • 이건 Shift 시킬 때 많이 사용된다.(Bitwise Shift를 시킬때)
    • 우리의 shift연산이 속도가 매우 빠른 이유.
  • D플립플롭을 사용하는 4비트 직렬 간 레지스터
  • D플립플롭 4개 체인
  • 응용프로그램 : 비트 단위 이동

Bi-directional Shift Register

  • 양방향 Shift 레지스터
  • right 는 >>1 . left는 <<1 이라고 보면 된다.
  • 0을 주면 left로 shift, 1을 주면 Right로 shift한다.


Uploaded by N2T

728x90