Qflowを使ってSJRで作ったHDLファイルを合成・配置配線してみた

Qflowを使ってSynthesijerで作ったLチカモジュールを合成・配置配線してみました.

ターゲットは,SynthesijerのサンプルのLチカ.カウンタだけの簡単なLチカプログラムです.Synthesijerで生成したVerilogファイルを入力に

qflow synthesize led
qflow place led
qflow routing led

とした結果をmagicでみてみると次のような感じに.とりあえず,記述としては受理されるようでよかった(中身はこれからおってみる)

Xilinx FPGA向けCortex-M1を合成してみた

arm Cortex-M1(Cortex-M0をFPGA向けに最適化したコアらしい)がXilinx FPGAで無償で利用できるという話をきいたので,試してみました.

リソースは,Easy Access to Cortex-M Processors on FPGA からアクセスできる.

XC7A35向けの合成で,リソース使用量は,

  • Slice LUT 3481 (16.7%)
  • Slice FF 2814 (6.8%)
  • Slice 1171 (14.4%)
  • BlockRAM 24 (48%)
  • DSP 3 (3.3%)

という結果.HCLKという動作クロックっぽいポートには100MHzが供給されていた.

MicroBlazeは,テンプレートで作ったササンプルデザインで,最適化オプションがPERFORMANCEで1405 Slice,最適化オプションがAreaで316 Sliceなので,Cortex-M1のリソース使用量は,その間くらいに当たるよう.

配置配線のフロアマップは下の通り.

続きを読む

シストリックアレイな行列演算器

GoogleのTPU論文で界隈が賑わっていますが,いくつか目をひくポイントの一つが256×256のシストリックアレイな行列演算器ではないでしょうか.

というわけで(?)シストリックアレイな行列演算器をSynthesijer.Scalaで書いてみました.

ソースコードは mkSystolicMatrixMultiplicationUnit.scala です.

続きを読む

FPGAマガジン No.14 掲載記事の関連リストと補足

FPGAマガジン No.14に掲載していただいた”第8章 画像データをダイレクト入力! OpenCLによるカメラ制御&画像処理”の関連リストおよび補足です.

サンプルをベースに開発環境を試す編

sample0.zip

I/Oチャネルを使ってカメラから画像を取得する編

ov7670_sw.zip

I/Oチャネルを使ってカメラから画像を取得しつつYUV→RGB変換する編

ov7670_hw.zip

FPGAマガジン No.13 掲載記事の関連リストと補足

FPGAマガジン No.13のMAX10特集に掲載していただいた”第1章 MAX10+BLEモジュールでスマホ制御ラジコンを作る!”の関連リストおよび補足です.

記事では,Macnicaから販売されているOdyssey MAX10 FPGA Eval Kitを紹介しています.提供されているOdyssey IoT Solutionsを使って,”簡単な”FPGA+BLEなモバイルアプリケーションを”簡単”に開発できる環境です.FPGAに限らず組み込み関連では,ちょっとした簡単なことをしたいだけなのに準備が大変なことも多いのですが,この環境では手軽に試すことができます.

詳しくは,本文を参照いただければ嬉しいのですが,サンプルと補足はこちらをご覧ください.

続きを読む

ジグソーモデルな計算のHW実装,ことはじめ

ジグソーモデルは中野先生が提案された,ジグソーパズルを利用したメタモルフィズムの計算機構,です.

計算の途中の状態をジグソーパズルのピースに見立て,入力と時々の状態に対してうまく当てはまるようにピースを並べていけば計算が終わるという楽しい計算機構です.データの与えられ方によっては並列に計算できたり,入力が中途半端に与えられた状態でもできる部分から計算できたり,という特徴があります.

2013年のプログラミングシンポジウムで話を聞いたときに,HDLで書いてハードウェア化してみるのもいいかなーと思いながらも,なんとなく2016年の今日までそのままに…

とりあえずは最初の例題くらいは実装しておこうと,ふと試してみました.

続きを読む

シンプルなSynthesijer.Scalaの始め方(1)

activator(sbt)を使ったシンプルなSynthesijer.Scalaの始め方について紹介します.EclipseでScalaプラグインを使って開発する場合には,Synthesijer.Scalaを使ってみる(Eclipse編)も参照してください.

その前に

SynthesijerはJavaプログラム”を”同様な振る舞いをするVHDL/Verilog HDLに変換しますが,Synthesijer.ScalaはScala”で”RTLモジュール(最終的にはVHDLあるいはVerilog HDLで出力)を組み立てるツールです.クロックレベルでの制御,同時並行処理を記述できます.

準備

続きを読む

FPGAマガジンNo.11掲載記事のサンプル一式

FPGAマガジン No.11に掲載していただいた”Synthesijerを使ったFPGA上でのグラフィックス・プログラミング”という記事に使ったサンプル一式をアーカイブにまとめました.執筆当時くらいから,HDLライブラリのポート宣言方法などが変更になったため多少掲載コードと異なっています.

fpgamagazin10_demo.zip

サンプルでは,HDMI出力部分をXilinx XAPP495で紹介されているコードを利用していますので,手元で合成する場合には,あらかじめXAPP495関連リソースをダウンロードしておく必要があります.

ちなみに,グラフィクスの事例としては,

が,とても楽しく仕上げられています.