반응형

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

    [FPGA Q/A. 008] FCLK_Reset 을 PS 에서 제어하기.

    Q Hello Matbi world 를 진행하던 도중, zynq processor 와 제가 만든 user ip 를 create block design 을 통해 연결하는 부분이 있습니다. 이 부분에서, run block automation 을 하게 되면 zynq의 FCLK 신호와 reset 신호가 user ip 부분에 연결이 됩니다. CLK는 이해가 되는데 FCLK_Reset 이 어떤 역할을 하는 신호인지 잘 모르겠습니다. verilog 코드 상에서 reset 신호를 받아서 말 그대로 reset 신호로 사용하기에 reset 신호를 sw 따위로 주겠구나 생각했는데 그냥 zynq 로 주게 되면 그 FCLK_reset 신호는 vitis 의 c코드로 제어할수 있는 것인가요? A 안녕하세요 :) 먼저 사전 설명을 ..

    [Verilog HDL Q/A. 007] ASIC 에서 합성가능한 Memory code?

    Q1 안녕하세요. 맛비님의 강의를 듣고 있는 수강생입니다. 다름이 아니라 'BRAM - 실습편'의 'true-dpbram.v'파일은 asic으로 설계시 합성이 안되~라고 언급을 해주셨는데, reg [DWIDTH-1:0] ram [0:MEM_SIZE-1]; 네 맞습니다! (비록 합성이 되도 원하는 Memory cell 이 아닌 F/F 가 되지 않을까.. 예상중입니다. 그렇게 써본적은 없네요.) 또한 해당 파일은 메모리를 위한 시뮬레이션용이므로 vivado에서는 합성은 되어 시뮬레이션으로 쓰는 거지 , zynq같은 device에 실행(?)은 안된다라고 이해하면 될까요...ㅠ?? -> Simulation 용 + Zynq 같은 Device 에 Implementation 가능한 코드를 드렸습니다. (attribu..

    [Verilog HDL Q/A. 006] verilog 특성 관련 질문 (동작 관련)

    Q1. 맛비님 현재 chapter 2를 수강하던 중 궁금한 점이 생겼습니다. 1. 제가 유튜브 같은 곳에서 verilog 특징을 찾아보다 영상에서 'verilog는 일반적인 소프트웨어 언어와 다르다 기본적으로 항상 무한 반복된다'라는 말을 들었습니다. 우리가 C 같은 언어는 while문을 돌지 않는 이상 프로그램이 한 번 실행된 뒤 끝납니다 위 말에 따르면 verilog는 $finish;를 만나지 않는다면 코드가 무한하게 반복되는다는 건데 맞는 생각인가요? 2. 1번 질문에서 파생된 것인데. chapter2에서 initial begin - end는 딱 한번만! 실행된다고 하셨습니다. 그럼 1번 질문에서 verilog는 $finish가 없다면 계속 반복된다 라는 말이 맞다면 inital begin - en..

    [Verilog HDL Q/A. 005] High impedance 출력

    Q. High impedance 출력 안녕하세요! 시뮬레이션시 출력 중간시점에 High-z 가 나오는 이유가 무엇일까요 그리고 제거하는 방법은 무엇인지 알수 있을까요 A. 안녕하세요 :) 해당 내용은 최근에 본적이 있어서 빠르게 답변드립니다. unknown 은 값을 알 수 없을때. high impedance Z 는 연결이 되지 않은 Floating 상태일때 발생합니다. Simulation 상에서는 둘다 'unknown' 으로 보여지구요. (simulation tool 마다 다르겠지만.. 보통?) 해결 방법은 unknown : reset 을 통한 초기화 high impedance Z : 신호를 연결하시면 됩니다. 즐공하세요 :)

    [Verilog HDL Q/A. 004] 비메모리 설계시, 리눅스 환경을 사용하는 이유

    Q. 윈도우 환경이 아닌 리눅스를 사용하는 이유는 오로지 개발 속도? 때문인가요.? ( 학부 프로젝트 경험 상, 윈도우에서 개발하는 것도 충분하다 느껴졌고 더군다나 설치과정에서도 GUI 상에서 설치하면 간단한반면에,리눅스에서 커맨드 라인으로 하는 이유가 궁금하네요.. ) A. 회사마다 개발환경은 다르겠으나, 최소한 제가 다녔던 모든 회사는 Linux 에서 개발을 하였습니다. 이유는 크게 두가지로 생각하는데요. 1. Tool 최적화관점. 대부분의 Major 설계 Tool (Synopsis, Cadence, mentor) 들을 보면, ASIC Flow 를 진행하기 위해서 사용합니다. 이 때 사용하는 Tool 들이 Linux 기반에 최적화가 되어있습니다. 현업가시면 자연스럽게 Linux 환경을 사용하실 겁니다..

    [Verilog HDL Q/A. 003] 시뮬레이션에서 클럭 rising edge 순간 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 논리 상태에 대해 궁금합니다.

    Q1 시뮬레이션 결과를 보시면 클럭 rising edge 순간에 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 시뮬레이션 결과처럼 실제 fpga 구현 되었을 때 문제가 없을까요? A1 안녕하세요 :) Functional Simulation 에는 Timing 정보가 들어있지 않아서, edge 동기화 되서 waveform 이 보여집니다. 강의에서는 Post Simulation 을 보여드린 적은 없지만, 구글링 하시면 이해가 되실꺼에요. ("Netlist 추출 + Timing 정보" 와 함께하는 Simulation) 시뮬레이션 결과를 보시면 클럭 rising edge 순간에 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 시뮬레이션 결과처럼 실제 fpga 구현 되었을 때 문제가 없을까요? 우선..

    [Verilog HDL Q/A. 002] $readmemh 의 사용방법과 사용처

    readmemh 문법에 대해 알아보도록 하겠습니다. 다음 링크를 적극 참고하여 작성하였습니다. https://projectf.io/posts/initialize-memory-in-verilog/ http://www.testbench.in/TB_03_FILE_IO_TB.html Verilog에서의 메모리 초기화 시뮬레이션이나 펌웨어는 memory array, RAM 또는 ROM에 데이터를 로드해야 하는 것이 일반적입니다. 다행히 Verilog는 바로 이 목적을 위해 $readmemh 및 $readmemb 기능을 제공합니다. Verilog Syntax Verilog를 사용하면 16진수 또는 2진수 값으로 텍스트 파일에서 메모리를 초기화할 수 있습니다. $readmemh("hex_memory_file.mem"..

    [Verilog HDL Q/A. 001] testbench 의 input, output, reg, wire ??

    Q testbench에 대한 질문있습니다. 안녕하세요 선생님 여기 테스트 벤치에서 인풋? 아웃풋? 이라고 해야하나요? 기존의 모듈은 input/ output으로 선언하지만 테스트벤치에서는 왜 reg/ wire로 선언하는지 궁금합니다. 감사합니다.. A 안녕하세요. 굉장히 좋은 질문이구요. 아는 범위내에서 답변드릴께요 :) 먼저 Testbench 의 그림을 봐주세요. tb_combi_test 는 in/out port 가 없죠? Test 하고자 하는 DUT 는 in / out port 가 있구요. Test 를 위한 DUT 의 in / out port 연결을 위해서 testbench 내에 reg, wire 가 쓰여요. - DUT 의 input 은 TB 의 reg 와 연결 (input 값을 TB 에서 제어하기 ..

반응형