時間があるときだけ、少しずつ進める不定期連載第1回です。
UML2SFLを用いる例題として、16ビットCPUを作ってみることにします。
第1回は、入出力仕様を決めます。アドレスビット数以外はアーキテクチャにあまり依存しない汎用的な仕様にしておきます。(アドレスは、少し多めにビット数を取っているので、多くの16ビットアーキテクチャはこの枠組みでできるのでは?)
5分くらいで、ぱっと作ったので、抜けがあるかもしれませんが・・
UMLのクラス図だと、タイミングを記述できないのが難点ですね。タイミングチャートで表すのがまっとうかと思いますが、残念ながらArgoUMLにはタイミングチャートはないので、各トランザクションの概略はシーケンスチャートで表しましょうか・・。
最近のメモリはいろいろなインタフェースのものがあって、小規模のFPGA内蔵用CPUがメモリコントローラを内蔵するのは得策ではないので、メモリコントローラへの接続に便利なようにインタフェース仕様を決めていきます。
具体的には、メモリトランザクションは、1クロックのコマンド信号にデータ・アドレスを載せて送出することにします。
一方、割り込みや、停止要求は、要求元が取り下げたり、複数の要求元から発生する可能性があるので、レベルセンシティブな信号とするのが良い方法です。