이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

학부 수업/디지털시스템

  • 컴퓨터와 수학, 몽상 조금
24. 카운터 (Counter)

24. 카운터 (Counter)

2020.06.28
카운터는 동기식과 비동기식 카운터로 나뉘는데, 비동기식 카운터는 리플 카운터라고도 한다. 카운터는 순차 회로이며, 고정된 상태 시퀀스를 순환한다. (0~111까지 세고 다시 0으로 초기화) n-bit 카운터는 n개의 플립플롭을 가지며, 최대 $2^n$개의 상태를 순환한다. 리플 카운터 (Ripple Counter) 리플 카운터의 Reset 신호는 모든 출력을 0으로 초기화한다. 카운트 신호는 저레벨의 플립플롭의 출력을 토글하는데, 저레벨 플립플롭은 고레벨 플립플롭에 신호를 제공한다. 클럭 주기 변화 카운터를 특정 엣지에서만 토글되게 하여, 클럽의 주기를 변화시킬 수 있다. 위 적용사례의 경우, 한 카운터를 신호가 통과할 때 마다 주기가 2배로 길어지는 것을 확인할 수 있다. 동기 카운터 (Synchron..
23. 레지스터와 시프트 레지스터 (Register)

23. 레지스터와 시프트 레지스터 (Register)

2020.06.27
레지스터 (Register) 플립플롭을 여러 개 조합하여 레지스터를 구성할 수 있다. 아래는 데이터를 병렬 전송(Parallel Load)하는 레지스터이다. 이러한 레지스터는 여러 비트의 데이터를 저장하며, 동시에 여러 비트를 다룬다. Load 신호를 이용하여, Load 신호가 1일 때만 새로운 정보를 저장하도록 할 수 있다. 시프트 레지스터 (Shift Register) 종속 연결된 플립플롭으로 구성된 직렬 전송을 수행하는 레지스터이다. 데이터가 CLOCK 엣지마다 다음 플립플롭으로 이동한다. 직렬 vs 병렬 전송 직렬 전송은 이진 데이터를 순서대로 전송한다. $2^n$크기의 데이터가 있다면, 해당 데이터를 $n$회에 거쳐 하나씩 전송한다. 레지스터 A의 정보를 B로 이동시키는 회로도이다. 이때 레지스..
22. 유한 상태 기계 (Finite State Machine)

22. 유한 상태 기계 (Finite State Machine)

2020.06.26
상태 (State) 플립플롭이 저장하고 있는 데이터를 상태라고 한다. 순차 회로의 출력 결과는 입력과 회로 내부의 플립플롭의 이전 상태에 의해 결정된다. Present State Next State Output x=0 x=1 x=0 x=1 $S_0$ = 00 00 10 0 0 $S_1$ = 01 10 10 0 0 $S_2$ = 10 00 11 0 0 $S_3$ = 11 10 11 0 1 Present State는 현재 플립플롭에 저장된 값, Next State는 다음 Rising Edge에서 변화할 플립플롭의 상태를 의미한다. Mealy Machine and Moore Machine Mealy Machine의 출력은 현재의 입력과 상태에 의해 바로 결정된다. 반면에 Moore Machine은 State에..
21. 플립 플롭과 래치 (Flip Flops and Latchs: Sequential Logic)

21. 플립 플롭과 래치 (Flip Flops and Latchs: Sequential Logic)

2020.06.26
순차 회로는 정보를 저장할 시점을 정하기 위해 주기적인 신호를 필요로 한다. Clock 신호가 이를 위해 쓰일 수 있다. 1 bit를 저장하는 요소를 Flip Flop이라 한다. Flip Flop의 기본형을 latch라고 한다. (레벨 기반 방식) Latch는 아래 논리 게이트로 만들 수 있다. NAND, NOR, AND, OR, Inverter 지금까지 배운 것들로는 여러 개의 순차적 데이터를 처리하거나 input이 없어진 후에 데이터를 저장할 수가 없었다. 지금까지의 조합 회로에 Flip Flop을 더해서 이러한 문제를 해결할 수 있다. 플립 플롭 (Flip Flop) 플립 플롭은 FF라고도 하는데, 휘발성 메모리의 역할을 한다. 조합 회로에 들어오는 Input 신호가 변화했을 때, 플립 플롭으로 N..
20. Programmable Logic Device: PLD

20. Programmable Logic Device: PLD

2020.05.24
PLD는 프로그램 가능 논리 소자라고도 불리는데, 프로그램을 통해 기능을 바꿀 수 있는 소자이다. 이를 통해 기판의 회로를 바꾸지 않고 소프트웨어만 업데이트해서 다양한 동작을 수행할 수 있다. PLD에는 다양한 종류가 있는데, 아래와 같다. Programmable Logic Arrays (PLAs) Programmable Array Logics (PALs) Complex Programmable Logic Devices (CPLDs) Field Programmable Gate Arrays (FPGAs) PAL과 PLA는 거의 비슷하며, FPGA는 가장 자유롭게 수정 가능한 PLD이다. Programmable Logic Array: PLAs ROM과 거의 같다. n개의 입력과 m개의 출력을 갖는데, n개의 ..
19. Read-Only Memories: ROM

19. Read-Only Memories: ROM

2020.05.24
ROM은 상호연결된 세미 콘덕터로 구성되며 이진 정보를 저장한다. 한 번 이진 데이터가 ROM에 저장되면, 언제든지 읽어들일 수 있지만 수정은 불가능하다. ROM은 K 개의 주소 입력과 N개의 데이터 출력 라인을 갖는다. 즉, ROM에는 $2^k$개의 n비트 데이터를 저장하는 데이터 라인을 가질 수 있다. ($(2^k \times n)$ 크기의 행렬) ROM의 기본 구조 k개의 입력 신호(주소)가 들어오면, 먼저 Address Decoder를 거쳐 $2^k$개의 데이터 라인 중 하나로 신호가 전달되고, 적절한 memory 상의 데이터 라인이 출력된다. ROM의 출력 신호를 입력에 대한 논리 연산 형태로 나타낼 수 있다.
18. 3 상태 버퍼 (Tristate Buffer)

18. 3 상태 버퍼 (Tristate Buffer)

2020.05.24
Tristate 버퍼는 3가지 출력을 가질 수 있다. Logic 1 (High) Logic 0 (Low) High-Impedance (고저항) Tristate 버퍼는 Control 신호를 추가로 입력받는 스위치가 있는 버퍼로 이해할 수 있는데, Control 신호에 의해 출력이 끊긴 상태를 고저항 상태라 한다. B 신호가 0이면 A와 관계없이 C는 Z(고저항)가 나오게 된다. B 신호가 1이면 C는 A와 같은 값을 갖는다. 위와 같이 Tristate 버퍼를 활용하여 MUX를 구성할 수 있다.
17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)

