SystemCでDE0-CVの回路を作る 構想編

SystemCを使ってDE0-CVの回路を作りたいと思ったのでやってみた。
本当はCPUの創りかたのTD4を作ろうと思ったけど、まず簡単な回路で。

動作

f:id:m_keishi2006:20180503204657p:plain:w512

DE0-CVの左下のスイッチの下位4bitずつを加算して7セグメントLEDに表示する。
例えば、
  OFF-OFF-OFF-ON OFF-OFF-OFF-ON  → 02 を表示
  ON-OFF-OFF-ON OFF-ON-ON-OFF  → 1b を表示
みたいな感じ。

機能ブロック図

f:id:m_keishi2006:20180503205333p:plain:w512

太字斜体 → 入出力ポート
[数字..数字] → bit幅 (VHDL)
<数字> → bit幅 (SystemC)

DE0_CV_TestAdderはVHDLで書かれたTopエンティティ
DE0-CV付属のDE0_CV_SystemBuilderで生成したverilog-HDLをVHDLに変更しただけのもので特に機能はない。

AdderTop以下がSystemCで作ったところ。
入力データ4bitと4bitを加算して、上位bitと下位bitで7セグメントLEDの値にエンコードしている。
それだけの回路。

実装の細かいところ

AdderModuleとSeg7EncoderはそれぞれAdderModule.cpp/hとSeg7Encoder.cpp/hにファイルを分けている。
本当はAdderTop以下に全部書いても良かったけど、Top結線のテストのためにもそんな構成にした。

工程とツール

下記の3工程とツールを使った。
SystemCをRTLに合成するツールで使えるのがVivadoHLSしかなかった……。
Intel(Altera)のFPGA用RTLをXilinxのVivadoで作るというへんな工程に。
会社だとNECのCyberWorkBenchを使ってるんだけど、個人では使えないしな。

f:id:m_keishi2006:20180503210209p:plain

次回は環境構築編を予定