C言語で設計する ディスプレイ・コントローラ

特集
表示回路だって高位合成で作れる!
特集
指示子とオプションを適切に指定して狙った通りのタイミングを生成する
C 言語で設計する
ディスプレイ・コントローラ
小野 雅晃
Masaaki Ono
一般的に高位合成による回路設計は,クロック単位でタイミングを制御するバス・インターフェースの記述に
は向かないとされています.しかし,PIPELINE 指示子とそのオプションを適切に使えば,狙ったタイミングで
信号を生成することが可能です.乗算回路のテストではスイッチと LED しか使えませんでしたが,表示回路であ
れば ZYBO に搭載されている VGA 出力コネクタから画像を表示することができます.
表 1 ディスプレイ・コントローラのタイミング仕様
項 目
画像表示領域
水平同期系
垂直同期系
写真 1 ディスプレイ・コントローラの出力画像
● ディスプレイ・コントローラの仕様
Vivado HLS の応用例としてディスプレイ・コント
ローラを作成してみましょう.ディスプレイ・コント
ローラは出力するべき信号のタイミングが決まってい
るので,高位合成で作るのは無謀だと思いましたが,
やってみたらうまくいきました.
今回作成するディスプレイ・コントローラの表示画
像は,写真 1 に示すように全画面を 4 分割して,右上
が赤,左上が緑,右下が青,左下が白を表示します.
ディスプレイ・コントローラの解像度は SVGA 解
像度の横 800 ピクセル,縦 600 行とします.ピクセル・
クロックは 40MHz(周期は 25ns)で,フレームレート
は 60fps(frame per second)です.表 1 に信号仕様を
示します.
1.新規プロジェクトの作成と
C ソース・ファイルの追加
● ディスプレイ・コントローラの新規プロジェクト
を作成
Vivado HLS 2016.1 で新規プロジェクトを作成しま
値
800 クロック
水平フロント・ポーチ 40 クロック
水平同期信号
128 クロック
水平バック・ポーチ
88 クロック
画像表示領域
600 ライン
垂直フロント・ポーチ 1 ライン
垂直同期信号
4 ライン
垂直バック・ポーチ
23 ライン
しょう.まずは,Vivado HLS 2016.1 を起動します.
起 動 画 面 で,Create New Project を ク リ ッ ク し て,
新規プロジェクトを作成します[図 1(a)
]
.
New Vivado HLS Projectダイアログの Project
Configuration が表示されます.Location に適当なフォ
ルダを指定して,Project name に display_cont( 名前
は何でも構わない)と入力し,Next ボタンをクリック
します[図 1(b)
]
.
次 の Add/Remove Files の Add/Remove C-based
source files,その次の Add/Remove Filesの Add/
Remove C-based testbench files は,何も入力しない
で Next ボタンをクリックします.
次に Solution Configuration が表示されます.Clock
の Period は SVGA 解像度のピクセル・クロックの 40
MHz の周期 25(ns)を入力します.FPGA の種類を選
択するために Part Selection の「…」ボタンをクリック
します[図 1(c)
]
.
す る と Device Selection Dialog が 表 示 さ れ ま す.
Select は Parts に設定されていると思います.Filter
の Product Category を General Purpose に,Family
を zynq に,Sub-Family を zynq に,Package を clg400
に,Speed grade を -1 に 設 定 し ま す. す る と, 下 の
ウィンドウに xc7z010clg400-1 が表示されるので選択
して OK ボタンをクリックします[図 1(d)
]
.
1.新規プロジェクトの作成と C ソース・ファイルの追加
71
Xilinxも Altera も無償時代! 最新C開発ツール大研究
第6章
1
2
3
4
5
6
7
8
App
1
App
2