IC・トランジスタで出来たコンピューターを設計・製作するためのブログ
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
LPC810でLチカ色々(SCT) [LPC]
2013年12月16日
LPC810を使ってみた。 [LPC]
2013年12月8日
NXP セミコンダクターのLPC810は、32ビットのARM Cortex-M0+を搭載しながらも、DIP-8パッケージという、一風変わった石である。小規模の回路を作成するのに面白そうなので、使ってみようと思う。一つ前の記事でも紹介したが、SCT(State Configurable Timer)という、高機能なPWMが面白そうである。
以前から興味を持っていたのだが、各種ディーラーでも、NXPでも在庫が無い状況がずっと続いていたが、近日入荷されたので、早速購入してみた。

以前から興味を持っていたのだが、各種ディーラーでも、NXPでも在庫が無い状況がずっと続いていたが、近日入荷されたので、早速購入してみた。

LPCXpresso IDEのRed State Machine file generatorを使ってみた [LPC]
2013年12月3日
LPC8xx(LPC810/LPC811/LPC812)に搭載されているSCT(State Configurable Timer)は、このシリーズの石の目玉となる機能のようで、通常のPWMとして使えるだけでなく、多彩なコントロールの仕方が可能なタイマーらしい。User's Manualに次のような機能が例としてあげられている。
・ 複数のPWMを制御
・ dead-timeコントロール付きのPWM
・ reset-capability付きのPWM
・ その他、今までのPWMでは出来なかった設定
一度設定すれば、CPUからの制御無しに、それ自身で動作を続ける。また、割り込みを掛けることも可能である。
一つの石あたり、32ビットのタイマーが一つ用意されている。また、2つの16ビットのタイマーとして使うことも出来るようだ。クロックは、内部及び外部からの両方が使用可能。基本的に、up-counterであるが、up/downを交互に行なうモードもあるらしい。
SCTには、"state"という概念があって、これで色々制御しているようである。次のイベントが用意されている。
・ counter match condition
・ input/output condition
・ 上記2つのコンビネーション(指定のstateにおいて)
・ count direction
個々のイベントでは、次のことが制御可能だ。
・ outputs
・ interrupts
・ states
ただし、
・ "Match register 0"というイベントは、automatic limitとして利用可能。
・ up/downカウンターとして使用している場合、そのdirectionごとにイベント設定が可能。
・ Matchイベントは、特定のイベントが起こるまで止めておくことが可能。
それぞれの設定は、次の個数だけ設けることが出来る。
・ 4 inputs
・ 4 outputs
・ 5 match/capture registers
・ 6 events
・ 2 states
このSCTという機能は、多種多彩な制御が出来る一方で、その複雑さ故に設定の方法は難易度が高くなっている。これを容易に行なう為のツールとして、LPCXpresso IDE内に、"Red State Machine file generator"という、GUIによる設定ツールが設けられているので、試してみた。
・ 複数のPWMを制御
・ dead-timeコントロール付きのPWM
・ reset-capability付きのPWM
・ その他、今までのPWMでは出来なかった設定
一度設定すれば、CPUからの制御無しに、それ自身で動作を続ける。また、割り込みを掛けることも可能である。
一つの石あたり、32ビットのタイマーが一つ用意されている。また、2つの16ビットのタイマーとして使うことも出来るようだ。クロックは、内部及び外部からの両方が使用可能。基本的に、up-counterであるが、up/downを交互に行なうモードもあるらしい。
SCTには、"state"という概念があって、これで色々制御しているようである。次のイベントが用意されている。
・ counter match condition
・ input/output condition
・ 上記2つのコンビネーション(指定のstateにおいて)
・ count direction
個々のイベントでは、次のことが制御可能だ。
・ outputs
・ interrupts
・ states
ただし、
・ "Match register 0"というイベントは、automatic limitとして利用可能。
・ up/downカウンターとして使用している場合、そのdirectionごとにイベント設定が可能。
・ Matchイベントは、特定のイベントが起こるまで止めておくことが可能。
それぞれの設定は、次の個数だけ設けることが出来る。
・ 4 inputs
・ 4 outputs
・ 5 match/capture registers
・ 6 events
・ 2 states
このSCTという機能は、多種多彩な制御が出来る一方で、その複雑さ故に設定の方法は難易度が高くなっている。これを容易に行なう為のツールとして、LPCXpresso IDE内に、"Red State Machine file generator"という、GUIによる設定ツールが設けられているので、試してみた。
<LPCXpresso IDEのRed State Machine file generatorを使ってみた のつづき>
KM-Z80 C mini 制作中 [PIC]
2013年9月23日
TQFPパッケージのPIC32MX350F256Hを用いて、MZ-80C(48 KB RAMを搭載)互換機を作成中。"KM-Z80 C mini"と名付けることにした。

