묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
FPGA 실습 파일 다운로드가 안되네요..
수업 자료 txt파일은 정상적으로 다운로드가 되는데 실습파일은 다운로드를 눌러도 아무 반응이 없네요. 혹시 몰라서 OneDrive 재설치도 해보고 모바일 다운로드도 시도해봤지만 똑같았습니다. 제가 전에 다운로드를 한 번 받긴했는데 그때가 8월쯤이었고 새로운 파일들 추가된 것들이 좀 있길래 다시 받으려고 했거든요. 이게 한번만 다운로드 가능하게 막아놓으셨을 것 같진 않은데 이 부분 확인 한 번 부탁드려도 될까요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
r_valid 관련 질문드립니다. (14장 Pipeline)
열심히 달았는데, 지우셔서 남겨둡니다 :) 안녕하세요. 제공 해 주신 power_of_8.v에서 r_value 신호를 이용하여 뭔가 체크하는 것이 없는 것 같습니다. 그럼 power_of_8 module의 output인 o_valid 신호를 다른 module에서 input으로 받아 o_power_of_8 신호의 데이터가 valid한지를 판단하기 위해서 사용하는 것인가요? ================================= 안녕하세요 :) r_value ? 라는 신호가 있었나요..? (검색하니까 없는데, r_valid 를 의미하는 거다 생각하고 답변드리겠습니다.) 현재 예제에서는, Throughtput 이 1 cycle 에 매번 Data 가 출력되도록 pipeline 되어 있습니다. 즉 input valid 의 파형을, output valid 가 그대로 따라가도록 되어 있다는 이야기 이고, r_valid 를 사용하지 않아도 ouput valid 에 맞춰서 Data 를 출력할 수 있는 모듈이 되겠습니다. 다만 o_power_of_8 신호가 유효한 시점의 Sync 를 맞춰줄 필요는 있습니다. 그래서 r_valid 를 사용했습니다. 추가로 더 적자면, ========================= 실제로 해당 모듈의 앞뒤로 Blackbox 모듈이 붙는다면, "Ready / Valid handshake" (이거는 FPGA 6,7,8 장? AXI 할때 나오는데) I/F 를 사용합니다. 이때는 r_valid 를 사용해서 설계할 것 같습니다. 질문과는 관련이 없을 수 있지만 handshake 를 사용하는 이유에 대해 적어드리자면, Blackbox 모듈은 말그대로 설계자가 알지 못하는 모듈이 설계모듈 앞 뒤에 사용되는 겁니다. 그 말은 언제 Data 를 주고 받을 수 있는지 모르구요. 이 모호성을 해소하기 위해서 handshake I/F 를 사용합니다. 구글링해서 공부해보세요. ========================= 그럼 power_of_8 module의 output인 o_valid 신호를 다른 module에서 input으로 받아 o_power_of_8 신호의 데이터가 valid한지를 판단하기 위해서 사용하는 것인가요? 네, power_of_8 모듈의 출력을 입력으로 사용하는 뒤의 모듈에게, 유효한(valid) Data 의 timing (시점) 을 알려주기 위해서 사용합니다. 즐공하세요 :)
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
cnt_always 체크 관련 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 코드를 보던 중 궁금증이 하나 생겨서 질문드립니다. counter_100.v 코드에서 43 라인의 cnt_always가 99인지를 체크하는 부분에서 "100 - 1"로 99를 만든 특별한 이유가 있을까요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Xilinx 설치 관련
explorer.exe 명령어가 먹히질 않습니다. exp 입력 후 tap 키를 입력해도 아래처럼 자동완성 명령어가 뜨질 않고 sudo 명령어로도 해결이 되질 않습니다..
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
카운터 코드 질문 드립니다!
안녕하세요 강의 복습중에 의문이 생겨 질문드립니다. 강의에서 카운터를 설계할 때 reg [6:0] cnt를 선언하여 값을 받은 후 o_cnt에 할당을 해주는데 그냥 바로 o_cnt를 always문에 넣어서 값을 받으면 안되나요? 다른 이유가 있는것인지 궁금합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
장치 관리자에서 시리얼 포트를 인식하지 않습니다.
안녕하세요 맛비님. 지금 실습했던 것을 복습하면서 제가 만든 모듈들을 AXI4_Lite를 사용해보는 중입니다. 한달 전만 해도 zybo-z7-20 과 노트북을 연결하면 장치 관리자의 포트에 COM4 라고 잘 떳었는데, 사진에 보이듯이 포트가 뜨질 않습니다 이전이랑 달라진 점은 노트북에 HDMI 로 모니터랑 연결하고 USB 허브로 연결했다는 점인데 이게 문제인가 싶어 다 빼고 다시 연결해 보았습니다만 그래도 COM4가 뜨질 않네요 드라이버 문제일 수도 있다고 해서 검색해서 깔아 봤는데 인식을 하지 않네요 혹시 어떻게 해결해야 할지 알려주실수 있으실까요? +++ 더 찾아 보니 인식은 하는데 COM4 이런식으로 뜨지 않고 범용 직렬 버스 컨트롤러 단에서 인식을 하고 있는것 같습니다. FPGA 연결선을 뺏다가 꼽았다 하면 USB Serial Converterr A/B 가 ON/OFF 되는것을 보아하니 인식을 저기서 하고 있는것 같은데 어떻게 해결해야 할까요??
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
read data의 1cycle delay에 대해 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 때, 아래 코드가 1cycle delay를 위한 코드라고 말씀하셨는데요. (B RAM의 Read data가 올라오는 타이밍이 1cycle 뒤이므로 해당 타이밍을 위해 1cycle delay가 필요하다는 점은 이해했습니다.) 왜 아래 코드가 1cycle delay가 되는지 이해를 못했습니다. ㅠㅠ 죄송하지만 설명부탁드립니다. // 1 cycle latency to sync mem output always @(posedge clk or negedge reset_n) begin if(!reset_n) begin r_valid <= 0; end else begin r_valid <= o_read; // read data end end assign o_valid = r_valid; assign o_mem_data = q0; // direct assign, bus Matbi recommends you to add a register for timing.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
SW 파트 질문드립니다.
안녕하세요 맛비님. 강의 매우 잘 보고 있습니다. 이번 강의 내용에서 lab10_main.c 코드를 분석해보다가 질문드릴께 있어 글을 작성하게 되었습니다. usleep 체크를 한 뒤 FSM을 돌리기 위해 i_run 신호를 발생시키기 전에 IDLE state를 체크하시는 부분을 확인해보고 있었는데요. do{ read_data = Xil_In32((XPAR_LAB10_MATBI_0_BASEADDR) + (STATUS_REG*AXI_DATA_BYTE)); } while( (read_data & IDLE) != IDLE); 이 부분을 아래와 같이 수정해서 어떤 값을 읽고 있는지 확인해보았습니다. do{ read_data = Xil_In32((XPAR_LAB10_MATBI_0_BASEADDR) + (STATUS_REG*AXI_DATA_BYTE)); printf("current state is %d\n",read_data); } while( (read_data & IDLE) != IDLE); 출력되는 값이 5였습니다. 이 말은 IDLE과 DONE이 모두 active high라는 상태 같아서 제가 제대로 이해한게 맞는지 궁금합니다. 연계해서 한가지 더 궁금한점은 do while문이 iteration 하는 횟수가 PL에서 동작하는 클럭과는 무관하게 돌아가는거 같은데요. 이 부분은 DONE 신호를 기다리는 파트에서 마찬가지로 printf 넣어서 갯수를 한번 세어봤거든요. data로 1M을 입력 했으면 do while문도 1M 번 반복할 줄 알았는데 훨씬 많은 횟수의 iteration을 도는 것으로 보이는데요. 이 부분은 PS와 관련이 있는 걸까요? 너무 기초적인걸 질문드리는건 아닌지 조심스럽지만... 용기내어 질문드려봅니다. 감사합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
맛비님 강의PDF나 PPT자료는 혹시 구할 수 있나요?
안녕하세요 FPGA 강의를 수강하고 있는 초보 FPGA엔지니어입니다. 혹시 강의영상에서 사용된 PPT나 PDF자료를 제가 받을 수 있을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
gcc 설치 과정 오류
안녕하세요 맛비님 영상과 가이드를 보면서 리눅스 환경을 설치중에 있습니다. 영상에서 13분 경 vivado bin 파일을 옮기고 나서 gcc 설치 커맨드를 입력했는데 첨부 사진과 같이 에러가 나오는 상황입니다. 이 경우에는 어떻게 해결을 하면 좋을 지 질문드립니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
always문을 나누는 기준이 궁금합니다
always문을 사용하실 때 어떤 기준으로 always문을 나누시는지 궁금합니다. 가령 예를 들면 올려주신 chapter_11에 있는 count 코드를 보면 always 문 2개를 사용해서 모듈을 구성하셨고 그밖에 강의를 보면 다양하게 always문을 나누시는데 같은 동작을 하는 모듈을 always문 하나로 만들 수 있을텐데 나누시는 기준이 어떤건지 궁금합니다. 그리고 작성한 verilog 코드의 가독성을 높히기 위한 팁이나 관련 추천 서적이나 참고 자료가 있으실까요! 제가 이 부분에 대해서 부족한게 많아서 알려주신다면 앞으로 설계를 할 때 도움이 많이 될 것 같습니다. 감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
level sensitive @에 대한 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 맛비님 안녕하세요. 질문 있습니다. Verilog 문법적인 부분은 왠만하면 따로 서칭하여 공부하고 있는데 오늘 실습 내용을 보니, @(posedge clk); 와 @(negedge clk);를 따로 사용하더라구요. 항상 always @() 이런 것만 봐와서 @가 always의 조건으로만 사용되는 줄로만 이해하고 있었습니다. 서칭을 해보니까 level sensitive라고하여 @ 뒤 괄호 안에 있는 신호가 변할 때 실행?된다고 나오더군요. 여기서 질문이 생깁니다. 1. 아래의 내용은 tb_power_of_8.v 내 49번째 줄부터 61번째 줄입니다. # 10 @(posedge clk); $display("Start! [%d]", $time); for(i=0; i<100; i = i+1) begin @(negedge clk); i_valid = 1; i_value = i; @(posedge clk); end @(negedge clk); i_valid = 0; i_value = 0; # 100 10ns 딜레이 후 @(posedge clk);이 나오는데 이걸 해석하면 clk의 rising edge가 발생되기 전까지 polling하는 것인가요? 2. 따로 Verilog HDL의 문법적인 스킬이라고 해야할까요? 뭔가 많은 모듈을 디자인을 하려면 문법적인 내용을 알고 있으면 유리할 것 같은데, 이런 것을 따로 공부하고 싶다면 전 강의에 추천해주신 책으로 공부하는 것이 좋을까요? 그런데 저는 책으로 공부하는 것보다 문제를 풀면서(모듈 설계) 공부를 하고 싶다는 생각이 더 드는데, 이를 보충해줄만한 참고 자료 같은 것이 있을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
simple bram ctrl 질문입니다 !
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님! 맛비선생님의 BRAM Ctrl 설계를 학습하였는데 아래 맛비님의 코드 n_state = c_state를 case문 안에 default 문으로 넣었는데 시뮬레이션이 동작하지 않았습니다. 혹시 이유를 간략히 알 수 있을까요? always @(*) beginn_state = c_state;case (c_state)S_IDLE : if(i_run) n_state = S_WRITE;S_WRITE : if(is_write_done) n_state = S_READ; S_READ : if(is_read_done) n_state = S_DONE; S_DONE : n_state = S_IDLE;endcaseend
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
vaild신호 Concatenation문법 질문이요
Conacatenation 에서 비트를 묶는다는게 (reset) r_vaild=0,0,0, i_vaild=0 (posedge clk) r_vaild[1:0]=0,0 + i_vaild=1 -> r_vaild=[0,0,1] o_vaild=r_vaild[2]=0 (posedge clk) r_vaild[1:0]=0,1 + i_vaild=1 -> r_vaild=[0,1,1] o_vaild=r_vaild[2]=0 (posedge clk) r_vaild[1:0]=1,1 + i_vaild=1 -> r_vaild=[1,1,1] o_vaild=r_vaild[2]=1 . . . 요런 연산을 하는건가요..?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
source ./tools/Xilinx/에서 막혔습니다..
source ./tools/Xilinx/를 치면 계속 bash라고 나오고 동영상처럼 나오지 않습니다...
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
pipeline 관련 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://drive.google.com/file/d/1bg2zOcgteYXHaAhuwsGsy7zQtwcDCiea/view?usp=sharing 안녕하세요 맛비님. pipe line 복습하다가 pipeline을 사용하지 않으면 clk의 1cycle이 아닌 3cycle 마다 결과값이 한번씩 출력이 되어야하는 것으로 알고 있습니다. flip flop을 단순히 제거하여서 결과값을 도출하였는데 아마 test bench의 @(posedge clk) 마다 i_value 값을 1씩 증가시키는 문법 때문인지 1cycle 마다 결과값이 도출되었습니다. 파이프라인이 test bench의 for 루프 문에 적용된 것인지 DUT의 flip flop에 의해 적용된건지 궁금합니다! - 아니면 dalay를 주기위해 flip flop을 사용하는 것인가요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
FSM 관련 질문 좀 드리겠습니다!
안녕하세요! 좋은 강의 늘 감사드립니다 !! FSM always @(*) 구문에서 처음에 n_state = S_IDLE; 로 초기화 구문을 넣어주는거랑 default문을 추가해서 n_state = S_IDLE을 넣어주는거랑 완전히 같은 역할을 한다고 생각하면 될까요? 혹시 그렇다면 전자로 코딩 하시는 이유를 알 수 있을까요?? 그리고 Verilog에서 저런식으로 특정 상수로 값을 초기화해도 합성 과정에서 별 문제 없이 잘 합성이 되나요 ?? 조합회로라 상관 없을 것 같다는 생각이 들었는데 순차회로의 경우에는 저런식으로 초기화 구문을 사용하면 합성이 되는지 안되는지도 궁금합니다!!
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Pipeline 실습 관련 질문드립니다
안녕하세요 양질의 강의 영상 감사합니다! Pipeline 실습에서는 Valid 신호를 3개의 Flip Flop을 죽 늘어선 형태로 사용하셨는데 이게 혹시 실제로도 이렇게 코딩하여 합성하면 Hold Time 위반이 발생하는게 맞나요? Flip Flop 사이에 아무런 조합회로가 안붙고 플립플롭의 출력이 입력으로 바로 들어가면 Hold Time 위반이라고 학교에서 얼핏 배운 기억이 났습니다 만약 Hold Time 위반이 맞다면 실제 합성시에는 사이에 Buffer를 사용하여 해결하면 될까요? 또한 실무에서 그렇게 Buffer를 추가하는 것은 RTL 엔지니어가 Hold Time 위반 나겠다 싶은 곳에다가 Verilog 코드에 추가해주는 식으로 해결하는지 아니면 합성 이후 Back End쪽(??)단계에서 버퍼를 추가시켜서 해결하는지 궁금합니다
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
build 문의 드립니다.
wsl 에서 build 가 안되서 문의 드립니다. (8:55부분) 아래 링크의 유튜브 내용 보고 wsl / vivado 설치했고, vivado 까지 잘 동작 하는데, build가 되지 않는데요.. 조치사항 알 수 있을까요?? https://www.youtube.com/watch?v=BdtaSQs0RLQ https://www.youtube.com/watch?v=4qwAEJ_3-8o
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
실제 fpga상에서 BRAM을 사용했을때
안녕하세요 맛비님. 항상 좋은 강의 감사드립니다. 오늘 배운 BRAM 사용법을 활용하여 어떤 코드를 작성하고, 그 코드를 실제 FPGA상에서 실행시켰을때, FPGA 보드가 제공하는 BRAM의 area중 현재 몇퍼센트를 사용중인지 vivado tool에서 확인해볼수 있는 방법이 따로 있을까요?