Skip to content

universemodifier/atom_display_fpga

 
 

Repository files navigation

ATOM Display (Lite) / Display Module FPGA Design

概要

本リポジトリには、M5Stack社が製造・販売している ATOM Display, ATOM Display Lite, Display Module 13.2 (以下 ATOM Display と記載)に搭載されているFPGA上の論理回路のソースおよび合成手順が含まれている。

ATOM Displayに搭載されているFPGAはGOWIN社の GW1NR-LV9QN88 であり、GOWIN社から提供される GOWIN EDA ツールを用いて論理合成、配置配線、ビットストリームの生成を行うことにより、付属のテストコードと結合して、生成したビットストリームを動かすことができる。 (注:GOWIN EDA Education版非対応のデバイスなので、GOWIN EDA Standard版が必要)

システム構成

ブロック図

デザインのリソース使用量

----------------------------------------------------------
Resources                   | Usage
----------------------------------------------------------
Logic                       | 4971/8640  57%
  --LUT,ALU,ROM16           | 4785(3896 LUT, 889 ALU, 0 ROM16)
  --SSRAM(RAM16)            | 31
Register                    | 4081/6807  59%
  --Logic Register as Latch | 0/6480  0%
  --Logic Register as FF    | 4078/6480  62%
  --I/O Register as Latch   | 0/327  0%
  --I/O Register as FF      | 3/327  1%
CLS                         | 3824/4320  88%
I/O Port                    | 39
I/O Buf                     | 38
  --Input Buf               | 5
  --Output Buf              | 33
  --Inout Buf               | 0
IOLOGIC                     | 47%
  --IDDR                    | 16
  --ODDR                    | 36
BSRAM                       | 53%
  --SDPB                    | 7
  --SDPX9B                  | 7
DSP                         | 5%
  --MULT18X18               | 1
PLL                         | 1/2  50%
DCS                         | 0/8  0%
DQCE                        | 0/24  0%
OSC                         | 0/1  0%
User Flash                  | 0/1  0%
CLKDIV                      | 0/8  0%
DLLDLY                      | 0/8  0%
DHCEN                       | 0/8  0%
DHCENC                      | 0/4  0%
==========================================================

必要なもの

現在のところLinux環境上でのみ、リポジトリ内のビルドスクリプトの動作を確認している。 また、以下のツールが使える状態になっている必要がある。

デザインの合成

サブモジュールの取得

このリポジトリをクローンする際に --recursive を指定していない場合、以下のコマンドでサブモジュールを取得する。

git submodule update --init --recursive

Chiselデザインのエラボレーション

デザインを合成するには、まずはChiselのデザインからVerilog HDLを生成する必要がある。 以下のコマンドを実行すると、Scalaのビルドツールである sbt を起動して、ATOM Display用のデザインのエラボレーションを行い、 結果として rtl/m5stach_hdmi/video_generator.v を出力する。

  • コマンド
sbt "project atom_display; runMain system.ElaborateM5StackHDMI"
  • 実行結果
[info] welcome to sbt 1.5.4 (Ubuntu Java 11.0.13)
[info] loading global plugins from /home/kenta/.sbt/1.0/plugins
[info] loading settings for project atom_display_fpga-build-build from metals.sbt ...
[info] loading project definition from /home/kenta/repos/atom_display_fpga/project/project
[info] loading settings for project atom_display_fpga-build from metals.sbt ...
[info] loading project definition from /home/kenta/repos/atom_display_fpga/project
[success] Generated .bloop/atom_display_fpga-build.json
[success] Total time: 0 s, completed Jan 13, 2022, 4:00:10 AM
[info] loading settings for project root from build.sbt ...
[info] loading settings for project fpga_samples from build.sbt ...
[info] set current project to root (in build file:/home/kenta/repos/atom_display_fpga/)
[info] set current project to atom_display (in build file:/home/kenta/repos/atom_display_fpga/)
[info] running system.ElaborateM5StackHDMI 
Elaborating design...
Done elaborating.
[success] Total time: 5 s, completed Jan 13, 2022, 4:00:15 AM

