SNSへはこちら

GreenPAKでお手軽ハードウェア設計(1) - 概要・開発環境その1

こういう特殊なチップを待っていた...

このチップは...

GreenPAK という IC があります。これは規模の小さい回路をプログラマブルに書き換えのできる IC です。FPGA みたいなものです。更に特徴というと、

  • 電源電圧 2.3V 〜 5.5V という幅広い動作範囲
  • ロジックだけではなくアナログ回路も構成可能
    • PSoC のお手軽版と考えても良いかも。ただし PSoC 5LP のようにプロセッサは非搭載の模様。
  • 書き換えの通信プロトコルでは I2C を使用
    • お手軽に書き換え可能!
    • JTAG アダプタやら高価なものはいらない
    • 現状、専用書き込みアダプタ、Arduino、M5StickC で書き換えされた実績があるよう
  • IDE が幅広い OS に対応!
    • Windows
    • macOS
    • Ubuntu
    • Debian
これだとただの FPGA の劣化版という気がしますが、以下の点でメリットと思います。
  • 回路ブロックの実装が簡単で、小規模な回路を組み立てるのにサクッとできる
    • IC 内部にマクロセルがあるため、それとの結線をプログラムで指示するイメージ
    • イチから回路ブロックを論理合成うんぬんするわけではないので、柔軟性に欠けるがその点実装までの時間が短い
  • 値をメモリに書き込まなくても機能を逐一切り替えながら使うことも可能
    • 不揮発性メモリ(Non-volatile Memory: NVM)に値を書き込んで動作する
    • 一方、マイコンと接続すれば NVM の値関係なくコンフィギュレーションを行える
    • マイコンに対して単なるスレーブとすれば、ペリフェラル拡張 IC 的な役割を担える

これはデカイと思いますねえ。お手軽に小規模回路を組めるのは素晴らしいところです。
FPGA というと(ロジック回路に限った話ですが)何でも好きなように作れる反面、ビットストリーム出力までに時間がかかったり、設定せねばならない項目が多くて低レイヤの自分は食指が進まなかったりしたので、ひとまず簡易プログラマブル回路ICとして試食していこうかなと思っています。

なお今回はメルカリであおいさやさんから購入しました。
今はオレンジピコショップで販売しているようですね。個人輸入するより断然お安いのでこちらで購入するといいかなあ。
いじった型番は SLG46826G です。

そもそも、ぼくは最近 FPGA に興味を持ち始めました。Verilog を用いて自分好みのハードウェアを設計することができて、マイコンいぢりとは違いとても楽しいです。
ですが一方で論理合成に時間がかかりすぎるとかもっと気軽にハードを構成できないかと思っていました。そうしたらちょうどこのような都合のいい IC が登場したというわけです。そりゃ飛びつくよね。面白そうすぎるもんこんなん。

目標

せっかくなんでこのお手軽プログラマブル IC を遊び倒そうと思います。
単に遊ぶだけではつまらないので、自称過激低レイヤerである自分は、一般的な書き込みアダプタ、Arduino 等をあえて使わずマイコン経由で I2C 通信を用いて書き込むということを目指します。

参考

基本的なことはすでに他の方がされていますので、そちらを参考にしたほうが良いかと。

ノートなど

公式情報

開発環境の構築

まずは上記参考リンクから IDE をダウンロードします。少し情報入力が必要のようですね。
ってかダウンロードがおっそい。OS を選択して、気長に待ちましょう。

インストーラパッケージが展開されるのでインストール。これで環境構築は完了です。

お試しプロジェクト

アプリケーションフォルダから GreenPAK Designer.app を実行します。
ウィンドウ右側 Develop より SLG46826G を選択し New をクリックするとプロジェクトが生成されます。プロジェクトと言ってもごくかんたんな単一ファイルで構成されるものですが。
そこで電源電圧などの電気的特性を入力するのですが、ごく適当に以下のように打ち込みました。

とりあえずこの IDE の操作はこちらの同人誌で学んだ上で、下記のように接続しました。LED は PIN1 につなぎます。

あとはこれを出力しますが、File → Export → Export NVM を選択し、csv ファイルを選択し保存します。ロジックとしてはかなり短時間でファイル出力が終わります。
まあできているマクロセルを使用する仕様なので、バスマトリクスを設定するだけなのでしょう。

そんで、出てくるファイルは...

$ cat blink.csv
1F
00
00
00
00
00
00
...

いや、これ CSV じゃないじゃん

次回以降はこれを加工し、STM32 マイコンで I2C 書き込みプログラムを生成します