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

MyList

TD4/GMC-4

2022年12月30日 (金)

GMC-4で動く3連ナイトライダー

10年前に書いた投稿(大人の科学No24 2012/09/27)にRESが付いた。

大人の科学No24の付録の4Bitマイコン(GMC-4)で動く3連ナイトライダーのプログラムを紹介した記事で、
・プログラム38ワード、データ2ワード
が最小と書いた。これに対して、
・プログラム37ワード、データ1ワード
に短縮できるという内容だった。

昔書いたコードを探したが見つからなかった、あれからPCを2回くらい変えたし、当時使っていたNASは死んだ。
まあ、1度書いたコードは簡単に書けるだろうと思って書き始めたら、38ワードは38hワードの間違いかと思うくらい書けなかった。
2週間以上ハマってしまった。

Qiitaの投稿では、当時の動画に初期状態が無いという理由で初期化を省略してある。
当時ココログは動画のサイズ1MBに制限されていたので初期状態を含めることができなかったのだが、初期状態は表示している。
記憶が正しければ、データ2ワード使用しているのは、データメモリ5Eh,5Fhのビットパターンを表示する CAL DSPRを使用して初期状態を表示しているからだ。初期状態を表示しなくて良いなら、データメモリを使わないで書ける。
↓こんな感じ

	ORG	0	;
INIT:
TIA 1h ;
;2
L1:

CAL SETR ;
AIY 3h ;
;4
AO ;
CAL RSTR ;
CAL TIMR ;
AIY Ch ;
JUMP L1 ;
;10
L3:
AIY 4h ;
AO
CAL SETR ;
;5
AIY Dh ;
CAL RSTR ;
CAL TIMR ;
CIY 3h ;
JUMP L3 ;
JUMP INIT ;
;12
; Total 35

