안녕하세요. 설계독학의 맛비입니다.
현) Global Top5 Fabless기업에서 HW IP 설계하고 있습니다.
세상에 없던 그리고 여러분들의 현업 생활에 도움이 되는, "진짜 반도체 설계 실무 강의"를 만들고 있습니다.
설계독학 로드맵과 함께 여러분들의 실력을 키워보아요.
여러분들과 소통하기 위한 설계독학 커뮤니티 를 운영하고 있습니다.
(커뮤니티에 가입하셔서, 15% 할인쿠폰도 받아보아요.)
함께 즐공하고 성장해요!
Courses
Reviews
leeky749900
·
Design Self-Study Matbi's Practical HW Accelerator Design Using FPGA (From LED Control to Fully Connected Layer Accelerator Design)Design Self-Study Matbi's Practical HW Accelerator Design Using FPGA (From LED Control to Fully Connected Layer Accelerator Design)raykim33107398
·
Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)goodman03
·
Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)emrtms15360
·
Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)Design Self-Study Tastebi's Practical Verilog HDL Season 1 (From Clock to Internal Memory)mini9136
·
Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)
Posts
Q&A
RVALID/RREADY 핸드셰이크 발생 시 RDATA 전이가 발생해도 문제가 없는 이유?
안녕하세요. 올려주신 코드와 파형, 그리고 고민하신 내용까지 잘 봤습니다. 코드 내부 로직까지 뜯어보면서 직접 수정해 보신 시도가 정말 훌륭하네요.결론부터 차분하게 말씀드리면, 질문자님의 걱정은 논리적으로 충분히 해볼 수 있는 합리적인 의심입니다만, 실제 FPGA 구현(합성 및 타이밍) 관점에서는 기존 코드(assign S_AXI_RDATA = axi_rdata;)로 두시는 것이 표준적이고 훨씬 안전한 설계라고 판단됩니다.질문자님이 제안하신 assign S_AXI_RDATA = reg_data_out; 방식으로 바꾸면 시뮬레이션에서는 값이 조금 더 일찍 나와서 겉보기엔 문제없이 돌아가는 것처럼 보일 겁니다. 하지만 실제 칩(FPGA)에 올릴 때 timing 적으로 큰 문제가 생길 수 있습니다.코드를 보시면 reg_data_out은 always @(*) 구문으로 만들어진 MUX 로직입니다. 즉, 플립플롭을 거치지 않은 Combinational Logic (조합 회로) 상태입니다.AXI 같은 버스 인터페이스에서 IP의 출력 포트(S_AXI_RDATA)로 조합 회로 신호를 그대로 내보내게 되면 어떻게 될까요? 슬레이브 IP 내부의 긴 로직 지연 시간부터 외부 AXI Interconnect, 그리고 마스터 IP의 입력 플립플롭까지 배선(Routing) 딜레이가 전부 하나로 합쳐지게 됩니다.결과적으로 나중에 Vivado에서 합성(Synthesis) 및 P&R을 돌렸을 때, 타이밍을 맞추지 못하고 Setup Time Violation (타이밍 에러)이 터질 확률이 엄청나게 높아집니다.정리하자면: 데이터가 안정적으로 넘어가는 시점에 대한 걱정은 안 하셔도 됩니다. 기존 코드(axi_rdata 사용)가 실제 타이밍 확보를 위해 의도적으로 플립플롭 처리를 해둔 정상적이고 튼튼한 구조입니다.즐공하세요!
- Likes
- 1
- Comments
- 4
- Viewcount
- 52
Q&A
Arty z7 -20 보드의 경우
안녕하세요.강의는 Zybo 로 촬영이 되었습니다. Arty Z7 보드로도 강의를 수강할 수 있는지 확인하기 위해서 Peri 를 사용하는 예제로 test 를 하였고요.https://regular-hourglass-93f.notion.site/FPGA-S1-Arty-Z7-10-or-20-b1ba5ccd1c9f4be6bffc19addcfe035e다음 링크의 예제를 충분히 따라오실 수 있다면 수강이 가능하다고 생각됩니다.즐공하세요!(사진)
- Likes
- 1
- Comments
- 2
- Viewcount
- 25
Q&A
terminal 출력이 안됩니다
안녕하세요.올려주신 내용과 에러 메시지를 종합해 보면 원인이 하드웨어 연결 및 보드 세팅 쪽으로 좁혀집니다.가장 먼저 말씀드릴 부분은 첨부해 주신 장치 관리자 이미지의 9600 bps 설정은 원인이 아니라는 점입니다. 윈도우 장치 관리자 포트 설정 탭의 기본값이 9600으로 보일 뿐, 실제 동작 시에는 보드(Zynq PS)에 올라가는 저희 프로그램 코드(BSP)가 UART 속도를 115200으로 강제 초기화합니다. 따라서 Vitis Serial Terminal은 9600이 아니라 반드시 115200으로 다시 맞춰주셔야 합니다.현재 겪고 계신 진짜 문제는 가끔 뜬다고 하신 "Could not find ARM device on the board for connection 'Local'" 에러입니다.이 에러가 발생했다는 것은 PC와 보드 간의 JTAG 연결이 불안정해서, 작성하신 프로그램 자체가 보드의 ARM 코어로 아예 다운로드되지 않았다는 뜻입니다. 프로그램이 보드에 안 올라갔으니 당연히 터미널 출력도 없고 TX LED도 반응하지 않는 것입니다.소프트웨어 세팅(경로 이동 등)은 이미 잘 해주셨으니, 다음 세 가지 물리적인 하드웨어 상태를 꼭 확인해 보시기 바랍니다.보드의 Boot Mode Jumper 확인: 보드에 있는 부팅 모드 점퍼가 반드시 JTAG (또는 Cascaded JTAG)으로 꽂혀 있는지 확인해 주세요. SD나 QSPI 등 다른 모드로 점퍼가 꽂혀 있으면 Vitis에서 ARM 코어를 정상적으로 찾지 못하고 에러를 뱉어냅니다.USB 케이블 및 포트 교체: 선을 뺐다 꽂으면 에러가 사라진다는 건 USB 물리적 연결이 몹시 불안정하다는 뜻입니다. 현재 쓰시는 케이블이 전원 전용이거나 단선이 의심되니, 데이터 통신이 확실히 되는 다른 마이크로 USB 케이블로 교체해 보세요. PC 전면 포트보다는 메인보드 뒷면 포트에 직접 연결하는 것이 좋습니다.프로그램 다운로드 재확인: 케이블과 점퍼를 확인하신 후, 보드 전원을 껐다 켜고 Vitis에서 기존 Run Configuration을 지운 뒤 다시 Run As -> Launch on Hardware로 실행해서 에러 없이 다운로드가 끝나는지 확인해 주세요.JTAG 연결만 안정적으로 맺어져서 프로그램이 정상적으로 Run 되면 터미널 출력은 바로 나올 겁니다.즐공하세요!
- Likes
- 1
- Comments
- 2
- Viewcount
- 14
Q&A
RVALID/RREADY 핸드셰이크 발생 시 RDATA 전이가 발생해도 문제가 없는 이유?
안녕하세요 :) 보내주신 파형 보니까 전혀 문제없는 정상 동작입니다.질문자님이 "VALID를 띄우기 전에 데이터를 먼저 준비해 둬야 하는 거 아닌가?"라고 생각하신 건 AXI 프로토콜의 기본 개념을 아주 잘 파악하고 계신 겁니다. 다만, 지금 보시는 파형이 지연 정보가 없는 RTL 기능 시뮬레이션(Zero-delay)이라서 오해가 생기신 거예요.노란 커서 바로 전 사이클을 보면 이미 RVALID=1, RREADY=1로 핸드셰이크 조건이 들어맞아 있었고, 이때 슬레이브가 준비해서 띄워두고 있던 데이터는 00000000이었습니다.그러다가 노란 커서가 찍히는 그 클럭 에지(Rising Edge) 순간에, 마스터는 미리 준비되어 있던 00000000을 정확하게 샘플링해서 읽어갑니다. 즉, 핸드셰이크(데이터 전송)는 이 클럭 에지 순간에 완벽히 완료된 거죠.그리고 마스터가 데이터를 성공적으로 가져갔기 때문에, 슬레이브는 바로 다음 사이클 전송을 위해서 데이터를 00000001로 갱신한 겁니다.RTL 시뮬레이션에서는 Gate나 Wire의 딜레이가 전부 0으로 처리되기 때문에, 시뮬레이터 파형 상에서는 "이전 데이터 수신"과 "다음 데이터로의 전이"가 같은 클럭 에지에서 동시에 일어나는 것처럼 보일 뿐입니다.실제 하드웨어나 P&R 후 타이밍 시뮬레이션에서는 Flip-Flop의 (Clock-to-Q Delay) 때문에 클럭이 뛰고 아주 미세하게 몇 ps~몇 ns 뒤에 데이터가 바뀌게 됩니다. 즉, 클럭이 뛰는 그 순간에는 변하기 전 데이터(00000000)가 Setup/Hold 타임을 만족하면서 안전하게 넘어가는 게 맞으니 안심하셔도 됩니다.즐공하세요!
- Likes
- 1
- Comments
- 4
- Viewcount
- 52
Q&A
Chapter 16 FSM 관련 질문
안녕하세요. 맛비입니다.질문자님이 짚으신 이유가 핵심입니다. 코드가 복잡해졌을 때 디버깅과 추적성이 급격히 떨어지는 것이 가장 큰 이유입니다.추가로 실무에서 이 방식을 쓰지 않는 대표적인 이유를 정리해 드립니다.FSM 3-Step 분리 이유 (1-Always 구조를 피하는 이유)설계 명확성: State 업데이트(Sequential)와 Next State 계산(Combinational), Output 제어를 분리해야 HW 구조가 한눈에 들어옵니다.의도치 않은 Latency 방지: always @(posedge clk) 안에서 조합논리 조건까지 한 번에 처리하면, 원하는 시점보다 1 클락 늦게 동작하거나 의도치 않은 F/F이 생기기 쉽습니다.localparam과 연산자(+1) 미사용 이유가독성과 디버깅: Waveform 분석 시 숫자(0, 1)보다 S_IDLE, S_RUN 같은 이름이 직관적입니다.FSM 확장성 및 최적화: 상태는 순차적으로만 넘어가지 않고 분기(Branching)하는 경우가 많습니다. c_state + 1 구조는 예외처리가 어렵고, 합성 툴(Synthesis Tool)이 One-hot 같은 FSM 최적화를 수행하는 데 걸림돌이 됩니다.간단한 예제에서는 직관적으로 보일 수 있지만, 확장성과 유지보수를 위해 강의에서 다룬 표준 3-Step 방식과 localparam 사용을 권장합니다.즐공하세요.
- Likes
- 1
- Comments
- 2
- Viewcount
- 79
Q&A
강의 환경(linux) 관련 질문
안녕하세요.윈도우즈라고 못하는건 아닙니다.해당 강의가 Linux 기반으로 촬영이 되었는데요. OS 의 차이이지 주어진 소스코드의 차이는 발생하지 않습니다.다만 환경차이로 인한 시뮬레이션 환경 부분은 직접 해결을 하셔야 할 것 같아요.개인적인 조언으로는 현재 회사에서 윈도우즈가 주력이라고 하지만, 리눅스를 사용하는 회사가 더 많더라고요. 이번 기회에 리눅스와도 친숙해지시는 것도 추천드려요.즐공하세요!
- Likes
- 1
- Comments
- 2
- Viewcount
- 93
Q&A
Arty Z10 관련 문의
안녕하세요.Arty Z10, 과 Zybo Z10 은 같은 Zynq 칩을 기반으로 합니다.따라서 불가능 하지 않다고 판단이 됩니다.해당 ‘설계독학의 임베디드 리눅스 & FPGA: 반도체 설계 완성편' 강의의 제작 당시 Zybo 를 사용했었고, 파란님이 Arty 를 갖고 있지는 않아요. 그래서, 모든 보드에 대해서 지원을 해드리는 것은 어려운 문제라는 생각이 드네요.이 부분은 감안을 하셔서 수강여부를 판단해 주시면 감사하겠습니다.감사합니다!
- Likes
- 1
- Comments
- 2
- Viewcount
- 74
Q&A
수강 순서 질문 있습니다
안녕하세요. 반갑습니다.네, FPGA 와 Verilog Master 는 목적이 달라서 따로 시작하셔도 무방합니다.코테 시즌1을 들으시고 FPGA 를 들으시면 Verilog code 가 쉽게 느껴지실꺼에요.즐공하세요.
- Likes
- 1
- Comments
- 2
- Viewcount
- 85
Q&A
1장. 우분투 환경 셋업 관련 질문드립니다.
안녕하세요!제 경험상 설치시 저 명령어가 필요해서 남겨둔거에요.하지만, 위 명령어 없이 Vivado 를 띄우셨다면, 전혀 필요 없습니다.잘 되는게 중요합니다, 즐공하세요!
- Likes
- 1
- Comments
- 2
- Viewcount
- 61
Q&A
Windows 기능 켜기
안녕하세요.AI 인턴 답변처럼 필수는 아닙니다. 즐공하세요!
- Likes
- 1
- Comments
- 2
- Viewcount
- 80






