FPGA LED 블링커 제작 단계별 가이드 1부: VHDL 또는 Verilog 설계 이 튜토리얼에서는 사용자 지정 주파수로 LED를 구동하는 VHDL 및 Verilog 코드 작성법을 배웁니다. 작업 흐름에 맞는 언어를 선택하세요. HDL 작성 시 설계가 의도대로 동작하는지 검증해야 합니다. 실수는 불가피하므로 시뮬레이션은 필수입니다. 이 튜토리얼은 두 가지 중요한 단계로 나뉩니다: HDL 설계 HDL 시뮬레이션 시뮬레이션을 건너뛰면 하드웨어 디버깅에 큰 비용이 듭니다. 시뮬레이션을 필수 관문으로 여기세요. 프로젝트 요구사항
7세그먼트 디스플레이 작동 원리 시중에는 다양한 7세그먼트 디스플레이가 있습니다. 자릿수, 물리적 인터페이스, 핀아웃이 모두 다릅니다. 모든 가능한 7세그먼트 디스플레이를 다루는 범용 솔루션은 사용자 친화적이지 않을 수 있습니다. 하지만 이 글의 코드를 기초로 수정해 필요에 맞게 사용할 수 있습니다. 디지전트 Pmod 모듈 데이터시트 이미지는 7세그먼트 디스플레이가 Pmod 핀에 어떻게 연결되는지 보여줍니다. 이 핀들은 iCEstick의 FPGA에 직접 접근 가능합니다. 7개 핀이 디스플레이의 각 세그먼트를 제어합니다. 로직 하이
지속적 통합·배포(CI/CD)와 FPGA 개발 지속적 배포와 지속적 통합은 코드 변경과 배포 사이의 주기 시간을 단축하는 애자일 소프트웨어 개발 방법론입니다. 자동화를 통해 코드 변경을 검증하고 릴리스 파일을 빌드함으로써 팀은 더 생산적이고 효율적이 될 수 있습니다. 소프트웨어 회사는 오랫동안 지속적 개발을 실천해 왔지만, FPGA 프로젝트에도 똑같이 적용할 수 있습니다. 이 튜토리얼에서는 젠킨스(Jenkins), 자일링스 비바도(Xilinx Vivado), 깃/깃허브(Git/GitHub) 소스 제어 관리(SCM) 시스템을 사용해
시뮬레이션 파형에서 VHDL 변수 보는 법 Modelsim에서 시뮬레이션 중 VHDL 변수를 볼 수 있는 방법이 있지만, 쉽게 만들어두지는 않았습니다. Modelsim에서 Objects 창에는 변수가 절대 표시되지 않습니다. Modelsim Objects 창, 변수 없음 변수를 보려면 먼저 프로세스(processes)를 표시해야 합니다. 보고 싶은 변수가 있는 설계를 우클릭하세요. Show 메뉴로 가서 Processes가 체크되어 있는지 확인하세요. 설계에서 프로세스 보는 법 이렇게 하면 설계 아래에 프로세스 이름들이 나타납니다
튜토리얼 - 초보자를 위한 Modelsim 시뮬레이션 사용법 Modelsim은 Mentor Graphics에서 만든 프로그램으로 VHDL과 Verilog 설계를 시뮬레이션하는 데 사용됩니다. 비즈니스와 교육 현장에서 가장 널리 사용되는 시뮬레이션 프로그램입니다. 이 튜토리얼에서는 먼저 시뮬레이션이 왜 중요한지 설명한 뒤, Modelsim Student Edition을 무료로 개인용으로 구하는 방법을 보여줍니다. 시뮬레이션은 FPGA와 ASIC 설계의 중요한 단계입니다. 시뮬레이션을 통해 설계자는 자신의 설계를 자극(stimulate
튜토리얼 - VHDL 소개 VHDL은 끔찍한 약어입니다. VHSIC Hardware Description Language를 의미합니다. 약어 안에 또 다른 약어가 있는 셈이죠! VHSIC는 Very High Speed Integrated Circuit을 뜻합니다. 따라서 VHDL을 풀면 Very High Speed Integrated Circuit Hardware Description Language가 됩니다. 꽤 긴 이름이네요. VHDL은 교육과 비즈니스에서 FPGA와 ASIC을 설계하는 데 사용되는 두 가지 언어 중 하나입니다.
VHDL(VHSIC Hardware Description Language)은 디지털 집적 회로를 모델링, 설계, 검증하는 데 사용되는 특수 컴퓨터 언어입니다. Java나 C++ 같은 범용 프로그래밍 언어와 달리, VHDL은 소프트웨어 애플리케이션 구축을 위한 것이 아니라 전자 하드웨어의 구조와 동작을 기술합니다. VHDL은 이벤트 기반이고 병렬 실행을 지원하므로, 프로세서나 기타 디지털 로직 내부에서 발생하는 동시 연산을 포착하는 데 이상적입니다. 이로 인해 VHDL은 결국 CPU, FPGA, ASIC이 되는 로직을 지정하는 데 사
VHDL과 FPGA 설계는 비용이 많이 드는 것처럼 느껴질 수 있지만, 학생들은 업계 표준 도구를 무료로 이용할 수 있습니다. 아래는 가장 신뢰받는 두 가지 VHDL 도구(업계 표준 시뮬레이터와 가볍고 무료인 에디터)를 설치하는 단계별 가이드입니다. 이를 통해 즉시 코딩과 테스트를 시작할 수 있습니다. 1. VHDL 시뮬레이터 선택 지멘스 EDA의 ModelSim(구 Mentor Graphics)은 VHDL 시뮬레이션의 업계 벤치마크입니다. 첫 전문 역할을 준비하든 개념을 프로토타이핑하든, ModelSim(또는 자매 제품 Quest
새로운 언어를 배울 때 간단한 메시지 출력은 고전적인 검증 방법입니다. Hello World! 출력을 마스터하면 환경이 올바르게 설정되었는지 확인하고 언어의 핵심 문법을 엿볼 수 있습니다. VHDL은 전통적인 소프트웨어 언어가 아닌 하드웨어 기술 언어이므로, 텍스트를 어떻게 표시할지 의아할 수 있습니다. 비결은 VHDL 코드가 시뮬레이터 내부에서 실행되며, 시뮬레이터가 디지털 회로를 에뮬레이트하고 진단 메시지를 화면에 출력할 수 있다는 점입니다. 이 튜토리얼은 FPGA나 ASIC 하드웨어가 아닌 언어 자체에만 초점을 맞춥니다. 이
이전 튜토리얼에서는 VHDL 프로세스를 프로그램 스레드에 비유하고 wait; 문을 소개했습니다. 이는 프로세스를 무한히 일시 중단합니다. 하지만 프로세스를 특정 시간 동안만 일시 중지해야 한다면 어떻게 할까요? wait;를 완전히 제거하면 컴파일러 오류가 발생합니다. 모든 VHDL 프로세스는 최소 하나의 wait 문을 포함해야 하는 무한 루프이기 때문입니다. 루프는 begin과 end process; 사이에서 계속 실행됩니다. 이 기사는 기본 VHDL 튜토리얼 시리즈의 일부입니다. wait;가 실행을 영원히 멈추는 반면, wait
이전 튜토리얼에서는 wait for 문을 사용한 타이밍 지연과 프로세스 루프를 다뤘습니다. 이제 코드를 한 번 실행한 다음 특정 조건이 충족될 때까지 블록을 반복하는 핵심 VHDL 구조인 loop 문에 초점을 맞춥니다. 프로세스는 무한히 실행될 수 있지만, 종종 우아하게 빠져나올 수 있는 제어된 루프가 필요합니다. VHDL의 loop 문은 이러한 구조의 가장 단순한 형태이며, exit가 발생할 때만 종료됩니다. 단순 루프의 구문 loop -- 문장들 end loop; 각 exit는 자신이 속한 가장 안쪽 루프를 빠져나오며, 어떤 루
이전 튜토리얼에서는 loop 문을 사용한 무한 루프 생성과 exit로 빠져나오는 방법을 탐구했습니다. 루프를 특정 횟수만큼 실행해야 한다면? For-루프가 가장 직관적인 해결책입니다. For-루프는 정수 또는 열거형 항목의 고정 범위를 순회합니다. 현재 반복 값은 암시적으로 선언된 상수를 통해 루프 내부에서 자동으로 사용 가능합니다. 이 기사는 기본 VHDL 튜토리얼 시리즈의 일부입니다. 구문 for <상수> in <범위> loop -- 루프 본문 end loop; 여기서 <상수>는 루프 카운터의 사
이전 for 루프 탐구에 이어, 이 튜토리얼은 while 루프를 다룹니다. while 루프는 미리 정해진 범위가 아닌 동적 조건에 따라 반복을 제어할 수 있는 강력한 구조입니다. while 루프는 지정된 조건이 true로 유지되는 동안 본문을 반복 실행합니다. 이는 반복 횟수가 런타임 데이터나 복잡한 로직에 의존하는 시나리오에 이상적입니다. 이 게시물은 기본 VHDL 튜토리얼 시리즈의 일부입니다. 구문 while <조건> loop -- 루프 본문 end loop; <조건>은 부울 값으로 평가되어야 합니다. 단순
VHDL 기초 실력 테스트 – 인터랙티브 퀴즈 파트 1 기본 VHDL 튜토리얼 시리즈의 첫 번째 챕터를 완료하신 것을 축하합니다! 이 퀴즈로 지식을 테스트해 보세요. 각 질문은 핵심 개념을 강화하고 VHDL 전문가가 되기 위한 진행 상황을 가늠하는 데 도움이 되도록 설계되었습니다. 1. 이 프로세스의 문제점은 무엇인가요? Wait 문이 없습니다 process is 뒤에 세미콜론 누락 프로세스에 입력이 없습니다 - 계속 >> 2. i 값이 몇 번 출력될까요? 무한 번 0번 1번 - 계속 >
이전 튜토리얼에서는 프로세스 내에서 변수를 선언하는 방법을 탐구했습니다. 변수는 지역적인 알고리즘 작업에 이상적이지만, 해당 프로세스 외부에서는 볼 수 없습니다. 설계의 다른 부분과 값을 공유해야 할 때는 신호(signal)를 사용합니다. 신호는 아키텍처의 선언 영역에 선언됩니다. 즉, architecture <아키텍처명> of <엔티티명> is 줄과 begin 키워드 사이입니다. 이 게시물은 기본 VHDL 튜토리얼 시리즈의 일부입니다. 신호 선언 구문:signal <이름> : <타입>;
이전 튜토리얼에서는 VHDL에서 신호와 변수의 차이점을 탐구했으며, 신호는 변수보다 넓은 범위를 가지며 변수는 단일 프로세스에 국한됨을 강조했습니다. 다음 논리적 질문은 신호를 사용하여 여러 프로세스를 조정하는 방법입니다. 친숙한 wait;(무한 대기)와 wait for(시간 기반 대기) 외에도, VHDL은 이벤트 기반 동기화를 위한 두 가지 강력한 문을 제공합니다: Wait On과 Wait Until. 이들은 wait for와 결합하여 정교한 제어 흐름을 만들 수도 있습니다. Wait On wait on 문은 나열된 신호 중 어느
이전 튜토리얼에서는 두 카운터 신호가 일치할 때만 프로세스를 트리거하기 위해 Wait Until 문과 조건식을 사용했습니다. 만약 다양한 입력에 따라 프로그램이 다른 동작을 취해야 한다면 어떻게 할까요? If-Then-Elsif-Else 구조를 사용하면 로직을 분기할 수 있습니다. 변수의 값이나 표현식의 결과에 따라 프로그램은 서로 다른 경로를 따릅니다. 이 기사는 기본 VHDL 튜토리얼 시리즈의 일부입니다. 기본 구문 표준 형식은 다음과 같습니다: if <조건> then elsif <조건> then else
실무급 VHDL에서 프로세스는 일반적으로 wait 문 대신 민감도 리스트(sensitivity list)에 의해 구동됩니다. 민감도 리스트는 프로세스를 깨워야 할 모든 신호를 열거합니다. wait on과 wait until은 시뮬레이션에 편리하지만, 합성 가능한 RTL에서는 거의 사용되지 않습니다. 합성에서 wait 문은 종종 무시되어 예측 불가능한 하드웨어를 초래합니다. 반면 민감도 리스트는 합성 도구가 신뢰성 있게 구현할 수 있는 조합 논리 또는 클럭 동기 블록에 직접 매핑됩니다. 기본 VHDL 튜토리얼 – 프로세스 민감도 시
VHDL에서 std_logic 타입은 물리적 와이어 상의 단일 비트를 표현하는 초석입니다. 이전 튜토리얼에서 쓰인 단순한 integer 타입과 달리, std_logic은 실제 디지털 신호 동작을 더 정확하게 모델링하는 풍부한 값 집합을 제공합니다. 디지털 핀은 보통 로직 하이(1)나 로직 로우(0)를 나르지만, 물리적 신호는 하이 임피던스, 약한, 미정의 상태도 나타날 수 있습니다. std_logic 타입은 이 모든 가능성을 포착해 VHDL 설계에서 가장 빈번히 쓰이는 타입입니다. 이 글은 Basic VHDL Tutorials 시리
std_logic_vector 타입은 VHDL에서 시그널 버스를 정의하는 표준입니다. std_logic이 단일 와이어 상태를 모델링한다면, std_logic_vector는 이를 와이어 배열로 확장해 멀티비트 버스 표현을 가능케 합니다. 단일 비트 std_logic과 달리 std_logic_vector는 복합 타입—std_logic 요소의 인덱스된 컬렉션입니다. 임의 개수 비트를 담을 수 있어 멀티비트 데이터를 교환하는 컴포넌트 연결에 이상적입니다. 이 블로그 글은 Basic VHDL Tutorials 시리즈의 일부입니다. std_l
VHDL