CPU実験室

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

ロジック見直し

さてこのロジック図をispLEVERでコンパイルかけると論理式には難なく展開されますがその後デバイスにフィッティングさせるツールの中で必ずエラーに落ちてしまいます。

 

FIT Generic Device Fitter
ispLEVER Classic 2.0 Copyright(C), 1992-2005, Lattice Semiconductor Corporation. All rights reserved

Input file: 'ctrl32.tt3'
Device: 'P22V10GC'
Logical Error 5003: A10 pin 10 can't be used as input nor feedback.
Fatal Error 5306: Can't use an inverted clock. This configuration is not physically possible with the target device.
Done: failed with exit code: 0002.

この構成は、このターゲットデバイスでは物理的に不可能だと・・・

 

これはGALの内部構造をみれば当然でした。全ての出力ピンにはOLMCという出力形式を決めるロジックが付いていてここにレジスタ用のFFが入っています。このFFのクロック入力は全て1本にまとめられて直接特定の入力ピンに固定されています。そのためそれぞれのFFを違うクロックで駆動したり、GAL内のロジックを通したクロックを入力することが物理的にできない、ということになります。

 

f:id:O3I:20191011092604j:plain

 

小規模PLDがGALに集約される前はPAL、PALCE、PEEL・・とかいろいろなシリーズがあって品種もいろいろあったのですが、単にAND項の規模だけでなくOLMCのバリエーションがあったわけです。中にはレジスタのクロックを個別に制御できる品種もあって、極端な話PEELにこんなインプリメントをした設計例を見たことがあります。

f:id:O3I:20191011100531j:plain

そこはSN74LS74でいいだろ・・ (とツッコミ)

 

まぁ変なバリエーションを増やすより少品種で大体の用途をカバーできるプログラマブルなGALのOLMCに落ち着いたんでしょうが、今回のロジックを入れ込むには見直しが必要です