↑はプログラム35ワード/データ0ワードだ。
今のところこれが最小だと主張しておこう(^^。

なぜ今のところかというと、元記事で最小と主張していたプログラム38ワード/データ2ワードで初期状態を表示するために必要なプログラム4ワード/データ2ワードを省略すると、プログラム34ワード/データ0ワードで書ける...はず。

↓動画、GMC4simを使いました。


最近の投稿】【最近のTD4/GMC-4】【プログラミング】【2019の投稿】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2019年8月11日 (日)

74HC181 <4bit ALU>

ヤフオクで74HC181が出ていたいのでポチってみた。4個で2,500円でお手ごろだ。

74hc181x4

74LS181と14581は持っていた。

14581 74ls181

74181や74F181は秋葉で見たことがある。

今時はTTLといっても74HCシリーズ(CMOS)を使うので74LS181を使おうとするとレベルが違うので74HCTシリーズを使わなければならない。(まじめに作るろうとすると)

74181は4bit ALU(Arithmetic and Logic Unit)算術論理演算で、四則演算や論理演算ができるICだ。昔昔、コンピュータが標準ロジックICで作られていたときには、74181が使われていたそうな。

標準ロジックICでコンピュータを作っている人がけっこういる。(TNACOM-1とかRETFORとかweb-ringもある) 今時はFPGAやCPLDを使うと簡単にできるようになったけど、標準ロジックIC作ってみるとCPUアーキテクチャが理解できるようになる。

簡単なのは「CPUの創りかた」で紹介されているTD4だ。標準ロジックで4bitのCPUを作るというもの。

CPUの創りかた

実際に作ってみた

Td42

TD4の演算は加算だけなので、四則演算や論理演算ができるようなCPUを作ってみたくなる。そうすると、でも紹介されている74181(ALU)が必要になる。

ところが、今時、ALUはCPUの中に一体化しているので単独で使う用途は無くなってしまったので流通在庫を探すしかない。webショップでTTLを売っていると、つい181で検索してしまう。部品屋でTTLを売っていると、つい引き出しを開けてしまう。(変なおじさんだ)


最近の投稿】【TD4/GMC-4 】【2018の投稿】【2017の投稿】【2016の投稿】【2015の投稿

2014年8月25日 (月)

TD4(2)

 以前作ったTD4のページに掲載しているサンプルプログラムが間違っているのではというコメントが付き、調べてみると確かに間違っていたのでシミュレータ(logisim)でシミュレーションしてサンプルプログラム(ナイトライダー)は正しく動作することを確認した。

 もうひとつのサンプルプログラム(テニスゲーム)は、プログラムが25byteある。作ったときにはスイッチで入力していたのだが、さすがに面倒になったので、arduinoを使ってプログラムローダを仕立てた。

 機能は、プログラムのロードと実行のモニタである。

○プログラムのロードは
手作業でやっていた、
スライドスイッチでプログラムをセット→書き込み(WE)ボタンを押す→ステップ・ボタンを押す
の動作を自動的にやるようにしたもの。

○実行のモニタは
クロックの立ち上がりをモニターして実行しているアドレスと機械語を表示するというもの。

Td4tenis ←奥の緑色の基板が秋月で基板を買って作ったArduinもどき

Programloader

 LコマンドでArduinoにプログラムをロードして、WコマンドでTD4もどきのプログラムRAMに書き込む。Mコマンドで実行しているアドレスと機械語が表示される。

Td4_tenis0000

ダウンロード TD4_tenis1.avi (923.5K)

2014年8月18日 (月)

Logisim

 以前作ったTD4のページに掲載しているサンプルプログラムが間違っているのではというコメントが付いた。 よく見ると確かに間違っているようだ。

 じつはTD4は3回くらい作った。
Spartan3Eとトラ技のおまけのMAXIIと
↓74シリーズで作ったTD4もどきだが、回路図も間違っていた。

20140810td4

 FPGA、CPLDで作るときにはISEやQuartusIIでシミュレーションできる。標準ロジックを使用した回路のシミュレーションも標準ロジックをHDLで書いてライブラリにしておくとISEやQuartusやModelSimでシミュレーションできるのだけれど、簡単に論理レベルでシミュレーションできるものを探したらLogisimを見つけた。

 Logisimはオフィシャルサイトの DownloadページLogisim's SourceForge.net page. からDLする。
シミュレーションに必要な7400シリーズのライブラリは Related linksページ7400 series Logisim library from Ben Oztalay (ZIP, uncompressed) から7400シリーズのライブラリ(7400-lib.circ)をDLしておく。

 このライブラリには、74173(4bit D-type Registers with 3state output),74283(4bit binary adder), 74259(8bit addressable latches)が含まれていないので、
このライブラリ(7400-lib-td4.circ 33.3K) を使用する。

ライブラリは、[Project]→[Load Library]→[Logisim Libray...]で
7400-lib.circと7400-lib-td4.circを読み込んでおく。

シミュレーションファイルは、これ (TD4-Yoshi.circ 43.5K)。 プログラムは
これ KnightRider.bin

Td4sim


ダウンロード TD4-sim-1.avi (922.5K)

2012年9月27日 (木)

大人の科学 vol24

大人の科学 Vol24 4ビットマイコン

2009年に発売されたVol24の付録は4ビットマイコンで発売されてすぐに買って遊んだ。
Kagaku_vol24

付録のGMC-4は1981年に発売された電子ブロックシリーズに含まれるFXマイコンの復刻版らしい。
Gmc4

 レジスタは8個、命令は30個だが半分は組み込みサブルーチンへのCALLなので、アセンブラを作るのは簡単(スクリプト言語でチョコチョコっと作れるくらい)だ。何種類か公開されていたはず。

 yacc,flexの勉強がてら2パスアセンブラを作った。yaccの課題で電卓の次としてはちょうどいいくらいだった。プログラミングは命令が少ないので覚えてしまうくらいだがやはりアセンブラがあるとずいぶん楽だ。

 プログラムメモリが80ワード、データメモリが16ワードしかないので、如何にプログラムを小さくするかが問題である。

当時撮影したビデオがあった。(お約束のナイトライダー)
Knightrider0000

←リンク先にAVI

 LEDが1個流れるのは簡単で、3個が流れるのはちょっと面倒、
最小はプログラム38ワード、データ2ワードだ。 どうよ >T君

 改造ネタを考えていたのだがフェードアウトしてしまった。

2011年9月 7日 (水)

TD4

「CPUの創りかた」のTD4を作ったときの記録