17. Verilog HDL로 순차회로 설계하기 (Sequential Circuit)

2020.05.23
순차회로 기존의 조합회로에 메모리 요소를 더한 것을 순차회로라 한다. 이때 메모리 요소로는 주로 D-FF이 사용된다. 이를 통해 회로에는 CLK이 추가되게 된다. always @ (a or b or sel) //조합회로 always @ (posedge clk) //순차회로 이제 우리는 값의 변동을 CLK을 이용해서 처리할 것이다. Positive/Negative Edge Clock 신호가 0에서 1이 되는 시점을 Positive Edge, 1에서 0이 되는 시점을 Negative Edge라 한다. 위 코드에서 순차회로에 사용된 것은 Edge-Triggered FilpFlop이며, posedge, positive edge를 이용하여 Trigger된다. Race Condition 두 개 이상의 always ..
16. Verilog HDL의 산술 연산과 Incomplete Specification

16. Verilog HDL의 산술 연산과 Incomplete Specification

2020.05.23
Verilog의 정수 산술 연산 Verilog에서 정수의 산술 연산을 아주 쉽게 할 수 있다. 아래는 32비트 2진수의 덧셈 연산을 수행하는 모듈이다. module add32 (a, b, sum); input [31:0] a, b; output [31:0] sum; assign sum = a + b; endmodule Carry를 갖는 덧셈 아래는 carry in과 carry out이 있는 32비트 가산기이다. module add32_carry (a, b, cin, sum, cout); input [31:0] a,b; input cin; output [31:0] sum; output cout; assign {cout, sum} = a+b+cin; //overflow를 cout에 담는다. endmodule..
15. Verilog HDL을 이용한 7-seg display Decoder 구현