とりあえず、KM-Z80 miniの上位互換機として、0x1000-0xCFFFの領域に48 KBのRAMを持たせて動作を確認したのが上の写真。このままでは単にRAM容量が増えただけなので、SD-cardを使ってプログラムの読み込みと保存が出来るようにしてから公開したい。
今後の予定
・PIC32MX350F256Hのバージョン(上記、KM-Z80 C mini)で、SD-cardに対応
・PIC32MX150F128B(DIP-28)のKM-Z80 miniも、SD-cardに対応
・DIP-28で48 KBのRAMを持つPIC24EP512GP202を用いて、44 KBのRAMを搭載したバージョンを作成

とりあえず、KM-Z80 miniの上位互換機として、0x1000-0xCFFFの領域に48 KBのRAMを持たせて動作を確認したのが上の写真。このままでは単にRAM容量が増えただけなので、SD-cardを使ってプログラムの読み込みと保存が出来るようにしてから公開したい。
今後の予定
・PIC32MX350F256Hのバージョン(上記、KM-Z80 C mini)で、SD-cardに対応
・PIC32MX150F128B(DIP-28)のKM-Z80 miniも、SD-cardに対応
・DIP-28で48 KBのRAMを持つPIC24EP512GP202を用いて、44 KBのRAMを搭載したバージョンを作成
初めてのTQFP [一般的なこと]
2013年9月15日
MicrochipのPIC32MX150F128Bは、DIPパッケージで、32 KBのRAMを搭載し32 bitのCPUが50 MHzで走る。DIPパッケージでこれだけの性能を持っているチップは例外中の例外で、私の知っている限りよそでは見あたらない。32 KB以上のRAMを持っている物は、QFNとかTQFPとか、表面実装のチップばかりである。
開発を続けているKM-Z80 miniは、現在の所28 KBのRAMを搭載したMZ-80Kをエミュレートしている。MZ-80Kは最大48 KBのRAMを搭載することが出来るので、KM-Z80 miniでも、ゆくゆくはこの容量のRAMを搭載したい。それには、52 KB以上のRAMを搭載したマイコンが必要であるが、残念ながらDIPパッケージでこれだけのRAMを持っている物は無いようだ。
大容量のRAMを実現する方法は、2つ。一つは、大容量RAMを持つチップを利用すること。もう一つは、RAMを外付けで利用すること。一つ目の方法を実現するには、DIPパッケージでは無理で、表面実装の物になる。二つ目の方法では、速度の速いパラレル接続を行うには、やはり表面実装のチップになる。これは、MIPSやARMなどの高速のCPUを持ち、かつI/Oピンの数の多いものは、やはり表面実装になるためである。他方で、ピン数の少ないSPI接続のRAMがPIC32MX150F128Bで使えるが(共に、DIPパッケージ)、この場合はデーターの読み込み速度が問題になる。2 MHzのZ80をエミュレートしているKM-Z80 miniでは何とかなりそうな気もしたが、いずれMZ-700のエミュレートも行うとすると、速度が追いつかない可能性が高い。
そういったことを考え、やはり表面実装のチップもちゃんと扱える用になっておいた方が良いだろうと考え、トライしてみた。

