묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비'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 실전 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에서 확인해볼수 있는 방법이 따로 있을까요?
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Counter 설계관련 질문
맛비님 counter 설계를 보고 제가 나름대로 찾아서 설계를 생각해봤습니다. 생각하다보니 질문이 있습니다. 1. D flip flop을 설계할 때 맛비님의 경우에는 output port를 wire 상태로 그냥 두시고 reg 변수를 따로 선언하셨습니다. 찾다보니 output port를 output reg 타입으로 선언해서 d flip flop을 설계하는 경우도 있던데 두 차이 점이 무엇인지 궁금합니다 나중에 합성할때 맛비님 방식이 더 유리한 것인가요? `timescale 1ns/1ps module d_ff(i_D, clk, reset_n, o_Q); input i_D; input clk; input reset_n; output o_Q; always @(posedge clk or negedge reset_n) begin if (!reset_n) begin o_Q <= 0; end else begin o_Q <= i_D; end end endmodule 2. 맛비님은 counter 설계시 한번에 하셨는데 동기식/비동기식 counter를 찾아보면 여러개의 D flip flop으로 설계한 것들을 찾아볼 수 있었습니다. 여기서 질문이 있습니다. 아래 첨부한 사진을 보시면 4bit 동기식 counter를 설계했을 뿐인데도 truth table의 양이 많은 것을 알 수 있습니다. 만약 제가 16bit 동기식 counter를 설계한다고 하면 훨씬 더 많은 truth table이 요구되고 이 truth table을 가지고 카르노맵을 그리는 것이 훨씬 더 복잡해 질텐데 실무에서는 그럼 어떻게 설계를 하는건가요??? 혹시 이런 복잡함을 줄이려고 맛비님이 counter 설계 설명시 내부에 reg를 선언해서 +1씩 해주신건가요??(훨씬 단순하게 설계를 하기 위해 강의하신 내용대로 하는 것인지 궁금합니다)
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
bram 생성 관련 질문 있습니다.
bram을 통해 데이터 다루는 챕터인데 bram을 vivado hls에서 코드로 변환 시킨건가요? vivado에서 block degine에 bram 생성하는 것도 있긴한데 그건 사용자가 코드를 변환 시킬수가 없네요.designe block말고 vi 에디터로 bram을 관련 코드를 다룬다고 한다면 bram을 어떻게 생성할수있는건가요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
시뮬레이션에서 클럭 rising edge 순간 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 논리 상태에 대해 궁금합니다.
시뮬레이션 결과를 보시면 클럭 rising edge 순간에 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 시뮬레이션 결과처럼 실제 fpga 구현 되었을 때 문제가 없을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
D ff 질문입니다
8강 10:35에 나오는 d flipflop회로가 어떻게 작동되는지 설명해 주실 수 있나요?̊̈ ?̊̈ ?̊̈
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
verilog에서 parameter와 'define 사용이 비슷한 것 같은데 어떤 차이점이 있나요?
코드를 분석하다보니 parameter와 define이 비슷한 생각이 들어서요 어떤 차이점이 있나요? 또 어떤한 경우에 각각을 사용하면 좋을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
BRAM SRAM 공통점 차이점
안녕하세요 맛비님, 강의 다시 복습하면서 궁금한 게 생겼는데, BRAM과 SRAM의 공통점과 차이점이 뭔지 알려주실 수 있나요? 구글에 검색해보면 BRAM 대신 DRAM으로 결과들이 나와서 찾기가 힘드네요
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Reset 관련 질문입니다.
안녕하세요! 맛비님! 강의 열심히 따라가며 수강하고 있습니다. 강의를 듣다가 보면 항상 Reset에서 막혀 다시 Reset 강의로 돌아가서 확인하고 있습니다..ㅎㅎ 어느정도 이해가 되었다고 생각했는데 궁금해서 질문 드립니다. reset을 이용해서 처음부터 시작하는 신호와 unknown 상태를 방지하기 위해서 사용하는 것으로 알고 있습니다.(맞나요?) 하지만 코드를 따라가다 보면 reset 값만 0에서 1로 바꾸고 나머지 값에는 영향을 주지 않는거 같은데 reset을 통해서 나머지 변수들에게도 영향을 주는 건가요? 아니면 reset의 출발신호만을 알기위해서 사용하는 건가요??