묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
직무 면접에 관한 질문이 있습니다
안녕하세요 맛비님.저는 맛비님 강의를 수강중인 취준생입니다.다름이 아니라 면접과정에서 궁금증이 생겨서 질문을 남기게 되었습니다.저는 전자공학과를 전공으로 했으며 3학년 까지 임베디드 관련 프로젝트를 하고 수상도 했습니다. 그런데 4학년에 rtl 엔지니어에 관심이 생겨서 공부를 시작했습니다. 유튜브나 전공 강의들을 통해서 verilog의 기초 문법을 다지고 디지털 로직에 관한 기초를 쌓았습니다.하지만 기업 면접에서는 3학년때까지 임베디드 관련 활동을 했으면서 왜 1년도 안되는 경험으로 rtl 엔지니어로 지원하느냐는 질문을 받았습니다.그래서 반도체에 관심이 많았고 설계에도 관심이 있어서 rtl에 지원하게 되었다고 말씀드렸습니다. 그리고 추가로 유튜브와 사설강의를 통해서 부족한 부분을 보완하고 있다고 말씀드렸습니다. 면접관님은 이 답변을 들으시고 기업에서는 저런 수준의 공부량으로는 같이 일을 할 수 없다는 말을 들었습니다.그래서 궁금한점이 실제로 회사에서 일을 하기 위해서는 높은 수준의 능력이 필요한지 궁금합니다. 참고로 제가 지원한 회사는 중소기업입니다.설계독학 맛비님의 강의들을 따라해보고 학교 강의인 디지털 집적 회로 강의도 복습하고 있는데 이 수준으로는 택도 없을까요..?
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
On-chip vs Off-chip
안녕하세요 맛비님.On-chip memory와 Off-chip memory에 대해서 질문드립니다. Off-Chip memory와 가속기 사이에 On-chip memory가 있는 이유? on-chip memory에 accumulator만 존재하면 되지 않을까요? (dram에서 read되는 data -> On chip의 accumulator -> 가속기). 이런 순서로 데이터가 이동하면 sram read delay가 없어도 되지 않을까요? (On-chip memory가 sram이라는 가정하)병목 현상으로 이 중 가장 느린 device인 DRAM의 속도에 맞춰질 텐데, DRAM에서 주는 data를 accumulator만 거쳐서 바로 가속기에 넣을 수는 없을까요?제가 알기로는, 병목 현상을 방지하기 위해서 빠른 device는 빠른 device 들끼리 묶어서 속도가 빠른 BUS를 사용하고, 느린 device는 느린 device들끼리 묶어서 속도가 느린 BUS를 사용한다고 알고 있는데, 만약 이 말이 맞다면, 빠른 device들과 느린 device들의 연결은 어떻게 해주는지 궁금합니다.Off-chip memory는 chip 외부에 있기 때문에 메모리 내 데이터를 read write 할 때 power 소모가 on-chip 대비 크다라고 말씀하셨는데, 왜인지 잘 모르겠습니다. Chip 내에서만 power 소모가 일어나는 건가요? power 소모의 주체는 누구인지 궁금합니다.감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
can't connect to X11 window server using
질문글은 환영합니다!!! 작성하시기 전에 다음을 확인 부탁드려요 :)============================================================================강의에서 다룬 내용들의 질문들을 부탁드립니다!! (강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요..개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.============================================================================ can't connect to X11 window server using '10.0' 라고 뜨면서 vivado 실행이 갑자기 안되네요 원래 잘됐었는데 뭐가문제인지모르겠습니다.ㅜㅠ
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
강의 내용에 대한 질문입니다. (Lab2 Practice 1)
안녕하세요, 강의 잘 듣고 있습니다.질문이 있는데요, Lab2 Practice 1의 3분 13초 에서 빨간색 네모 박스가 앞선 연산과 동일하다고 말씀하셨어요.앞선 연산은 필터의 크기 (KX, KY)와 동일한 크기를 가지는 CI개 채널 입력에 대한 CO개 만큼의 출력을 생성하는 연산으로 이해됩니다. 그러면 빨간 네모 박스 연산이 위 연산과 동일하려면 첫 번째 라인의 for문이 지금처럼 (y, E: 출력 픽셀 y축 위치) 에 대한 for문이 아니라출력 채널의 수 (m, M: 출력 채널 수) 가 되어야 하는 것 아닌지요? (C코드에서의 m 이 연산 그림에서의 CO로 이해됩니다.) 감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
[HDL 14장] HW 가속기의 비밀인 Pipeline 을 이해해보자 (실습편) 코드 이해
강의를 듣던 중 코드에 대한 이해가 부족해서 그런데, 위의 사진에서의 코드를 보면for(i=0; i<100; i = i+1) begin @(negedge clk); i_valid = 1; i_value = i; @(posedge clk); end에서 @(negedge clk);와 @(posedge clk);를 사용하는 이유를 알 수 있을까요?? 추가로 @(posedge clk);, @(negedge clk);에 대한 문법이 이해가 안됩니다. 설명 부탁드립니다 ㅠㅠ
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
UART, SPI구현
안녕하세요 강의 잘 보고 있습니다!다름이 아니라 저는 zybo 보드를 사용하고 있기 때문에 PS영역에서 PC와 시리얼 통신을 하고 AXI 통신으로 PL영역에서 data를 보내는 방식으로 사용하고 있습니다.제가 궁금한 것은 uart나 SPI 모듈을 따로 구현을 하면 해당 data를 바로 PL영역으로 보낼 수 있는지 궁금합니다!
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
FPGA uart 에러
안녕하세요. 항상 좋은 강의 잘 수강하고 있습니다. CNN을 fpga에 올리는 강의를 따라서 진행하고 있는데 아래와 같이 uart 통신 결과가 출력됩니다.그래서 레퍼런스 문서들을 읽어보면서 이리저리 해보다 아래 사진의 파란색 부분을 qspi와 jtag를 연결하도록 하고나니 정상적으로 작동했습니다.그 후에 몇가지 실험을 해보니 fpga 프로그래밍을 하기 위해서는 sd와 qspi가 연결되어 있어야했고 실제 동작할 때는 qspi와 jtag 연결한 상태이어야만 했습니다. sd, sqpi, jtag에 대한 문서를 읽어봐도 제대로 이해가 가지 않아서 혹시 sd, qspi, jtag에 어떻게 연결하는지가 무엇을 의미하는지 알 수 있을까요?? 감사합니다.zybo z720을 사용하고 있고 강의 영상과 다른 점 없이 잘 진행되었는데 무엇이 문제인지 몰라 질문 드립니다. 감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
build 오류
안녕하세요.vivado 설치 이후 환경설정까지 완료했고 프로그램 실행이 잘 되는 것 까지 확인했습니다.테스트로 build 파일을 진행하니 다음과 같은 오류가 떠서 xvlog를 확인해봤는데 정상적으로 설치가 된 것 같습니다. 어떤 부분이 문제일까요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
[HDL 5장] D FlipFlop 과 Reset 실습 질문
[HDL 5장] D FlipFlop 과 Reset 실습에서,hierarchy를 보면 reg clk; 이랑 reg clk_enable; 을 AND gate로 연산자로 계산했는데, 코드에서 비트연산자 &가 아님 논리 연산자 &&를 상용한 이유를 알 수 있을까요?
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
26분 25초 weights 질문입니다.
안녕하세요 맛비님.26:25초에 weight의 개수에 대해서 질문드립니다.layer1에서 weight가 6개 (2*3) 쓰였고,layer2에서 weight가 6개 (3*2) 쓰였고,layer3에서 weight가 4개 (2:2) 쓰였으면,총 weight의 개수는 6+6+4 = 16개 아닌가요?어떻게 2*3*2*2 = 24개인지 질문드립니다. 감사합니다.
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
수업자료 관련 질문입니다
안녕하세요 맛비님제가 이쪽 (NPU) 관련 자료들을구글에서 참고해 독학을 하였습니다.맛비님 강의를 들어보니, 제가 그동안 찾았던 자료 중 틀린 부분이 몇 가지 보였습니다.그리고 놀라웠던 점이, 교육 자료 중 이미지, 개념 정리가 너무 완벽하게 되신 것이 놀랍습니다. (흐름...)아직 대학교 4학년 (많이 늦었지만..) 저도 나중에 어떤 것을 찾고 이해한 내용을 바탕으로 발표를 해야할텐데, 맛비님 강의의 교육자료의 출처가 어디인지 궁금합니다. (추천하시는 책 or 사이트가 있는지도 궁금합니다.) 그리고, 영어로 된 사이트가 더 신뢰하기 편한가요?저는 영어로 된 사이트보다 한국말로 된 사이트가 좋아서 참고했었는데, 생각보다 한국말로 된 블로그에서 틀린 점이 많았습니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
제가 보려고 만든 Vivado 2022.02 그리고 Ubuntu 22.04 설치 (전부 최신 버전으로) Flow
왠지 전부 최신버전으로 다시 설치하고 싶어 전부 삭제하고 재설치해보았습니다. 굵은 글씨는 제가 재설치하는 동안 시행착오를 거쳐 깨달은 것들입니다. 기본 작업1. sudo passwd: root 계정의 비밀번호를 설정.우분투를 설치하고 커맨드창에서 설정한 비번은 사용자 계정의 비번임반드시 root 계정의 비번은 따로 또 설정해야됨 2. ls -al: 현재 폴더 내의 파일 및 폴더 list 출력 3. pwd: 현재 폴더 경로 확인. 4. mkdir tools: 현재 폴더안에 "tools" 라는 폴더를 생성 Vivado를 설치할 경로임 5. explorer.exe . : WSL의 파일시스템을 Windows 폴더로 open한후 설치파일 복사 6. rm Xilinx_Unified_2020.2_1118_1232_Lin64.bin:Zone.Identifier: explorer.exe의 폴더로 파일을 복사하면 생기는 불필요 파일. 이를 삭제 7. sudo apt-get updatesudo apt upgrade -y: 운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 업데이트하는 명령어 8. sudo apt install gcc -y: gcc (c언어 컴파일러) 설치 9. sudo apt install unzip -y: unzip 설치 10. sudo apt-get install libtinfo5 libncurses5 libxrender1 -ysudo apt install libncurses5-dev libncursesw5-dev -y : Vivado 구동을 위한 library 설치 11. sudo apt-get install language-pack-en-base: 영어 언어팩이 설치가 안되어 있는 경우도 있음 그 경우 Vivado가 실행이 안됨 (이를 확인하는 방법: locale -a) 12. sudo apt-get install openjdk-18-jdk: 설치안하면 Vivado 설치 중 99%중에 java.lang.UnsatisfiedLinkError 이 에러가 일어나 설치가 강제로 취소되어 모든게 물거품이 됨 command line으로 Vivado 설치1. su: root 계정으로 전환 반드시 root 계정으로 전환해야됨 안하면 앞으로 생성할 계정 토큰파일과 Config 파일이 이상한 경로에 저장됨 2. ./Xilinx_Unified_2022.2_1014_8888_Lin64.bin -- -b AuthTokengen : xilinx 계정 토큰 생성 3. ./Xilinx_Unified_2022.2_1014_8888_Lin64.bin -- -b ConfigGen: config 파일 생성 4. vi /root/.Xilinx/install_config.txt: 생성된 config 파일을 편집함.A. WSL환경에서 USB연결을 자체적으로 지원하지 않기 때문에 WSL에서 FPGA에 Upload하는건 무리임 zynq7000빼고 [FPGA 보드 이름]: 1에서 1을 전부 0으로 만들어 줌(https://learn.microsoft.com/ko-kr/windows/wsl/connect-usb WSL으로 USB연결 가능하네요)(https://www.inflearn.com/questions/755388/wsl%EC%83%81%EC%97%90-usb%EC%97%B0%EA%B2%B0%ED%95%B4%EC%84%9C-fpga%EC%97%90-bitstream-upload-%ED%95%98%EB%8A%94-%EB%B2%95 제가 해봤습니다) B. 설치 경로를 /home/[사용자 계정]/tools/xilinx로 설정함앞글자를 대문자 X(Xilinx)로 설정하면 settings64.sh를 찾을 수 없다는 오류가 뜰거임 vivado install 시작./Xilinx_Unified_2022.2_1014_8888_Lin64.bin -- -a XilinxEULA,3rdPartyEULA -b Install -c /root/.Xilinx/install_config.txt 설치 실패후 우분투 삭제하고 다시 설치하고 싶을 때1. Ubuntu 22.04를 프로그램 추가/제거에서 제거하기2. 마이크로소프트 스토어에서 설치도중 오류가 발생하면 C:\Users\[사용자 계정]\AppData\Local\Packages에서CanonicalGroupLimited.Ubuntu22.04LTS로 시작하는 폴더를 파워셀에서 rd /s /q 명령어를 이용하여 강제 삭제 하면 됨 Vivado 설치가 완료되면1. exit: root 계정 종료2. vi ~/.bashrc: vi 에디터로 .bashrc를 열음맨 밑에서 (명령모드에서 shift + G 누르면 맨 하단으로 내려간 다음 입력모드로 전환)source /home/kiyoshi/tools/xilinx/Vivado/2022.2/settings64.sh 를 추가함A. 위 명령은 설치한 Vivado의 환경을 잡아주는 shell script (export 등)가 들어있음B. .bashrc 파일: terminal open 시 자동으로 실행되는 명령어가 들어있음. 3. logout: WSL에서 나간 다음 다시 WSL 실행해 보고 bash에러가 나는지 확인 4. vivado: Vivado를 gui환경에서 실행해서 잘 설치 되었는지 확인 잘못된 정보 있으면 피드백 부탁드립니다. 감사합니다!
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
안녕하세요, 챕터6,7에 대한 질문입니다.
안녕하세요, 좋은 강의 감사합니다. 1. MAC을 늘렸을 때 더 빠르게 연산이 된다고 하시면서 M(CO)에 동그라미 치셨는데 MAC과 M의 관계에 대해 직관적으로 연관짓기가 어려워서 어떤 관계인지에 대해 질문드립니다. 그리고 MAC은 연산량이라고 이해했는데, 연산량이 늘면 성능이 더 안좋아지는 것이 아닌가요?! 질문드립니다!weight 개수를 CO+edge개수 라고 생각하면 될까요?HW 설계에서 나눗셈이 resource가 왜 많이 드는지 궁금합니다. 단순하게 생각해보면 소수점 처리 때문일까 싶은데, 어떤 컨셉인지 궁금해서 질문드립니다.알렉스넷처럼 batch가 2 이상인 모델은 병렬 연산을 요함으로 batch 1인 모델보다 많은 자원을 사용한다는 것이고, 이는 성능과 비용의 trade off 라고 이해하면 될까요?
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
챕터5 CNN basic 질문입니다
안녕하세요 좋은 강의 감사합니다.1. 강의내용 중 stride를 설명하실 때 output 피쳐맵의 크기가 X/stride, Y/stride로 일반화가 가능하기 때문에 stride가 1이면 input output featuremap 크기가 동일하다고 설명 해주셨는데, 만약 stride가 1일 때, padding이 없다면 X-2, Y-2만큼의 output feature map이 생기지 않나요? padding이 없다면 컨볼루션 할 때 미정의 값으로 연산을 해야할 것 같아서요..! 2.아래의 그림에서 output 채널의 크기는 예시에서 임의로 주어진 것인지 궁금합니다! output 채널의 크기인 24개 만큼의 depth가 weight에 있다고 가정한 예시일까요?
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
SPI와 I2C의 차이
안녕하세요.I2C에 대해 공부를 하고 있던 와중에,직렬 통신 방식으로 대표적인 2가지가 I2C와 SPI가 있는데 어떤 상황에서는 SPI가 유리하고, 어떤 상황에서는 I2C 유리한가요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
FSM Code 질문입니다!
안녕하세요 맛비님 고생많으십니다.맛비님께서 알려주신 코드는 위와 같으며, 위와 같이 설계할 경우 예를 들어c_state 가 A 일 때 output 이 B가 된다고 가정한다면,n_state가 A로 바뀌면 다음 clock에 c_state는 A가 됩니다. 이 때 바로 output이 B가 되지 않습니다. output은 그 다음 clock에 B가 c_state가 A가 됨을 알아차리고 B가 됩니다. 이렇게 Timing 적으로 출력값이 밀릴 바에 위 사진처럼 바꾸는 것은 어떨까요? (n_state를 없애는 겁니다) 위로 했을 때의 문제점과문제가 있다면 clock이 안밀리고 위 예시에서 n_state가 바뀔 때 output이 바뀌도록 설계하려면 어떻게 해야할까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
BRAM read에 관하여
안녕하세요 맛비님BRAM의 데이터를 Read할 때 Testbench에서 address를 1씩 증가시켜서 읽어보면 address와 read data가 동클락에 나오는 걸 방지하기 위해 r_valid로 1 cycle delay 시켜주는 것으로 이해했습니다. 하지만 주소를 생성하는 모듈 ((ex) address를 0부터 15까지 1씩 증가하면서 BRAM에 address를 보내주는 모듈) 과 BRAM을 연결해 Testbench에서 address를 1씩 증가시키지 않고 알아서 address를 BRAM으로 보내주어 시뮬레이션을 돌려보니,r_valid가 존재하지 않아도 read할 때 자동으로 1 cycle delay 미뤄줍니다. 이 이유를 혹시 아실까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
설치파일 실행시 오류
강의시간 14:49로 넘어가는 과정에서 문제가 생겼는데 어떻게 해결해야할지 모르겠습니다에러 내용은 다음과 같습니다ERROR: Installer could not be started. Could not initialize class java.awt.Graph icsEnvironment$LocalGEjava.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvi ronment$LocalGE
-
해결됨설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
Bit Width 설정 관련해서 질문합니다.!
Unisigned Value의 곱셈에 대한 Bit Extension을 통해 16 Bit , 이 값을 32번 누적하게 되면 Overflow를 방지하기 위해 47비트가 필요한 것이 아닌가요? 24비트로 설정된 이유를 여쭤보고 싶습니다!
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
FSM은 밀리머신인가 무어머신인가
안녕하세요 맛비님.다음과 같은 코드를 보면always문 안에는 *(asterisk) 로 combination circuit 즉, clock에 의존하지 않습니다.제가 알기로 무어(MOORE) 머신은 output이 현재 state 에만 의존한다. 클럭 엣지에 의해서만 output이 바뀐다.로 이해하였고,밀리(MEALY) 머신은 output이 현재 state와 input에 의존한다. 클럭의 한 사이클을 기다리지 않고 같은 사이클에서 입력을 바로 출력에 반영한다. 라고 알고 있습니다.그럼 위 코드는 clock에 의존하지않고,1. 현재 상태 = S_IDLE 일 때 현재 입력이 i_run=1이면 clock에 관계없이 바로 output, 즉 다음 상태가 S_RUN으로 되고,2.현재 상태 = S_RUN 일 때 현재 입력이 is_done=1이면 clock에 관계없이 바로 output, 즉 다음 상태가 S_DONE으로 되고,3.현재 상태 = S_DONE일 때 현재 입력에 상관없지만 clock에 관계없이 바로 output, 즉 다음 상태가 S_IDLE로 됩니다.c_state는 clock에 의존하여 변하지만,"밀리(MEALY) 머신은 output이 현재 state와 input에 의존한다. 클럭의 한 사이클을 기다리지 않고 같은 사이클에서 입력을 바로 출력에 반영한다. 라고 알고 있습니다." 에서n_state는 같은 사이클에서 입력을 바로 출력에 반영한다. 라고 보이므로, MEALY 머신이 아닌가요?인터넷에서는 FSM이 MOORE 머신이라고 나와서 질문드립니다!