FPGA는 전통적인 반도체 설계 과정과 달리, 쉽고 빠르게 설계를 구현할 수 있는 장점을 가진 디바이스입니다. 디자인 소스만 있으면, FPGA의 논리 요소를 활용하여, 즉시 배치 및 연결이 가능합니다. 또한, 하드웨어적인 성격이 강하기 때문에 코드 역시 복잡하지 않고 직관적으로 작성할 수 있습니다.
중요한 것은 FPGA의 설계 개념과 Flow를 이해하며, 나아가서는 설계 목적과 대상에 대해 이해를 하는 것입니다. 이를 바탕으로 디자인 소스의 구조를 최적화하고, 알맞은 제약조건을 입력해 안정적인 FPGA를 설계하는 것이 핵심입니다.
강의에서는 코딩보다는 FPGA 설계 개념과 구조, 설계 방식 및 Flow를 중심으로 구성되며, Step-by-Step 실습 위주의 내용을 담을 것 입니다. 직접 구현하고 실습하며 노하우를 쌓아가는 것이 FPGA 엔지니어의 핵심이며, 앞으로 AI로 대체될 코딩 보다 더 큰 가치가 될 것입니다.
10+ 경력의 FPGA 및 하드웨어 설계 전문가로, 고속 데이터 처리 및 통신 시스템 설계, 영상 처리 등에 특화되어 있으며, 다양한 FPGA 프로젝트에 참여.
아래 Youtube나 Blog에서 추가적인 정보를 얻으실 수 있습니다.
FPGA, RTL, 하드웨어 설계 14년차 엔지니어 입니다. 초보 엔지니어 입장에서 쉽고 자세하게 설명하여 훌륭한 엔지니어가 될 수 있도록 멘토링 하겠습니다.
- 멘토링 분야
- 프로젝트 단계별 맞춤 멘토링 -> 제품 완성 및 디버깅까지 (RTL 설계 가이드)
- 기본 원리 및 구조 이해 -> 쉽고 자세한 설명
- 다양한 프로젝트 경험
* UART, I2C, SPI 등의 기본 통신 인터페이스
* LVDS, USB, Ethernet(1G, 10G), MIPI, Gigabit Transceiver, PCI Express, DDR Controller 고속 인터페이스
* 머신 비전, 무선 통신 및 알고리즘 RTL 설계
- 다양한 FPGA 디바이스: Xilinx, Intel, Lattice, Efinix 등
- 시뮬레이션 및 디버깅 노하우
* 시뮬레이션, 테스트 벤치 설계, 데이터 비교 검증
* Timing Closure(타이밍 에러 해결), Implementation(비트 파일 생성 및 검증)
* 디버깅 방법 및 노하우
- 진행 방식
- Slack 또는 Zoom, Google 등을 이용한 1:1 미팅 (화상 가능)
- 예약이 되면 기재하신 연락처로 접속 주소 안내
- 상호 원할한 대화를 위해 "이어폰과 마이크" 준비가 필요할 수 있음.
- 마이크가 없는 경우 채팅창으로 대화 진행.
- 준비물
- 설계 요구 사항 또는 질문할 내용 리스트
- 블록다이어그램이나 시뮬레이션 파형 또는 RTL 코드
- 또는 위 내용을 준비하는 과정을 함께 할 수도 있습니다.
기본 원리와 설계 과정 및 방법에 대해 중점을 두어, 추후 다른 프로젝트들에 대해서도 자신감을 갖고 접근할 수 있도록 도와드리겠습니다.
강의
수강평
- FPGA로 배우는 실전 이더넷 시스템 구현 – TEMAC IP 기반 Gigabit 통신 설계
- FPGA로 배우는 실전 이더넷 시스템 구현 – TEMAC IP 기반 Gigabit 통신 설계
- FPGA로 배우는 실전 이더넷 시스템 구현 – TEMAC IP 기반 Gigabit 통신 설계
게시글
질문&답변
RTL
안녕하세요.본 강의는 system-verilog 기반으로 하고 있습니다. 해당 코드를 AI를 이용해서 VHDL로 변환 후, 약간만 수정하면, VHDL 코드도 생성하실 수 있을 것 같습니다. 강의 마지막에 제가 생성한 uart_tx.vhd 파일을 추가시켜 놓겠습니다. 시뮬레이션 해서, 기존 uart_tx.sv 파일과 비교해보시면 좋겠습니다.감사합니다.
- 0
- 1
- 31
질문&답변
멀티바이트프레임 로직 예시
먼저, 프레임을 정의해야 합니다.예를 들어, Start Byte(1), Command(1), Address(1), Length(1), Data[0]... Data[Length-1], CheckSum(1), EndByte(1)가 될 수 있습니다. 특정 Address에서 데이터를 읽거나 쓸 때 사용합니다.UART에서 수신 된 데이터에서 Start Byte를 찾습니다.parameter START_BYTE = 8'h7B; always @(posedge clk) begin case (state) IDLE: begin if (rx_data == START_BYTE) state 이후, 설계한 프로토콜에 따라서, Command, Address, Length, Data 값을 각 변수에 저장합니다.parameter START_BYTE = 8'h7B; parameter END_BYTE = 8'h7D; typedef enum logic [2:0] { IDLE, CMD, ADDR, LEN, DATA, CHKSUM, END } state_t; state_t state; reg [7:0] length; reg [7:0] data_index; reg [15:0] checksum_calc; reg [7:0] checksum_recv; always @(posedge clk or posedge reset) begin if (reset) begin state 마지막으로, Checksum을 확인 뒤, 이상이 없다면, 수신한 Command값과 Address, Data에 따라 내부 Register를 설정하거나, 메모리에 데이터를 저장할 수 있습니다.위 예시 코드를 참조하면, 도움이 될 것 같습니다.
- 0
- 2
- 35
질문&답변
vivado 설치 관련하여 질문 합니다.
제가 질문을 잘 이해하지 못해서요.Windows가 아닌 리눅스를 사용한다는 뜻인가요? WSL(Windows Subsystem for Linux) 같은?Vivado 실행 메모리가 부족하다는 뜻인가요? 아니면, 특정 디바이스(virtex같은) 사용에 실행 메모리가 부족한 것인가요?
- 0
- 2
- 46