반응형

분류 전체보기

    [Verilog HDL Q/A. 019] Equality operators ==, != , ===, !===

    Q testbench에서 if의 조건문에서 !== 의 연산자를 사용해주셨는데 !== 보통 잘 사용하지 않는 걸로 권장하는 걸로 알고 있습니다! 왜 굳이 != 말고 !==을 사용하셨는지 궁금합니다! A 시간이 있어서 미리 작성드립니다. IEEE Std (1800-2009), section 11.4.5 "Equality operators" For the logical equality and logical inequality operators (== and !=), if, due to unknown or high-impedance bits in the operands, the relation is ambiguous, then the result shall be a 1-bit unknown value (x). ..

    [FPGA Q/A. 018] BRAM의 1cycle delay

    Q "BRAM을 통해서 read된 data가 valid해지는 시점이 1 cycle 뒤이다." 의 이유가 Internal Memory(BRAM)의 Latency가 일반적으로 1cycle이기 때문인가요?? A 안녕하세요 :) 문서에 자세히 나와있어요. 요약해 드리면, primitive BRAM 의 Read latency 는 1 cycle 입니다. BRAM 을 생성할때, Primitive cell (Read latency 1) 에 추가로 F/F 을 사용해서 Latency 를 키워서 생성가능합니다. 이는 혹시 BRAM I/F 상에서 Timing Violation 이 발생하면 추가 latency 를 사용하여 생성가능합니다. (다음 그림은 큰 size 의 primitive bram 보다 큰 BRAM 을 사용할때, ..

    [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 /..

반응형