Digital-Design

High-Level Synthesis (HLS)

High-Level Synthesis (HLS)란? C++(C/C++/SystemC)로 작성한 코드를 RTL 코드(Verilog 또는 VHDL)로 변환하는 것이 High-Level Synthesis입니다. HLS 툴은 개발자가 작성한 C++ 코드를 RTL 코드로 바꿔줍니다. 사...

AMBA (Advanced Microcontroller Bus Architecture)

What is AMBA, and why use it? SoC의 경우 반도체 칩이 여러 기능 블록(functional block)들로 구성되어 있습니다. 위 그림에서는 두 개의 CPU(Cortex-A), 메모리 컨트롤러(DMC-400), GPU, DMA, 인터커넥트(NIC-40...

Introduction to AXI4 protocol

AMBA AXI(Advanced eXtensible Interface) protocol에 대해 설명합니다. 여기서는 AXI4를 기준으로 설명합니다. AXI는 디지털 시스템에서 매우 중요한 프로토콜입니다. 반도체 설계를 위해서는 반드시 알아야 할 프로토콜입니다. AXI4...

플립플랍(flip-flop)

플립플랍은 디지털 시스템에서 매우 많이 쓰이는 기억 소자입니다. 현재 상태나 계산 결과 등등 다양한 정보를 저장해야 할 때 다양한 기억 소자(memory element)를 사용할 수 있지만, 가장 쉽게 사용할 수 있는 기억 소자가 플립플랍입니다. 이번 글에서는 플립플랍에 대해서 설...

Icarus Verilog and GTKWave 사용 방법

Verilog 코드를 simulation 해보고 waveform을 보고 싶을 때 사용할 수 있는 무료 툴 설치 및 실행 방법을 정리합니다. 시뮬레이션은 Icarus Verilog를 사용하고, waveform은 GTKWave를 통해 확인합니다. Installation Guide ...

SRAM

SRAM (Static random-access memory) 데이터는 플립플랍(레지스터)에도 저장할 수 있지만, 저장해야 할 데이터의 크기가 커지면 SRAM에 저장하는 게 더 나을 수 있습니다. SRAM은 같은 크기의 데이터를 저장할 때 flip-flop에 비해 더 적은 트랜지...

Logic Gate

논리 게이트는 디지털 시스템에서 가장 기본적인 기능을 구현하는 전자 회로입니다. 게이트 레벨에서 회로를 설계하고 설명한다면 그보다 low-level인 트랜지스터들과 물리적인 전압 등에 대해 생각할 필요가 없습니다. 0과 1에 대해서만 생각하면 되기 때문에 복잡한 회로를 쉽게 설계할...

Canonical Form

Canonical Form 여러분들은 주어진 truth table을 논리 회로로 구현할 수 있나요? 막상 해보면 쉽지 않을 수 있습니다. 그러나 Canonical form으로 시스템을 표현하면 truth table로부터 회로로 쉽게 구할 수 있습니다. Canonical form...

Karnaugh map (K-map)

앞서 Canonical Form을 사용해서 부울 함수를 논리 게이트로 표현하는 방법을 알려드렸습니다. 그러나 이렇게 얻어진 회로는 불필요한 게이트를 포함할 수 있습니다. 따라서 회로를 더 간단하게 최소화하는, 게이트 레벨 최소화(gate-level minimization)가 필요합...

Combinational Logic

현재 입력에 의해서만 출력이 결정되는 회로를 Combinational logic (조합 회로)라고 합니다. 여기에는 덧셈, 곱셈과 같은 산술 연산에서부터 여러 데이터 중 하나를 선택하는 멀티플렉서, 이외에도 비교기, 디코더, 인코더, 디멀티플렉서와 같이 디지털 시스템에서 매우 많이...