🏩

VivadoによるIP設計 文字表示回路の設計とIP自作

2023/04/02に公開

VivadoによるIP設計 文字表示回路の設計とIP自作

はじめに

前回に続き、「FPGAプログラミング大全 第2版」をやる
https://amzn.to/40isQyG

本投稿では本書7-2~「文字表示回路の事前検証と実機確認」を実施したメモを書きます
前回の続きとして、文字表示回路を設計し、IPパッケージングしてFPGAで動かす

環境

FPGA : Xilinx Zybo Z7-20
OS : WSL2 Ubuntu20.04
開発環境 : Vivado ML edition 2022.1 Linux版

やりたいこと

HDMIでディスプレイに文字を表示する回路を作成する。

文字表示回路の仕様

  • 1文字はタテ×ヨコ8ドットずつで構成
  • ヨコ80文字、タテ80行表示可能
  • 文字コード・文字色の記憶にはVRAMを使用
  • 文字パターンを記憶する読み出し専用メモリとしてCGROMを使用

実装

Projectの作成

  • Projectの作成 ->Create and package new IP
  • Package a specified directory
  • 付録のchardisp_ipディレクトリを選択 ->Finish

    VRAMとCGROMが不足している

VRAM生成

  • Block memory generator IPを追加
  • Customize IP
    • Memory Type : True Dual Port RAM
       表示タイミング読み出し、AXIbus経由でのCPU読み書きを行うため、2系統が必要
    • Byte Write Enable : ON
    • Byte Size : 8bit
      VRANデータ幅は24bitだが、これにより8bitずつ書き込み可能となる
    • portA/B: Write/Read Width ->24bit , write/read depth : 4096
    • Enable Port type : Always enabled



Summaryを確認してOK

  • Out of context per IP -> GenerateでVRAMが生成される

CGROM生成

  • Block memory generate IPを追加
  • Customize IP
    • Memory Type : Single Port ROM
    • Port A Width : 8bit
    • Port A Depth : 1024bit
    • Enable port type : always enabled
    • Other option / Memory Initialization -> Load init FIle on
    • Coe fileを選択(CGDATA.coe)

Summaryを確認してOK -> Generate

  • Re-package IP

    文字表示回路のIPが完成


IP catalogからchardisp_ipが呼び出せるようになった

文字表示回路のシミュレーション

  • Simulation用の新規プロジェクトを作成する
  • Memoryに値を書き込んでファイルを出力するテストベンチを作成する
     手順は以前のパターン表示回路設計時と同じ

https://zenn.dev/ryo_tan/articles/464484ae3de8e0


こんな感じのヒエラルキーになればOK

Run Simulation



5.1usでResetが解除され、Write EnableがHigh -> CGROMからデータ取得している?

0.85ms辺りでメモリへのWriteDataが終わっている

VGA_DE ->H後、2.7ms辺りからRGB論理が変化し、画像として表示されているのが分かる

InfanViewで書き込まれたデータを確認

シミュレーション完了!!!!!

次回は実機検証を行う

Discussion