2020-05-15 23:58 — asano
カテゴリー:
ちょっと訳あってGAL動かしてみました。
これまでにも勤務時代にAltera(今はIntelになっています)のEPM7128とかLatticeのLC5256MVなんかは使ったことがありました。公式には私はソフトウェア担当だったのですが、いろいろあって回路やこのようなPLDの設計も何度かやる機会もあったのです。
個人的にはGALやXilinxのXC9500など必要になったら使えるようにデバイス調達したり書き込み環境準備したりしていたのですが、いつも汎用ロジックで何とかなってしまい実践する機会がありませんでした。
そんな中、機会が到来しました。
またEMILY Board用のMPUボードを計画しICの配置を考えていたのですが、どうやっても秋月のBタイプ基板に収まりません。Aタイプにすれば収まるのですが、かなり大きくなってしまいます。ところがGAL16V8を使えばBタイプ基板に余裕で収まりますし、当初あきらめていた機能も追加できそうです。
.jedファイルの生成にはWinCUPLを使うことにします。
大昔の記憶ではPALASMでPAL用のファイルを出力させてGAL用に変換するとか、ChaNさん作のGALアセンブラ、などもありましたが現在ではこれが一般的でしょう。
デバイスへの書き込みにはTL866Aを使用することにします。
現在では後継のTL866 II Plusが出ていますが、GAL16V8, GAL20V8, GAL22V10, ATF16V8はどちらでも書き込めるようです。ATF20V8, ATF22V10はTL866 II Plusでないと書き込めないようなので、私もいずれはII Plus買わないといけなくなるかもしれません。今のところ手持ちはすべてGALなのでTL866AでOKです。
さて、WinCUPLで.jedファイルを生成するには論理をCUPLで記述しなくてはなりません。とりあえずネット上のサンプルをいくつか読んでみるとそんなに難しくはなさそうです。
これまで使ったことのあるVerilogと比較すると、ソフトウェアで言うところのコンパイラとアセンブラの違いのような印象を受けました。あくまで印象ですよ。
Verilogを使っていたときは自分の書いたコードがどう実装されるのかよくわからないことが多かったです。シーケンサをバイナリカウンタで書いても勝手にワンホットにされていたり。もちろんクロック上限が上がるなどのメリットがあるわけですが。
一方CUPLだと一つ一つのレジスタについて自分で書かないといけません。大規模なものを書けといわれたら途方に暮れますが、GAL程度の規模なら問題ないでしょう。
(続く)
Add new comment