開発を続けているKM-Z80 miniは、現在の所28 KBのRAMを搭載したMZ-80Kをエミュレートしている。MZ-80Kは最大48 KBのRAMを搭載することが出来るので、KM-Z80 miniでも、ゆくゆくはこの容量のRAMを搭載したい。それには、52 KB以上のRAMを搭載したマイコンが必要であるが、残念ながらDIPパッケージでこれだけのRAMを持っている物は無いようだ。
大容量のRAMを実現する方法は、2つ。一つは、大容量RAMを持つチップを利用すること。もう一つは、RAMを外付けで利用すること。一つ目の方法を実現するには、DIPパッケージでは無理で、表面実装の物になる。二つ目の方法では、速度の速いパラレル接続を行うには、やはり表面実装のチップになる。これは、MIPSやARMなどの高速のCPUを持ち、かつI/Oピンの数の多いものは、やはり表面実装になるためである。他方で、ピン数の少ないSPI接続のRAMがPIC32MX150F128Bで使えるが(共に、DIPパッケージ)、この場合はデーターの読み込み速度が問題になる。2 MHzのZ80をエミュレートしているKM-Z80 miniでは何とかなりそうな気もしたが、いずれMZ-700のエミュレートも行うとすると、速度が追いつかない可能性が高い。
そういったことを考え、やはり表面実装のチップもちゃんと扱える用になっておいた方が良いだろうと考え、トライしてみた。

8 color 320x240 graphic display using PIC32MX [PIC]
2013年8月10日
PIC32MX150F128Bを用いて、8色320x240ピクセルの、グラフィックディスプレイを作ってみた。
8色320x240ピクセルのデーター保存には最低288000バイト必要だから、PIC32MX150F128BのRAM容量・32768 bytesはぎりぎりである。同じPICマイコンを使ったグラフィックディスプレイとしては、ケンケンさんの32768色240x224ピクセルの作品があって、これは素晴らしい。今回の物は、性能的には劣るが、一石で仕上げるということ、目標とするMZ-700のディスプレイの規格は満たせること、私自身のカラービデオシグナル作成の勉強を兼ねるということで、8色320x240ピクセルで作ってみた。

KM-Z80 mini version 0.3 [PIC]
2013年7月27日
PIC32MXを用いたMZ-80K互換機の3号機が完成し、ほぼ安定して動くようになった。なお、回路図及びPICプログラムが若干変更になり、ver 0.3としている。
表側は、こんな感じ。左から、電源スイッチ、パイロットランプ(カナの時は赤)、PS/2キーボードコネクタ、テープレコーダー(もしくはiPod)入力端子。

オマケ: ZK-MIPS mini (TK-80風、MIPS32 トレーニングキット) [PIC]
2013年7月27日
ZK-80 miniではMIPS32 CPUを内蔵したPIC32MXに、8080 CPUをエミュレーションさせている。MIPS32を内蔵した石であれば、MIPS32のプログラムを動かせるだろうということで、作ってみた。MIPSの命令を、ハンドアセンブルできる人限定のツール(笑)。
ZK-80 mini (PIC32MXを使った1チップTK-80互換機) [PIC]
2013年7月10日
ZK-80 miniを紹介します。NECのTK-80互換機で、Microchip社のPIC32MX120F032Bを用いて1チップで構成されています。


KM-Z80 mini version 0.2 [PIC]
2013年6月15日
KM-Z80 mini は、Microship の PIC32MX150F128B を用いた、1チップのSHARP MZ-80K 互換マイコンです。
最初の正式バージョンとして、version 0.2 を公開します。
KM-Z80 mini version 0.2 のダウンロードはこちらから。
ライセンスは、私がソースコードを書いた部分は、LGPL v2です。ただし、CG-ROMとモニターROMに関する部分は別のライセンスになっているので、注意して下さい。これらのROMデーターを取得したMZ-700 Emulatorのサイトによると、KM-Z80 mini は「営利を目的としない限り自由」に使用可能なライセンスで配布可能だと理解しています。
最初の正式バージョンとして、version 0.2 を公開します。
KM-Z80 mini version 0.2 のダウンロードはこちらから。
ライセンスは、私がソースコードを書いた部分は、LGPL v2です。ただし、CG-ROMとモニターROMに関する部分は別のライセンスになっているので、注意して下さい。これらのROMデーターを取得したMZ-700 Emulatorのサイトによると、KM-Z80 mini は「営利を目的としない限り自由」に使用可能なライセンスで配布可能だと理解しています。