15. Verilog HDL을 이용한 7-seg display Decoder 구현

2020.05.23
Verilog HDL을 이용하여 7-seg Decoder를 구현해보자. 방법1: Schematic Entry Implementation 각 Display에 대한 회로를 그대로 코드에 옮겨적는 방법이다. out6 = /in3*/in2*/in1 + in3*in2*/in1*/in0 + /in3*in2*in1*in0 out5 = /in3*/in2*in0 ... 코드가 굉장히 복잡하고 길어지게 된다. 방법2: Verilog의 게이트 활용 and AND1 (A, nin[3], nin[2], nin[1]); and AND2 (B, nin[3], in[2], in[1], in[0]); and AND3 (C, in[3], in[2], nin[1], nin[0]); or OR1 (out[6], A, B, C); 이 방법 ..
14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)

14. 하드웨어 기술 언어와 Verilog HDL(Hardware Description Language: HDL)

2020.05.22
하드웨어 기술 언어란 전자 회로를 정밀하게 기술하는 데 사용하는 컴퓨터 언어이다. 이는 회로를 설계하는 다른 방법인 Schematic Capture와 차이점이 있는데 아래와 같다. Schematic Capture 여러 데이터 플로우를 다루는데 유용함 회로의 전체적 오버뷰 제공 하드웨어와 직접적으로 연관이 있음 프로그래밍 능력 필요 없음 작은 사진에 많은 정보를 담을 수 있음 아날로그/디지털 컴포넌트를 모두 다루기 편함 알고리즘엔 좋지 않음 데이터페스를 다루는게 불편함 유지보수에 인터페이스가 좋지 않음 재사용성 낮음 HDL 유연하고 수정하기 좋음 알고리즘을 다룰 수 있음 데이터페스를 다루는데 좋음 전자회로를 다루기 편함 (텍스트 파일을 수정하기만 하면 됨) 전체 그림을 보기 어려울 수 있음 프로그래밍 능력..
13. 멀티플렉서와 디멀티플렉서 (Multiplexer and Demultiplexer)

13. 멀티플렉서와 디멀티플렉서 (Multiplexer and Demultiplexer)

2020.05.16
멀티플렉서multiplexer:MUX는 셀렉터라고도 불리는데, 여러 입력 중 하나를 출력하는 기능을 한다. 멀티플렉서의 반대인 디멀티플렉서demultiplexer:DEMUX는 하나의 입력을 하나의 여러개의 출력으로 만들어주며, 디코더라고도 불린다. MUX와 DEMUX는 select line이라고도 불리는 control 신호에 의해 출력이 결정된다. 이를 통해 같은 회로를 여러개 만들지 않고 여러가지 값의 연산을 수행할 수 있다. 예를들어, 위 이미지에서 우리가 $A_0$와 $B_0$의 합을 구하고, 이 값을 $Z_0$에 저장하고 싶다면, 각 MUX와 DEMUX가 우리가 원하는 값을 Adder에 전달하도록 $S$ 신호를 보낼 수 있다. MUX의 구현 MUX의 구현은 위와 같이, Selector 신호와 입력..
  • 최신
    • 1
    • 2
    • 3
  • 다음

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바