설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요 🙂 [1. 질문 챕터] : 21장 9분 25초 [2. 질문 내용] : 1. 코어의 연산 결과를 바로 myip_AXI 모듈 내 레지스터에 저장하는 이유가 궁금합니다! 현재까지 BRAM에 데이터를 넣고 꺼내고 하는걸 배웠는데 ,,, 결과 write용 bram2를 안쓰니까 궁금합니다! bram을 거쳐서 데이터를 넣고 꺼내는 시간/ 바로 레지스터로 가도록 하는 시간 중에 뭐가 더 빠른가요?? 데이터가 많을때도 모듈에 레지스터를 엄청 많이 만들어서 bram을 안쓰는건 어떨까요?? bram을 쓰는 것보다 같은 데이터양 대비 사용 리소스가 많다거나, 시간이 더 오래걸린다는 단점이 있을까용?? [3. 시도했던 내용, 그렇게 생각하는 이유] : 21장에서는 코어에서 연산한 데이터가 4개씩이라 적게 나와서 굳이 BRAM을 안쓰는거같다고 생각합니다!
다른 수강생분들이 쓰셨던 내용들은 다 읽어봤지만, 초록불과 관련된 이야기는 없이 이렇게 글을 남깁니다! ST-Link에는 빨간불이 들어오고, 보드에는 D1 이라고 써져있는곳엔 빨간불이, S1이라는 곳에는 빨간불이 깜박깜박하는데 초록불이 안들어옵니다! 무엇이 문제인지 알려주시면 감사하겠습니다. 빠른 답변 주시면 감사하겠습니다!
시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)
3.2.1.4, 5 강의에서 TRACE32 사용 실습을 해주시는데요. 강의 내용을 익히기 위해 범용 레지스터를 설정을 하면서 실습을 해보려고 합니다. 이때 실행하고 계시는 RASPBIAN KERNEL DEBUG를 어떻게 실행하나요? 또는 실습을 위해 첨부해주신 T32 파일에서 실행할수 있는 데모앱이 있을까요?
디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
DDR2에 대한 설명을 해주실 때 QDR이 적용되었다고 설명해주셨는데, SK하이닉스 뉴스룸에서 GDDR DRAM 관련 자료를 찾아보다 GDDR5부터 QDR이 적용되었다고 하는 게시물를 봤습니다. 해당 게시물에서는 시스템 클록(CK)과 이를 두 배로 높인 데이터 클록(WCK)을 모두 사용하여 클록 속도를 4배로 높여준다고 설명하고 있습니다. 강의에서 설명해주신 페이즈가 다른 클록 2개를 쓰는 QDR과는 조금 다른데 그렇다면 DDR2부터 적용된 QDR과 GDDR5에 적용된 QDR은 용어는 같지만 다른 개념인가요? 게시물 링크:https://news.skhynix.co.kr/post/go-beyond-graphics 내용: GDDR6의 놀라운 점은 더 있습니다. 바로 고도화된 ‘DDR’입니다. DDR이 클록 한 번에 두 번의 데이터를 내보낸다고 했는데요. GDDR6는 시스템 클록(CK)과 이를 두 배로 높인 데이터 클록(WCK)을 모두 사용하는데, 이 과정에서 클록을 4배로 높여줍니다. ‘쿼드 데이터 레이트(Quad Data Rate·QDR)’ 기술을 이용하는 것이죠. 참고로 QDR는 그래픽 메모리에서 GDDR5부터 적용되기 시작했습니다. 정리하면 GDDR5와 GDDR6의 CK가 1.75Gbps라고 했을 때, GDDR5는 최종 데이터(DQ) 속도가 7Gbps에 그칩니다. 이와 달리 GDDR6의 경우 14Gbps까지 올릴 수 있습니다.
디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM 에서는 Write할 때 입력 data를 넣고 1클럭 뒤에 memory에 저장이되고, Read할 때는 주소를 불러오자마자 바로 Read가 됐던걸 확인할 수 있었는데, 질문1) TPSRAM에서의 동작은 wa에 wd를 넣고 1클럭 후에 memory에 write 값이 저장되는 부분은 동일한건가요? 질문2) SRAM에서와 달리 ra에서 rd가 나오기까지 1클럭이 늦게 나오는 이유는 F/F을 하나 거치기 때문인지도 궁금합니다!
안녕하세요 덕분에 AXI4에 대해 많이 배웠고 또 검증하는데 있어서 많은 경험을 쌓았습니다. 40장 영상을 토대로 맛비님께서 알려주신 빌드의 형식이 아닌, block design 형태로 만들어서 좀더 직관성 있게 만들어보고자 시도 중에 있습니다. (차후 다른 커스텀ip를 불러와 파라미터를 block쪽에서 수정 및 재활용) 따라서 블럭 디자인은 다음과 같고 최상위 TB의 인스턴스 및 ctrl, m00_axi 경로 수정을 해주었습니다. (사용하지않는 인스턴스 및 wire 삭제) 결과적으로 말씀드리면 기존과 동일한 결과값을 보이며 마지막 에러또한 뜨지않아 정상적이라 생각합니다. 하지만 Tcl Console 창에서 경고가 대량으로 발생하였는데 아마 Cache Value 문제라 생각됩니다. Warning: [AW_REACTIVE_0] (axi_vip_pkg.\axi_transaction::set_cache ) 1935000 ns : Attempted to send CACHE(0x0000) when SUPPORTS_NARROW is low. According to UG1037,AxCACHE[1] has to be 1 to ensure that any downstream upsizer can fully pack data up to wider widths Time: 1935 us Iteration: 1 Process: /axi_vip_pkg/axi_slv_wr_driver(C_AXI_WDATA_WIDTH=64,C_AXI_RDATA_WIDTH=64,C_AXI_WID_WIDTH=1,C_AXI_RID_WIDTH=1,C_AXI_AWUSER_WIDTH=1,C_AXI_WUSER_WIDTH=1,C_AXI_BUSER_WIDTH=1,C_AXI_ARUSER_WIDTH=1,C_AXI_RUSER_WIDTH=1,C_AXI_SUPPORTS_NARROW=0)::get_and_drive/GET_AND_DRIVE Scope: axi_vip_pkg.\axi_transaction::set_cache File: /tools/Xilinx/Vivado/2023.1/data/xilinx_vip/hdl/axi_vip_pkg.sv Line: 2909 올라간 코드에서는 Cache Value는 형식상 있을뿐 사용하지않는걸로 알고있는데 혹시 저러한 경고문을 접해본 경험이 있으신가요? 터무니없는 질문 봐주셔서 감사합니다..
ARM에서 C언어로 FreeRTOS를 구동시키고 있습니다. 목표: Timer를 필요할 때만 생성하여 사용한 뒤, 필요 없는 경우 삭제 TimerHandle_t xRTOSTimerA; BaseType_t xStatus = xGetStatus(); if(xStatus == pdTRUE) { xRTOSTimerA = xTimerCreate("TIMER A", pdMS_TO_TICKS(300), pdTRUE, (void *)0, prvRTOSTimerACallback); } else { vTimerDelete(xRTOSTimerA, 0); } 질문 1. xTimerCreate를 통해 Timer를 생성한 뒤 vTimerDelete 함수를 사용해 삭제해도 TimerHandle은 여전히 메모리가 할당된 채 살아있는 거같습니다. vTimerDelete의 동작 이해를 잘못하고있는건가요? 질문 2. 위와 같이 소스코드를 작성하여도 메모리 반환이 제대로 이루어지지않는것 같습니다. TimerHandle의 경우 메모리 해제가 불가능한것인가요?
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
CRITICAL WARNING: [Common 17-183] Failed to open handle xvlog.log. Please check access permission of directory '/home/j/Matbi_VerilogHDL_Season1'. You should restart the application from a writable working directory. 이런 경고문 뜨시는 분들은 build 파일이 들어있는 폴더에 접근 권한이 없어서 발생하는 문제인데, " Matbi_VerilogHDL_Season1"이 설치 되어있는 폴더로 가셔서 sudo chmod -R 777 Matbi_VerilogHDL_Season1 ==> "Matbi_VerilogHDL_Season1" 디렉토리 하위 모든 폴더, 실행파일에 대하여 모든 사용자가 접근가능하게 변경하는 명령어 이렇게 하시면 xvlog, xelab, xsim 접근이 가능해져서 문제가 해결됩니다... 저처럼 헤매시는 분들 계실까봐 공유해봐요!
설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
지금 1번째 설치 부분부터 막혔는데 도와주세요 우분투 22.04버전, vivado 2022.2 버전으로 다운받아서 했는데 다운이 다 됐다가 저런식으로 warn이라고 뜨면서 안되는데 뭐가 문제일까요... 사실 처음에 vivado도 2024.1 버전으로 하다가 저런식으로 똑같이 문제돼서 우분투 완전히 삭제했다가 vivado 2022.2 버전으로 낮추고 다시 한거거든요 그리고 강의에서는 20.04로 했는데 22.04로 해도 된다고 해서 그대로 했는데 그게 문제인건가요? 설치하는데 시간이 너무 많이 잡아먹혀서 어떻게 해야될지 모르겠네요
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요 맛비님, 강의 잘 시청하고 있습니다! 강의를 보며 직접 ANN을 설계해보는 중에 궁금한 점이 있어 질문 드립니다. 질문: Fully Connected Layer에서 제가 알기론 각 코어의 출력값이 순차적으로 나오는 것이 아니라 병렬로 나오는 것으로 알고 있습니다. 이 출력값들을 다음 층의 입력으로 전달하기 위해 메모리를 사용하려고 하는데, 이러한 상황에서 출력값을 메모리에 저장하는 가장 효율적인 방법이 무엇인지 궁금합니다.
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요 🙂 전자공학과임에도 디지털회로와 코드에 많은 어려움을 겪고있는 학생이기에 강의를 친절히 잘 설명해주셔서 매우 감사합니다. 실습파일까지 제공해주셔서 매우 감사히 잘 이용하고 있습니다. 여기서 여쭤보고싶은것은 강의자료는 실습하다가 막히는 부분이 있으면 그때 비교해보라고 주신거라고 하셨는데, 실제 강의 영상에서도 코드 설명 이후에 다 실습파일로 제공해주신것들을 이용하는것으로 알고있습니다. 그렇게 실습은 그냥 하라는대로 다 따라하며 프로그램 다루는 법은 많이 익숙해졌지만 각 단계를 ip를 만들고 프로젝트를 새로 하나 만들어서 넣는거 HWplatform 생성 블록디자인생성 비트스트림생성 wrapper생성을 각각 왜 하는지 모르겠습니다. 그런 과정에대한 이해도가 높아지려면 어떻게 해야할까요? 또 각 코드를 제가 아무것도 없는 상태에서 만들 수 있기는 커녕 코드만보고 Block diagram도 저 혼자서 눈에 그려지지 않는 상황입니다. 코드를 제가 직접 다 따라 써봐야하는것인건가요? 만약 그래야한다면 손으로 노트에 코딩받아쓰기 혹은 직접 컴퓨터에 바로 써보는 활동중 어떤것을 더 추천하시나요?
하드웨어 구성 상 7-segment 의 네자릿수가 동시에 다른 숫자를 나타나게 하는 것은 불가능 하다고 설명해 주셨는데요. SPI 통신을 사용할 때는 이 문제가 해결된 것처럼 보입니다. GPIO 통신을 사용할 때는 각 자릿수를 빠르게 켜서 마치 동시에 켜진 것처럼 보이는 방식을 사용하는데, SPI 통신을 사용할 때도 7-segment의 각 자릿수가 동시에 켜진 것처럼(실제로는 동시가 아니지만) 보이는 것일까요??
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요 🙂 [1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요. [2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂 [3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) ================ 다음 내용은 읽어보시고 지우시면 됩니다.================= 질문 내용을 작성해주실 때, 위의 3단계 로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!! 현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ) 강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등) 이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요) 개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등.. 글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.) 서로 예의를 지키며 존중하는 문화를 만들어가요. 질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! ) 먼저 유사한 질문이 있었는지 검색해보세요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. ================== 펜타리눅스도 이용하기위해 우분투로 진행중인데 비바도는 켜지나 vitis가 켜지질안네요.. 명확한 오류내용이 없어서 구글링도 힘든데 어떤오류인지 알수있을까요?