フォト
無料ブログはココログ

MyList

« マニュアルなんかじゃ人は育たず | トップページ | 仕事の減らし方 -新世代のプレイングマネジャー- »

2014年12月19日 (金)

MCPU - Minimal CPU for a 32 Macrocell CPLD

Opencoresに「MCPU - Minimal CPU for a 32 Macrocell CPLD 」という、わずか32マクロセルで構成できるCPUのIPがある。

Mcpu

 データバス8bit、アドレスバス6bitで、命令は4つだけだ。
ジャンプは条件ジャンプJCC(Jump if Carry Clear)しかなく、演算命令は、NORとADDだけだ。

Mnemonic Opcode Description
NOR 00AAAAAA Accu = Accu NOR mem[AAAAAA]
ADD 01AAAAAA Accu = Accu + mem[AAAAAA], update carry
STA 10AAAAAA mem[AAAAAA] = Accu
JCC 11DDDDDD Set PC to DDDDDD when carry = 0, clear carry

Accにデータをロードする LDA memは、NOR allone、ADD memの2命令で実現する。(alloneは11111111が記録されているアドレス)
無条件ジャンプ JMP dstはJCC dst,JCC dstの2命令で実現する。JCCが実行されると分岐するしないにかかわらずCarryはクリアされるので、どちらかのJCC dstでジャンプできる。

Macro Assembler Code Description
CLR NOR allone Clear Accu (allone contains 0xFF)
LDA mem NOR allone,ADD mem Load meminto Accu
NOT NOR zero Invert content of Accu (zero contains 0x00)
JMP dst JCC dst, JCC dst Unconditional jump to dst
JCS dst JCC *+2, JCC dst Jump if carry set
SUB mem NOR zero, ADD mem, ADD one Subtract mem from Accu (one contains 0x01)

 久しぶりに見たら、アセンブラとシミュレータがGitHubで公開されていた(https://github.com/cpldcpu/MCPU)のでDLしてみた。

Cpu3emu

このCPUの論文(mcpu.pdf)には、XilinxのWebPackとXC9536で合成できると書いてあるが、デフォルトの設定でコンパイルすると、Fitでエラーが発生する。

ERROR:Cpld:868 - Cannot fit the design into any of the
specified devices with the selected implementation options.

だそうで、Fitのプロパティの Implementation Template を Optimize Density にすると合成できる。

 秋月で売ってる XC9536XL-10 VQG44C だと、10.638MHzで動くらしい。
(今気づいたのだが、以前売ってたのは、たしかXC9536だったけどいつの間にかXC9536XLになってる。)

 あとは、RAMとクロックがあれば動くが、何か制御しようとすると外付けでI/O必要だ。バッファ(74HC541)とラッチ(74HC574)とアドレスデコーダーで作れるが、アドレスデコーダーはXC9536に納まりそうだ。
(今気づいたのだが、秋月では東芝のTC74HC541APとTIのSN74HC541Nを売っているがSN74HC541Nの方が20円安い)

つづく

« マニュアルなんかじゃ人は育たず | トップページ | 仕事の減らし方 -新世代のプレイングマネジャー- »

FPGA」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: MCPU - Minimal CPU for a 32 Macrocell CPLD:

« マニュアルなんかじゃ人は育たず | トップページ | 仕事の減らし方 -新世代のプレイングマネジャー- »