IPの再生成

eda/ip ディレクトリにあるGOWIN IPの定義ファイルから、GOWIN IPの合成用ファイルを再生成する。

GOWIN EDAのGUIを起動し、IP Generatorから eda/ip/SDRAM_controller_top_SIP/SDRAM_controller_top_SIP.ipc および eda/ip/sdram_rpll/sdram_rpll.ipc を開き、立ち上がったウィザードでそのままOKを押す。

IP Menu

Open IP Core

Select IP Config

IP Customization

論理合成

eda/atomdisplay に移動して make を実行すると、GOWIN EDAを使って論理合成を行い、ビットストリームを生成する。

また、M5GFXにてビットストリームを取り扱うために生成されたビットストリームをRLEにて圧縮する。

  • コマンド
cd eda/atomdisplay
make
  • 実行結果
gw_sh ./project.tcl atomdisplay
*** GOWIN Tcl Command Line Console  *** 
current device: GW1NR-9C  GW1NR-LV9QN88C6/I5
add new file: "/home/kenta/repos/atom_display_fpga/atom_display/rtl/m5stack_hdmi/video_generator.v"
add new file: "/home/kenta/repos/atom_display_fpga/eda/ip/SDRAM_controller_top_SIP/SDRAM_controller_top_SIP.v"
add new file: "/home/kenta/repos/atom_display_fpga/eda/ip/sdram_rpll/sdram_rpll.v"
add new file: "/home/kenta/repos/atom_display_fpga/eda/src/top.sv"
add new file: "/home/kenta/repos/atom_display_fpga/eda/src/atomdisplay.cst"
add new file: "/home/kenta/repos/atom_display_fpga/eda/src/m5stack_display.sdc"
GowinSynthesis start
Running parser ...
...
[100%] Power analysis completed
Generate file "/home/kenta/repos/atom_display_fpga/eda/atomdisplay/impl/pnr/atomdisplay.power.html" completed
Generate file "/home/kenta/repos/atom_display_fpga/eda/atomdisplay/impl/pnr/atomdisplay.pin.html" completed
Generate file "/home/kenta/repos/atom_display_fpga/eda/atomdisplay/impl/pnr/atomdisplay.rpt.html" completed
Generate file "/home/kenta/repos/atom_display_fpga/eda/atomdisplay/impl/pnr/atomdisplay.rpt.txt" completed
Generate file "/home/kenta/repos/atom_display_fpga/eda/atomdisplay/impl/pnr/atomdisplay.tr.html" completed
Thu Jan 13 04:14:21 2022

python3 ../../script/fs2rle.py impl/pnr/atomdisplay.fs impl/pnr/atomdisplay.rle

テストコードのビルドと実行

以下の手順でテストコードのビルドとATOM Displayへの書き込みを行う。

  1. ATOM DisplayをPCとディスプレイに接続する。
  2. ATOM DisplayのUSBシリアル変換器のデバイス名を調べておく。 (例: /dev/ttyACM0 )
  3. platformio.ini をエディタで開き、 upload_portmonitor_port を (2)で調べたデバイス名に変更する。
  4. test ディレクトリで make を実行する

BUILDING

ライセンス

ソースコードのうち、 src ディレクトリ以下のChiselのコード、 eda ディレクトリ以下のSystemVerilogで記述したトップモジュールは GPLv3 の元で使用できる。

GOWIN EDA のIP Generatorで生成したIPのライセンスは、それぞれのIPのライセンスに従う。

About

FPGA design sources for ATOM Display FPGA M5Stack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • GLSL 94.8%
  • Scala 2.8%
  • SystemVerilog 0.9%
  • C++ 0.7%
  • Tcl 0.4%
  • Makefile 0.3%
  • Python 0.1%