반응형

개발 편의성을 위한 소소한 Tips

    [FPGA Q/A. 017] always @(*) 문장 질문

    질문자체가 좋은 답이라 그대로 적습니다 :) Q 먼저 좋은 강의 정말 감사합니다. always @(*) 문장 관련해서 질문을 많이 받으셔서 스트레스 받으실 듯 하여 관련 답변이나 링크들 읽어 보았습니다. 제가 이해한 바로는 다음과 같은데 혹시 잘못 이해한 부분이 있는지 여쭤보고 싶습니다. always@() 블럭 안에서 대입할 때, 왼쪽 피연산자의 Type은 reg여야 한다. always @(*)는 모든 입력이 포함된 것을 의미하므로 입력이 변경될 때 마다 항상 변경되는 것이기 때문에 모듈이 순차가 아닌 조합회로를 기술할 때 유용하다. always@(*)은 Combinational Logic이다. 마찬가지로 블럭 안에서 대입 시 왼쪽 피연산자의 Type은 reg여야 한다. 또한 always@(*)의 의미에..

    [FPGA Q/A. 016] 강의에 사용한 보드로 추가적으로 공부를 하고싶은데...

    Q 안녕하세요. FPGA 2개의 강의를 모두 수강 완료하였습니다. FPGA에 대해서 조금(?)은 가까워 졌다 생각이 듭니다. 수업이 끝나고 개발키트를 들여다 보고, 데이터시트도 보고, 자일링스 홈페이지도 보고, 구글링도 해보지만 예제나 방법 등이 설명된 자료찾는것이 쉽지 않은 것 같습니다. 여기서 질문입니다. 1. 개발 보드에 실장 되어 있는 USB, HDMI, Ethernet, SDcard, VGA 등 많은 소캣 단자들이 붙어 있습니다. 이것들을 활용해보고 싶은데요. 자료를 찾아보면 대부분 IP에 대한 언급을 하고있습니다. IP라는 것을 제작해서 사용해야 하는 것인가요? 아니면 ZYNQ의 PS단인 Arm core를 활용해서 이용해야하는 것인가요? 2. 자료를 검색하다 보니 pmod라는 확장 보드를 확인..

    [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. 조합회로의 두가지 코..

반응형