CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

ABEL復習

22V10書込み処理の確認のためテスト用データを作ってみます。
 
今度はABEL言語入力でやってみます。
。。といっても簡単なデコーダぐらいしかコーディングしたことがなく細かい文法忘れてますが。
初期のハードウェア記述言語だけあっていまさらネット上でも解説がほとんど見当たらないなーと思っていたら、ispLEVERのエディタのヘルプからLattice社のサイトにある詳細なABELマニュアルがリンクしていました
 
先ずは基本的なモジュールとして8ビットバイナリUP/DOWNカウンタのソースです。
74193×2相当ですね
いままでAND/ORのつながりの論理式そのもの書くという使い方をしていてましたが、変数やノード、状態遷移などを使えば抽象的な表現も可能です
 
イメージ 4
 
これをリンクデザインにかけると論理式に展開されます
 
ここでうっかり嵌まったのは、GALの各出力マクロセルが持つOR項の数が同じではないことです
このようなソースの場合、高位ビットほどOR項が多くなりますがマクロセルのOR項が足らなくなると
別の余裕のあるマクロセルに勝手にアサインを変えてしまいます
そのためQ0~Q7のピンがどうしても指定したとおりに並ばずバラバラになってしまいしばらく悩みましたが
Q7~Q0と逆順にピンアサインをしたらすんなり通りました
 
イメージ 1
 
これをコンパイルしてヒューズデータができました
 
イメージ 2
 
このヒューズデータも焼きこみ成功。
クロック入力でバイナリカウントしているのが確認できました。
 
イメージ 3