묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
github주소 알려주세요
20강 bram코드 확인하려고 하는데코드를 어디서 확인해야 하나요? (matbi86에는 코드가 안 보이네요 ㅠ)
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
VIM 개발환경 질문
먼저, 질문 공지사항에서 수업과는 무관한 내용은 질문 삼가해달라고 하신것 같아서 미리 죄송하다는 말씀드립니다. ㅠㅜ 현재 사용 중인 vim 에 다양한 기능을 추가하고 싶은데, 인터넷을 뒤져봐도 깔끔하게 정리가 안되어..혹시 맛비님이 사용 중이신 개발환경을 공유해주실 수 있을까 하여 질문 올립니다._vimrc 환경을 말씀드리는거에요! 혹시 실례가 안된다면, 어떤 것들을 추가하는게 좋은지, 가장 기본적인 환경이라도 추천해주시면 정말 감사하겠습니다. (지금은 tab, space 정도만 추가하고 사용 중입니다) 좋은 강의 항상 감사드립니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
명령어 자동완성
안녕하세요사진처럼 end까지만 치고 목록이 보이게 하려면 어떻게 하면 되나요?? ctrl + n을 누르면 되나요? =================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
lab2 exam 시뮬레이션 시간 관련하여 질문있습니다.
안녕하세요 맛비님!Lab2 exam부분 진행하면서 simulation을 돌릴 때 simulation이 멈추는 문제가 계속 발생합니다..처음에는 cnn_kernel module이 가장 하위 module이라 이 module이 문제 없이 동작하게 설계하면 다른 module들도 비슷하게 하면 될 것 같아서 제가 따로 testbench 파일을 만들어서 동작을 확인해보려 했는데, input valid 신호가 들어오기 직전 부분에서 자꾸 simulation이 멈춰버립니다...그래서 제가 구글링을 해봤는데 testbench 작성이 bad 해서 그럴 수 있다는 얘기 정도밖에 안나오네요...(testbench 작성은 지금까지 제공해주신 testbench 파일과 거의 비슷한 flow로 reset_n을 주고 i_in_valid 를 high로 주고 output관찰하려고 했던 단순한 testbench였습니다) 그래서 나머지 모듈도 모두 코딩을 하고 맛비님이 제공해주신 run.py를 통해서 제대로 동작하는지 simulation 해보려고 했는데, 또 simulation이 멈춰버립니다..여기서 더 진행이 안됩니다..waveform 옵션이 있어서 그런가 하고 그냥 waveform gui없이 돌려봐도 Start이후에 진행이 안됩니다...강의 중에 3D이상의 array 선언을 하면 simulation time에 문제가 있어 vector 선언 후 Indexed part select를 통해 설계하셨다고 하셨는데, 저도 제공해 주신 frame안에서 그냥 TODO 부분만 Indexed part select를 통해서 코딩한 건데 왜 이런 문제가 발생하는지 잘 모르겠습니다. 제가 작성한 code에 문제가 있으면 simulation 결과를 보고 수정해서 정상적으로 동작하게 하고 싶은데 simulation이 완료가 안되니 어떻게 해야 할지 모르겠습니다... Matbi님의 lab2_solve 부분을 잠깐 확인을 했는데 크게 다르게 작성하지 않은 것 같은데 lab2_solve에서 run.py를 실행해보면 정상적으로 결과가 나옵니다.Verilog HDL이랑 FPGA강의를 수강해오면서 simulation이 멈춰서 디버깅을 못하는 경우는 없었는데 simulation이 멈춰버리니까 어떻게 디버깅을 해서 진행을 해야 할지 정말 모르겠습니다... 이럴 때는 어떻게 접근해야 하는지 여쭤보고 싶습니다.긴 글 읽어주셔서 감사합니다!
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
SPI에서 Master 내의 miso 값 update 과정에서 질문있습니다.
안녕하세요. FPGA_intro_v16.pdf 파일 내의 chapter 6.2.3에서 질문이 있습니다.152-182 line에서,miso의 값을 update하는 과정에서, freq=100이라고 한다면, SLAVE_ID[7]이 update 된 후 SLAVE_ID[6]은 90 clock cycle 후에 update 되는 것으로 보입니다. 그 이후에는 200cycle마다 SLAVE_ID[6] ~ wdata[0]까지 주기적으로 update 되는 것으로 보입니다.제가 코드를 잘 해석한 것이 맞다면, SLAVE_ID[7]과 SLAVE[7] 사이에서만 주기성이 깨진(?) 것으로 보이는데 이는 ready state에서 data를 한 bit라도 미리 보내서 s_send에서 소모되는 clock cycle을 조금이라도 줄이기 위함인지, 다른 특별한 목적이 있는지, 저의 해석이 틀린 것인지 궁금하여 질문드립니다.
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
CNN paper review 영상 관련 질문있습니다.
안녕하세요 맛비님. AI HW 6장 강의를 들으면서 MAC연산량 관련하여 의문점이 생겨서 질문 드립니다. https://www.inflearn.com/questions/735204/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94-%EC%B1%95%ED%84%B06-7%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4(관련 질문글 링크) 1. 강의에서는 weight 수를 "kernel의 sample수"라고 하셨는데, 위 질문 답변의 A2에서 처럼정확히는 Convolution layer에서의 weigth 수는 "kernel의 sample수 * Output channel 수"가 맞지 않나요? 즉, OCH :output channel수 * (ICH * Kx * Ky : Kerner의 sample 수) 2. Convolution layer에서의 MAC수를 계산할 때는 Kernel size * Input Channel * Output Channel 을 한 게 output feature map의 한 point(1*1*OCH size)에 필요한 연산수 이기 때문에위 질문 답변에서의 A1.하나의 layer 에서의 MAC 량 = OCH* ICH * KX * KY이 아니라Kernel size * Input Channel * Output Channel* Output Feature map Size를 하여하나의 layer 에서의 MAC 량 = OCH * ICH * KX *KY* (Output Feature Map size)를 해줘야 맞는게 아닌가 싶습니다. 3. AI HW 6장의 교안에 LeNet-5 Network구현에 필요한 MAC연산수가 341k라고 되어있는데, 첫 Conv layer에 필요한 MAC연산은 (2번이 맞다면) 5*5*1*6*28*28 = 117,600이고 두 번째 Conv layer에 필요한 MAC연산은 5*5*6*16*10*10 = 240,000으로 두 개의 Conv Layer에서의 MAC연산량만 해도 357.6k로 341k를 넘는데 Fully Connected Layer에서의 MAC연산량을 더하면 더 커질 것이라 생각하는데 MAC연산량이 341k가 맞나요?? 정확한 값을 알고 싶습니다.117.6k+240k+20*84+84*10 = 368.52k가 맞나요? 구글링해도 MAC수에 대한 자료는 잘 안나와서요.. 3-1. Fully Connected Layer가 2개라고 하시고 C5-F6에 하나, F6-OUTPUT에 하나 해서 두 개라고 하셨는데, 검색을 해보니 F6-OUTPUT은 Gaussian connected layer라고 fully connected layer가 아니라고 하는데, 뭐가 맞는건지 잘 모르겠습니다.. S4-C5/ C5-F6가 두 개의 FC layer인건가요? 4. HW engineer라면 연산량을 잘 파악할 수 있어야 된다고 하셨기에, Network Model을 보고 Weight와 MAC연산수를 잘 파악할 수 있어야 될 것 같다고 생각해서 정리를 해보았는데FC Layer에서의 Weight = Edge의 개수 = Input Node * Output NodeFC Layer에서의 MAC = Weight와 동일Conv Layer에서의 Weight = "kernel의 sample수 * Output channel 수" = OCH *ICH * Ky * KxConv Layer에서의 MAC = (Output Feature Map 의 Size) * Weight 수 = (Output Feature Map 의 Size) * OCH * ICH * Ky* Kx라고 생각했는데, 옳게 파악한 것이 맞을까요? 항상 강의 잘 듣고있습니다. 바쁘신데도 질문에 친절하게 답변해주셔서 감사합니다 맛비님!긴 글 읽어주셔서 감사하고 좋은 하루 되세요 :)
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
$display 표시 및 .str 파일 관련
안녕하세요. clk gen 관련 강의를 듣다가 궁금증이 생겨서 질문 남깁니다.올려주신 tb_clock_generator 코드에는 $display 구문이 몇개 존재하는데, build시 구문들은 어디에 표시되는지 궁금합니다. (터미널 상에는 안보이는 것 같습니다) 또한 실행시 vivado_pid2420.str 파일이 생성되는데 (clean에는 걸리지 않는 파일형식이었습니다)이 파일의 정체와 생성되는 이유가 궁금합니다! 감사합니다.
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
수업자료 다운로드
수업자료를 마이크로소프트 원드라이브에서 txt상의 키를 이용해 다운을 받았는데 받은 zip이 비어있다고 나옵니다. 압축해제를 진행하려고 해도 invalid하다고 하네요. =================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
13장 pipeline 질문있습니다
예제에서 매 cycle 마다 하나의 출력이 나오므로 throughput이 1 cycle 이라고 하셨습니다. 만약 2 cycle 마다 하나의 출력이 나온다면 throughput은 2 cycle이 되는 것인가요 아니면 0.5 cycle이 되는 것인가요?최대(가장좋은) throughput은 1 cycle인가요? 아니면 더 빨라질 수 있을까요?
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
안녕하세요 i2c master 부분에 관련하여 질문있습니다.
reg scl_o;always @(posedge mclk or negedge reset)beginif(~reset) scl_o <= 1'b1;else scl_o <= s_idle ? 1'b1 :s_start_runw ? ((srw_cnt1==period2) ? ((srw_cnt2==5'd20) ? 1'b0 : ~srw_cnt2[0]) : scl_o) :s_runw ? (( rw_cnt1==period2) ? ((rw_cnt2 ==5'd19) ? 1'b0 : rw_cnt2[0]) : scl_o) :s_stop_runw ? ((prw_cnt1==period2) ? ((prw_cnt2==5'd19) ? 1'b0 : ((prw_cnt2>=5'd20)&&(prw_cnt2<=5'd22)) ? 1'b1 : prw_cnt2[0]) : scl_o) : s_start_runw ? ((srw_cnt1==period2) ? ((srw_cnt2==5'd20) ? 1'b0 : ~srw_cnt2[0]) : scl_o) :s_runw ? (( rw_cnt1==period2) ? ((rw_cnt2 ==5'd19) ? 1'b0 : rw_cnt2[0]) : scl_o) :이 부분에서 ~srw_cnt2[0] 부분과 rw_cnt2[0]부분을 왜 이렇게 설계하신건지 알수있을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
.config에서 편집하기
강사님께서 답변 도와주신 덕분에 반복하다보니 다시 이 과정까지 올 수 있었습니다!! 제가 어제 설치를 진행할 때 이 부분에서 강의 내용을 보면 저 /tools를 지우고 새로운 주소를 입력하시는데, 저 /tools가 안 지워져서 재설치를 진행했었습니다. 혹시 저 /tools를 지우는 방법을 알려주실 수 있나요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
ubuntu 완전 삭제 후 재설치
우분투 설치 진행을 하다가 거의 다 완료한 상태에서 갑자기 오류가 발생해 삭제 후 재설치를 했는데 이 오류에서 벗어나질 못합니다...ㅠㅠ다른 분의 질문에서 남겨주셨던 WSL 제거 링크도 해보았지만 소용이 없었습니다..한 6시간정도 머리 싸매고 모든 방법을 시도해보다가 안 돼서 혹시나 예전에 방법을 찾으셨나 싶어서 지푸라기라도 붙잡는 심정으로 글 써봅니다..
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
HDL 14장 실습관련 질문 있습니다.
안녕하세요 맛비님 14장 8승기 설계 후 Simulation 과정에서 의문점이 들어 질문 드리게 되었습니다.1) 우선 simulation결과는 위와 같은데, r_valid, o_valid가 0으로 초기화(@100ns)는 되었는데 그 다음 rising edge부터 Z로 나오네요. 제 코드가 문제가 있어서 이렇게 나오나 싶어서 맛비님의 코드로 다시 돌려봐도 이렇게 나옵니다. 혹시 다른 질문 내용 중 문제점을 찾을 수 있나 확인해봤는데, high impedence Z는 signal이 연결되지 않은 거라고 답변해 주셨는데, 올려주신 코드대로 simulation을 돌렸는데 왜 이렇게 되는 건지 이유가 궁금합니다.2) Testbench의 Initial Block에서0부터 99까지의 수의 8승을 test하기 위하여 위 코드를 사용하셨는데,@(posedge clk);부분이 있는 이유가 뭔지 궁금합니다. Clock의 positive edge에서 반응하긴 하지만, 그 다음에 뭔가를 하지 않고 바로 다음 loop를 돌거나, for문을 탈출하는데, 결국 이 부분이 하는 역할이 뭔지 궁금합니다. @(posedge clk); 이후에 지시하는 바가 없기 때문에 결국 sensitivity list를 통해서 들어왔다 해도 없는거랑 똑 같은 것 아닌가요? 아니면 다음 negedge가 오기 전에 posedge까지 해당 loop를 유지하기 위해 있는 건가 싶기도 했는데 그런 의미인가요? 어떤 의미가 있는 부분인지 여쭤보고 싶습니다! 3) 강의 듣다가 문득 생각이 난 것인데, 왜 Linux(WSL)환경에서 설계를 하는게 중요한가요?결국 synthesis까지 가면 Linux기반의 EDA tool을 쓸 수밖에 없어서 그런건가요? script기반의 자동화에 용이해서 그런가요? 어떤 점에서 rtl 엔지니어들이 대부분 현업에서 Linux기반으로 작업을 하시는데 큰 이유가 되는 것인지 궁금합니다. 중요하다고 말씀은 하셨는데, 아직 체감이 되는 단계는 아니어서요.. 긴 글 읽어주셔서 감사합니다. 강의 항상 잘 듣고 있습니다 :)
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
exit 해서 root 빠져 나오기
exit 써서 root 나오시라 했는데 아무리 해도 ,, root인데 어떡하죠?...ㅜㅜ
-
해결됨Verilog FPGA Program 2 (MicroBlaze, Arty A7-35T)
한 페이지가 안보입니다.
개발보드가 도착하기전에 한번 전체페이지를 돌려보았는데, 딱하나 아래 페이지가 안보입니다.저만그럴까요?? 섹션 7. lwIP활용lwIP 활용 - 11
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
WSL기반 vivado설치를 D드라이브에 설치
유튜브에 올라온 vivado2022.2설치를 보면서 따라하던 과정에서, 제가 우분투, mobaxterm, vivado가 설치되는 리눅스 환경까지 C드라이브가 아닌 D드라이브에 설치를 하고 싶습니다. 리눅스 환경은 C드라이브에서만 가능한가요? D드라이브의 용량만 사용할 수는 없는 건가요? wsl을 microsoft store에서 다운을 받으니, 설정에서 의도적으로 새로 설치되는 앱을 D드라이브로 향하도록 설정하였습니다. 그렇고 나서 D드라이브에 WindowsApps라는 파일이 자동으로 생성되었습니다. 그 상태에서 wsl을 microsoft store에서 다운을 받고 실행했을 땐 정상적으로 작동했습니다. 하지만 저는 정확히 wsl(ubuntu)가 정확히 어디에 설치되었는지 의심이 되었고, 찾아보던 중 앱의 위치를 바꾸는 방법이 있었습니다. 그래서 이것을 따라 우분투를 D드라이브로 이동을 시켜보았습니다. 최종적으로 다시 ubuntu를 실행해 보니 "파일을 찾을 수 없다고" 나왔습니다.C드라이브 용량을 사용하지 않고, D드라이브에 리눅스 포함 vivado 모든 파일을 저장하는 것이 가능한가요?
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
CNN 연산 모듈 질문입니다.
안녕하세요 맛비님.맛비님께서 3차원 Convolution 연산 모듈을 설계하기 위해서 3개의 계층을 가진 모듈로 설계하셨던 것에 궁금한 게 생겨서 질문드립니다.1차원 연산을 위한 최하위 계층, 그 위의 2차원 연산을 위한 하위 계층, 그 위의 3차원 연산을 위한 Top 계층, 이렇게 세 개의 계층을 나누셨는데,1.한 모듈에서 Register를 많이 추가하여 이 기능을 전부 할 순 없나요? (FSM으로) 즉 하나의 계층을 가진 모듈로 3차원 연산 모듈을 구현할 수는 없는 건가요?2. 이와 같이 할 경우 단점이란 것이 존재할까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
chapter_2 , build 파일 실행불가...
기존에 이미 작성되어있던 코드를 지우고 제가 영상보면서 연습 차 다시 작성했는데..-_-;저장하고 그 후에 ./build 실행하니 다양한 오류가 뜨더라구요... raineesm@DESKTOP-VLU7A79:~/Matbi_VerilogHDL_Season1/chapter_2$ ./buildWARNING: [XSIM 43-3479] Unable to increase the current process stack size.INFO: [VRFC 10-2263] Analyzing Verilog file "/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v" into library workINFO: [VRFC 10-311] analyzing module tb_clock_generatorERROR: [VRFC 10-8414] extra comma in port association list is not allowed [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:56]ERROR: [VRFC 10-8530] module 'tb_clock_generator' is ignored due to previous errors [/home/raineesm/Matbi_VerilogHDL_Season1/chapter_2/tb_clock_generator.v:21]Vivado Simulator v2022.2Copyright 1986-1999, 2001-2022 Xilinx, Inc. All Rights Reserved.Running: /home/raineesm/tools/Xilinx/Vivado/2022.2/bin/unwrapped/lnx64.o/xelab tb_clock_generator -debug wave -s tb_clock_generatorMulti-threading is on. Using 2 slave threads.ERROR: [XSIM 43-3225] Cannot find design unit work.tb_clock_generator in library work located at xsim.dir/work.ERROR: Please check the snapshot name which is created during 'xelab',the current snapshot name "xsim.dir/tb_clock_generator/xsimk" does not exist
-
미해결설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
CNN 알고리즘 + FPGA 연동 방법
맛비님 안녕하세요! 항상 좋은 강의 감사합니다. 다름이 아니라, 질문 사항이 있어 글 남기게 되었습니다.CNN 가속기를 설계한 후 YOLO나 Lesnet과 같은 알고리즘과 접목하여 CNN 객체 인식을 동작하고 싶은 상황입니다. 하단의 프로세스로 진행하는 것을 생각하고 있는데 각 단계별 가능여부가 궁금합니다. 1) XIlinx 상에서 CNN 알고리즘 library를 import한다-> (vitis AI 라이브러리가 있으나, 이를 지원하는 보드가 한정적이라, 해당 라이브러리가 아닌 다른 라이브러리 혹은 tool이 있는지 궁금합니다)2) 알고리즘에서 CNN 연산 가속기 부분만 따로 가져와 연산을 돌린 후 Vitis 상에서 입력 받는다-> 이러한 구상이 적용 가능한지 궁금합니다. 편하실 때 답변 부탁드리겠습니다. 감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
bashrc 경로 설정
제가 복습하며 공부하다가 실수로 파일을 몇개 지워서 일부를 복구했고 .bashrc를 다시 설정하려는데 어떤 것이 문제인지 도저히 모르겠습니다.위와 같이 source를 직접 설정해주고 하면 실행은 됩니다.위 사진은 .bashrc 에디터로 들어와 source 경로를 설정하였습니다. home의 상위 디렉토리에 mnt/d드라이브를 설치하였기 때문에 위와 같이 디렉토리를 설정하였습니다.