반응형

개발 편의성을 위한 소소한 Tips/04 질의 응답 정리

    [FPGA Q/A. 015] bram관련 질문입니다 (* ram_style = "block" *) reg

    Q. 안녕하세요. 저는 fpga 강의를 수강중이고 lab12에서 bram과 axi4_lite를 이용한 memory 수강중에 궁금한 점이 있습니다. 해당 강의에서 trure_sync_dpbram.v를 import해서 사용하는데 fpga는 어떻게 true_sync_dpbram가 register가 아니라 bram을 사용하는 지 알 수 있나요? 혹시 reg 선언부에 있는 (* ram_style = "block" *) reg 이것이 bram을 사용한다는 keyword 인가요? 만약, 맞다면 저희가 ram_style='block' reg를 사용하면서 내부 memory interface logic (ce0,we0등등...)을 다르게 사용하면 Error가 발생하는건가요? A. 안녕하세요 :) 궁금해하실만한 질문이라 생..

    [Verilog Q/A. 014] AXI-Lite latching 부분과 코드에 대해 질문드립니다.

    Q 1. 리뷰해주신 코드에서 아래와 같은 구문이 있는데요. 강의 도중 85번 줄에서 부터 94번 줄이 latching을 위한 것이라고 말씀하셨는데요. 배움이 부족하여 왜 latching을 위한 것인지 이해를 못했습니다(뭘 봐야 하는지라도... 부탁드립니다.) 2. 177번 줄을 보면 write address 정보를 넘기는 것으로 보이는데요 - 왜 조건문에 ~axi_awready인지 => awready awvalid가 둘다 1이여야 데이터가 넘어 가지 않나요? 왜 ~axi_awready 즉 0일 때, 데이터가 넘어가나요? - S_AXI_WVALID는 Write data를 넘길때 확인해야 할 것 같은데 왜 여기서 확인하나요? // Implement axi_awaddr latching // This proce..

    [FPGA Q/A. 013] design_1_wrapper 를 만드는 이유

    제 강의에서 BD (Block Design) 파일을 생성해서, GUI 로 모듈을 구성하는데요. 다음그림 처럼요. 구성이 완료되면, create wrapper 과정을 합니다. 그러면, design_1_wrapper 가 생성돼요. 그렇게 하는 이유를 여쭤보셨어요. Q 강의 도중에 최상단은 verilog 파일이여야 한다며 design_1_wrapper를 만드시는 데요 이렇게 하는 이유가 무엇인가요? (Create Block Design으로 생성된 input output 포트를 연결하기 위해서 인가요?) A 안녕하세요 :) 다음링크가, 답이 될 것 같아요 :) https://www.centennialsoftwaresolutions.com/post/why-do-i-need-to-run-create-hdl-wrap..

    [FPGA Q/A. 012] create block design error

    소개 FPGA 에서 block design 단계에 reset 관련해서, 다음과 같은 Error 가 발생할 수 있다고 합니다. 결론은 assosiate clock check 가 꺼져있어야 하는데, 켜져서 발생하는 Error 로 보여집니다. _n 이 없는 naming 에서 FCLK_RESET0_N 을 연결하면, assosiate clock check 가 켜지는 것 같습니다. (이종의 reset 으로 인식하는 것으로 보여짐,) reset 에 _n 을 붙여서 표기하면, assosiate clock check 가 꺼져서 문제가 없다고 하네요. naming 을 Tool 에서 인식할 줄이야... (하나 배워갑니다.) Q1 [BD 41-1348] Reset pin /led_0/rst (associated clock /..

    [Verilog HDL Q/A. 011] always문을 나누는 기준이 궁금합니다

    꽤 많이 애먹었던 질문입니다. Rule 을 만들어서 관리하고 있지 않았기에 (딱히 인터넷 상에, 정해주질 않았습니다.) 당연하단 듯이 사용했었는데, 이번기회에 정리합니다. Q always문을 사용하실 때 어떤 기준으로 always문을 나누시는지 궁금합니다. 가령 예를 들면 올려주신 chapter_11에 있는 count 코드를 보면 always 문 2개를 사용해서 모듈을 구성하셨고 그밖에 강의를 보면 다양하게 always문을 나누시는데 같은 동작을 하는 모듈을 always문 하나로 만들 수 있을텐데 나누시는 기준이 어떤건지 궁금합니다. 그리고 작성한 verilog 코드의 가독성을 높히기 위한 팁이나 관련 추천 서적이나 참고 자료가 있으실까요! 제가 이 부분에 대해서 부족한게 많아서 알려주신다면 앞으로 설계..

    [Verilog HDL Q/A. 010] always @ (*) 에 대해서..

    해당 내용을 많이 헷갈려하시는 것 같아서 정리합니다. 결론은 Combinational Logic 이고, 문법을 정확하게 이해가 사용하신다면, Latch 를 만들일도, ASIC 이 불가능 할 일도 없습니다. 11년차인 저와, 저보다 훨씬 오래된 경력을 갖고 계신 분도 사용하고 계십니다. always@ 안에 기술되는 Type 은 reg 여야 합니다. (port 는 예외) 이 말은 reg 라고 전부 F/F 이 아닙니다. always 의 level sensitive 로 사용하느냐 (combinational Logic), Clock Edge Sensitive 로 사용하느냐 (Sequential Logic) 에 따라서 갈립니다. 다음은 유사한 질문을 갖고 계시는 분들의 질의 응답입니다. Q1. 조합회로의 두가지 코..

    [Verilog HDL Q/A. 009] WSL 에서 Vivado 2021.1 GUI 설치

    Intro WSL 에서 2021.1 설치가 안된다고 해서 Test 하였습니다. 본문 GUI 로 설치중입니다. 이대로 해서 같이 설치 해보아요! 포기할 수 없습니다 ㅎ 설치시간 줄이려고 필요없는건 체크에서 해제했습니다. 적절히 path 를 잡아주시고, 여기서 부터 중요한데, 하단에 Preferences 라고 있습니다. 눌러 주시고, 세번째, Disk Usage Settings 탭에 가시면, 위와 같이 Disk Usage optimization 을 off 합니다. 그리고 Install 을 눌러주세요. 한번 부탁드립니다. (저도 이렇게 설치 중입니다.) 잘 설치 됩니다. :)

    [Verilog HDL Q/A. 008] vaild신호 Concatenation문법 질문

    들어가기 전에... Syntax 먼저 숙지하기 답변은 먼저 Concatenation 문법을 이해했다 가정합니다. (해당 링크 글을 이해 후 다음 글을 봐주세요.) https://www.chipverify.com/verilog/verilog-concatenation Q1 r_valid 값을 제가 시뮬레이션에 추가해서 따라가보면서 확인했습니다. 그 결과 000 001 011 111 로 변경되는 것을 확인했습니다. 0(2)0(1)0(0) 비트수 별로 번호를 매겼을 때 이렇게 표현되고 {r_valid[1:0], i_valid}는 0(1)0(0) 이 두비트에 i_valid가 추가된다고 생각하면 되나요?? A1 Shift Register 를 확인하시면 될 것 같아요. 다 읽어보진 마시고, 아! 라고 생각나시면 그만..

반응형