묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
auto connect error 질문 드려요
안녕하세요 맛비님 강의님 잘보고 있습니다.오늘 갑자기 vitis, vivado 업데이트가 있어서 잘못 눌러 해버렸는데 갑자기 안되어서 다시 설치했는데auto connect error가 발생 합니다 xsbd server start가 안되는거 같습니다.해결 방법 문의 드립니다.
-
해결됨Verilog FPGA Program 1 (Arty A7-35T)
안녕하세요 I2C Register 모듈에 대해서 질문이있습니다.
이 부분에서 reg_ren이 1일때 reg10에 저장된 값을 읽으려하는데 저의 생각에는 reg_ren값이 1이 되는 순간 reg_rdata값이 나올줄 알았는데 5ns뒤인 20ns뒤에 나오는걸 확인했습니다. 이런 타임딜레이는 하드웨어상 어쩔수없는 딜레이인가요?
-
미해결설계독학맛비'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 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
8장 2022.2 버전 사용중 read map eorror 발생 해결 방법 공유 드립니다.
https://support.xilinx.com/s/article/000034848?language=en_US 위 링크로 들어가 환경 폴더를 환경변수로 설정 하시고 다시 실행하시면 해결 됩니다!! 역시 디버깅은 재밌어요!!
-
미해결설계독학맛비'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이 멈춰버리니까 어떻게 디버깅을 해서 진행을 해야 할지 정말 모르겠습니다... 이럴 때는 어떻게 접근해야 하는지 여쭤보고 싶습니다.긴 글 읽어주셔서 감사합니다!
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
IP Generator Create Blcok Design warning 문제 문의 드립니다.
안녕하세요 맛비님..강의 잘보고 있습니다.hello world 진행 중 문제가 발생했습니다.. WARNING: [BD 5-700] No address spaces matched 'get_bd_addr_spaces -of_objects /processing_system7_0 -filter {path == /processing_system7_0/Data}'WARNING: [BD 5-699] No address segments matched 'get_bd_addr_segs -of_objects {}' 일단 creat design 에서 위 두 개의 워닝 발생.다음은 vitis hello world 프로젝트 생성 후 에러 메세지 입니다. 15:33:40 WARN : An unexpected exception occurred in the module 'platform project logging'15:33:41 INFO : Platform 'lab4_hello_vincent' is added to custom repositories.15:33:43 ERROR :15:33:43 ERROR :org.eclipse.cdt.internal.core.settings.model.ExceptionFactory.createCoreException(ExceptionFactory.java:26)org.eclipse.cdt.core.CCorePlugin.mapCProjectOwner(CCorePlugin.java:890)org.eclipse.cdt.core.CCorePlugin$1.run(CCorePlugin.java:945)org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)org.eclipse.cdt.core.CCorePlugin.createCProject(CCorePlugin.java:930)com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createCProject(AppCreationHandler.java:92)com.xilinx.sdx.sdk.core.gen.StandaloneProjectHandler.createCoreApp(StandaloneProjectHandler.java:67)com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createApplication(AppCreationHandler.java:79)com.xilinx.sdx.sdk.core.gen.AppCreationHandler.execute(AppCreationHandler.java:69)com.xilinx.sdx.sdk.core.SdkAppCreationHandler.executeInternal(SdkAppCreationHandler.java:75)org.apache.logging.log4j.core.impl.MutableLogEvent@1c323ee215:33:43 ERROR : Failed to create application projectcom.xilinx.sdx.sdk.core.gen.StandaloneProjectHandler.createCoreApp(StandaloneProjectHandler.java:150)com.xilinx.sdx.sdk.core.gen.AppCreationHandler.createApplication(AppCreationHandler.java:79)com.xilinx.sdx.sdk.core.gen.AppCreationHandler.execute(AppCreationHandler.java:69)com.xilinx.sdx.sdk.core.SdkAppCreationHandler.executeInternal(SdkAppCreationHandler.java:75)com.xilinx.sdx.sdk.core.SdkAppCreationHandler.lambda$1(SdkAppCreationHandler.java:67)org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2312)com.xilinx.sdx.sdk.core.SdkAppCreationHandler.execute(SdkAppCreationHandler.java:66)com.xilinx.sdx.npw.NewProjectCreationHandler.createApplicationProject(NewProjectCreationHandler.java:237)com.xilinx.sdx.npw.NewProjectCreationHandler.internalExecute(NewProjectCreationHandler.java:385)org.apache.logging.log4j.core.impl.MutableLogEvent@1c323ee2원인이 무엇인지 잘 모르겠습니다. 찾아보니 보드셋팅 문제가 있던데 셋팅은 제대로 하였습니다.
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
HW Run time에 대한 질문
bram data width : 32 / depth:4096bram에 write 할때 나오는 clock cycle에 대해 질문드립니다. 위의 예를들어 bram0에 write 할때 641000 cycle이 나옵니다. 641000/4096 = 156.5 정도 나오는데,data 1개 (32bit) AXI4-interface에서 write address- write data- hand shake - response 과정까지 약 156.5 cycle이 소모된다는 의미라고 해석하면 될까요? (4096*156.5 = 6410000)그러나 axi4-lite 1cylce에 32bit access 가능하다고 들었습니다. hand shake channel에서의 cycle을 고려하더라도 오차가 크다고 생각합니다.문득 궁금하여 질문드립니다.
-
해결됨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 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
build 파일을 이용하지 않고 Simulation을 하려면
FPGA에 집중 하고 싶어서WSL 환경은 제껴두고 윈도우 환경을 위주로 학습중입니다. build 파일을 사용하지 않고 vivado에 새로운 프로젝트를 만들어서lab5_matbi.v, counter_toggle_out.v, tb_lab5_matbi.v소스 파일을 그대로 인용해서 Simulation을 시도해봤습니다. 강의에서 언급을 하신대로 `ifdef XSIM_MATBI의 기능은 build 파일에 적용이 되는 것 같아일단 아래 수치는 비활성화 했습니다 ,,위와 같이 Simulation시 아래 웨이브폼이 출력됩니다.1000ns가 끝입니다. 강의에서 보여주신 시뮬레이션은 4000ns까지 보여주더라구요.그래서 테스트벤치 모듈을 확인했습니다. 정황상 for문이 시뮬레이션의 총 시간을 결정하는 문단인 것 같지만, 왜 제 환경에서는 1000ns까지 밖에 출력이 되지 않는지 도저히 영문을 모르겠습니다..알려주시면 감사드리겠습니다 ,, ㅠㅠ
-
미해결
WSL에서 Vitis 실행 후 Launch Hardware 클릭 시 에러
WLS에서 /dev/ttyS5 at 115200으로 환경이 잡힌 것 같고 JTAG 핀도 올바르게 연결 된 것 갔습니다. 그리고 build project도 완료했습니다. 그러나 Launch hardware를 클릭하면 다음사진과 같이 나옵니다.무슨이유인지 알 수 있을까요?
-
해결됨설계독학맛비'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인가요? 아니면 더 빨라질 수 있을까요?
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
lab10 usleep 관련하여 질문있습니다.
안녕하세요 맛비님!lab10 main.c 부분 코드를 작성하면서printf("Output took %llu clock cycles.\n", 2*(tEnd - tStart)); printf("Output took %.2f us.\n", 1.0 * (tEnd - tStart) / (COUNTS_PER_SECOND/1000000));이 두 부분에서 궁금한 점이 생겼는데 관련하여 이미 질문하신 분이 계신가 찾아봤는데 없는 것 같아 질문을 드립니다.강의에서 uSleep함수가 uSleep(1)이라고 하면 1us를 쉬는 함수라고 하셨는데, 100,000,000/100을 인자로 입력했을 때, 333000133이 tEnd-tStart로 나오는걸 보니tEnd-tStart에 전달되는 값은 "1s를 'PS의 CPU(667MHz)'가 세기 위해 필요한 clock count수의 절반" 이라고 해석할 수 있을 것 같은데,tEnd, tStart는 그럼 정확히 시각이라기 보다는 PS의 CPU로 count한 Clock수의 절반 이라고 해석하는게 맞을까요?또, 왜 절반으로 정의되는지 이유가 궁금합니다.2와 관련해서 header 파일들을 열어보니, xparameters.h 파일에#define COUNTS_PER_SECOND (XPAR_CPU_CORTEXA9_CORE_CLOCK_FREQ_HZ /2) 라고 정의되어 있는데, 이것 때문에 그런 것인가요? 어떤 이유 때문에 이렇게 /2를 하여 정의를 하는 것인지 궁금합니다... 그냥 100Mhz로 1s를 세려면 COUNTS_PER_SECOND 을 100M번으로 정의하면 되는것 아닌가요..?또, SW sleep뿐 아니라 HW sleep 부분에서도 위와 같은 코드로 시간측정을 하는데, 결국 PL영역에서 동작한 내용을(HW Sleep/clock count) PS에서 읽어와서 해석했기 때문에 그런 것이고, 100Mhz가 기준이 아니라 667Mhz가 기준인 것도(uSleep(100,000,000/100)일 때 tEnd-tStart=333000133) PS에서 PL에 입력되는 Clock freq이 100MHz이지, PS내에서의 Clock freq은 667Mhz이기 때문이라고 생각을 했는데, 맞게 생각한게 맞을까요?? 사소한 질문인 것 같은데, 오랫동안 생각해봐도 확실하게 답이 나오지 않아서 질문 드립니다... 항상 강의 잘 듣고 있습니다 :) 감사합니다 맛비님!
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
LAB9 Arty보드 사용 관련해서 문의드립니다.
안녕하세요. Arty-z7-10보드를 사용하여 강의를 수강중입니다. 다름이 아니라 9장 실습을 따라하면서 맛비님께서 미리 만들어 놓으신 IP를 vivado에 올리게 되면 Arty-z7-10의 경우 스위치가 2개이기 때문에 bitstream을 생성하는 과정에서 에러가 발생하게 됩니다,, 이 부분은 어떻게 해결하면 되는지 궁금합니다. =================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
PS,PL 통신관련 질문있습니다.
안녕하세요 맛비님!강의 듣던중 궁금한점이 있어서 질문 드립니다.지금 강의 내용에서는 axi4-lite interface를 이용하여 pc에서 fpga로 데이터를 write하고 fpga에 write한 데이터를 다시 pc로 read하는 flow로 동작하는 내용인데, 데이터를 pc에서 fpga로 write하지 않고 fpga 로직 상에서 출력되는 데이터 (예를 들면, 카운터 값)을 axi4-lite interface를 이용하여 pc로 read 해올 수 있는 방법도 있는지 궁금합니다.
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
lab9 LED 점등 시간 제어 실습 관련하여 질문 있습니다.
안녕하세요 맛비님!lab9 실습에서 FPGA에 bitstream을 올리고 나서 register에 값을 쓰고/읽고 하며 LED 점등시간을 제어하는 과정을 따라해 보았는데, 처음에는 제가 작성한 code로 해보았습니다.그런데, write, read는 문제없이 동작을 하는 것을 확인을 하였는데, 아무 값도 write하지 않고 가만히 있었을 때 약 35~45초 간격으로 LED가 저절로 켜지고/꺼지고를 반복하는 문제를 발견했습니다. Read를 통해 register에 쓰인 data값을 읽어보면 모두 0으로 나옵니다..그래서 맛비님께서 제공해주신 코드로 다시 ip생성~ bitstream upload까지 전 과정을 다시 해보았는데도 같은 문제가 발생합니다.혹시 어떤 이유 때문에 이런 문제가 발생 하는 건지 궁금합니다.또, data를 0~3까지의 4개의 register에 쓰는데 0~3이외의 다른 주소에도 써보면 어떨까 궁금해서 5, 10등 다른 주소에도 값을 써보았는데, 5번지에 값을 썼을 때는 2번 register에 Write가 되고, 10번지에 값을 썼을 때는 3번 register에 write 되는 식으로 동작하던데, 0x4C00 0000부터 64k의 memory를 할당했기 때문에 4byte*4의 메모리를 제외하고 나머지는 이 4byte*4의 주소가 계속 반복되는 식으로 할당된 것이라 이런 것인지 궁금합니다.lab 9의 counter_toggle_out module에서 always문의 sensitivity list에 posedge clk만 들어가 있는데, lab 5에는 negedge reset_n도 들어 있었는데, 어떤 이유에서 이런 변화가 있는건지 궁금합니다.module counter_toggle_out ( ~ ); always @(posedge clk) begin if(!reset_n) begin // (lab9) used sync reset_n ~ end endmodule또 이와 관련해서 reset_n 이 이번 lab에서 구현한 system에서는 언제 어떻게 인가가 되는지 궁금합니다..(아무것도 찾아보지 않고 질문 드리는 것은 아니고, Behavioral simulation을 해봐도 전부 Z값으로 나오고, PS Reset이라는 module이 어떻게 동작하는지를 어디서 어떻게 보는지 잘 모르겠네요 ㅜㅜ) 긴 글 읽어주셔서 감사합니다. 좋은 저녁 되세요 :)