PYNQ에서 플레이하기 : 2. Verilog HDL 사용하기

9807 단어 FPGAPYNQ-Z1PYNQ

이것은 무엇인가



PYNQ-Z1을 사용하여 놀아보세요.

이번은, 아래와 같이 할 수 있게 되는 것을 목표로 합니다.
  • Verilog HDL 코드 작성
  • Verilog HDL로 모듈을 만들고 IP에 연결

  • 관련 기사:
  • PYNQ에서 놀기 : 1. LED를 깜박임

  • 하는 일


  • CLK를 계산하는 카운터를 verilog HDL로 작성
  • 카운터를 사용하여 분할하여 LED를 깜박임


  • 유용한 링크



    ...

    2-1. 프로젝트 만들기



  • PYNQ 또는 Vivado 설정이 아직 없는 경우

  • 참고 절차 1-2. 개발 준비 참조


  • 절차 1-3. 프로젝트 만들기을 참조하여 새 프로젝트를 만듭니다.
  • 프로젝트 이름 : asobu02
  • Project location : ~/vivado/asobu
  • 했습니다.


  • 절차 1-4-1. ZYNQ의 IP 배포을 참조하여 Block Design 만들기
  • 이름이 design_1로 남아 있습니다


  • 2-2. Verilog HDL로 모듈 만들기



    2-2-1. Verilog HDL 파일을 추가합니다.



    Sources의 Design Sources를 마우스 오른쪽 단추로 클릭하고 Add Sources를 클릭합니다.



    design sources가 선택되어 있는지 확인하고 Next



    Create file을 클릭하고 File name을 지정합니다. led_blink했습니다.



    마침을 클릭하여 완료



    I/O 포트는 나중에 설정되므로 우선 OK합니다. 경고가 나오지만 yes



    2-2-2. Verilog HDL 파일 편집


  • 새로 만든 led_blink를 두 번 클릭
  • 오른쪽에 편집기가 열립니다


  • 100MHz에서 클럭이옵니다
  • 시계를 26 비트 카운트
  • LED로의 출력을 카운터의 26 비트와 동기화하여 깜박이십시오
  • .
  • 0.335 초 정도로 ON/OFF 가 전환되어야 합니다

  • led_blink.v
    module led_blink
      (
        input CLK,   // 入力 CLK を定義します
        output led   // 出力 led を定義します
      );             // 最後の行には , がいらないので注意
    
      reg [25:0] counter;    // 26 bit のカウンタを定義します
    
      always @(posedge CLK)  // CLK が立ち上がるたびに、この中が実行されます
        begin
          counter <= counter +1; 
        end                // counter を 1 追加するだけです。 +=, ++ は使えません
                           // 桁が溢れると、0 に戻ります
    
      assign led = counter[25];  // counter の 26 bit 目を led に接続します
    
    endmodule
    

    편집기를 편집한 후 Ctrl+S를 누르거나 save 버튼을 눌러 저장합니다.



    2-3. IP Integrator에서 IP 배포



    거친 절차는 다음과 같습니다 :
  • led_blink.v 배치
  • ZYNQ (CPU) IP 배포
  • 배선하기

  • 2-3-1. 자체 제작 모듈 배치


  • Diagram을 클릭하십시오
  • led_blink.v를 마우스 오른쪽 단추로 클릭하고 블록 추가 디자인을 클릭



  • led_blink.v 모듈이 설치됩니다.



    2-3-2. ZYNQ 배치



    절차 1-4-1. ZYNQ의 IP 배포을 참조하여 ZYNQ IP를 설치합니다.



    2-3-3. 배선하기



    led_blink_0의 led 터미널을 마우스 오른쪽 버튼으로 클릭하고 Make External을 클릭합니다.



    생성된 led_0 포트를 클릭하고 External Port Properties 상자의 Name: 을 LED로 변경합니다.


  • Run Connection Automation 및 Run Block Automation을 클릭하여 실행합니다
  • .
  • ZYNQ7 Processing System의 FCLK_CLK0과 M_AXI_GP0_ACLK가 자동으로 연결되지 않았으므로 수동으로 연결합니다
  • 디자인은 이렇게되었습니다



  • 2-4. 후마무리



    2-4-1. HDL Wrapper 생성



    단계 1-5. HDL Wrapper 생성와 유사한 단계입니다.

    2-4-2. 제약 파일 설정



    절차 1-6. 제약 파일 설정와 유사한 단계입니다.

    2-4-3. 생성하기



    단계 1-7. 생성하기와 유사한 단계입니다.

    이런 구현이 되었습니다. AXI를 사용하지 않기 때문에 매우 간단합니다.



    2-5. PYNQ로 실행하기



    2-5-1. 파일 업로드



  • 절차 1-8-1. 파일 업로드을 참조하여 PYNQ에 업로드
  • 예를 들면 이런 명령이 됩니다
  • scp ~/vivado/asobu/asobu02/asobu02.runs/impl_1/design_1_wrapper.bit [email protected]:pynq/overlays/asobu02/asobu02.bit
    scp ~/vivado/asobu/asobu02/asobu02.srcs/sources_1/bd/design_1/hw_handoff/design_1.hwh [email protected]:pynq/overlays/asobu02/asobu02.hwh
    

    2-5-2. jupyter에서 실행



  • 참고 1-8-2단계. jupyter에서 실행 참조



  • asobu02.ipynb
    import pynq
    fpga = pynq.Overlay('asobu02.bit')
    # コンフィグレーション完了後、LED が点滅し始めるはずです
    

    좋은 웹페이지 즐겨찾기