ikato2019/05/13(月) - 18:21 に投稿

販売します!!
7/30 に本製品(組み立てキット)がクラウド・ファンディング Readyfor に公開されました。8/29までの30日間です。
URL は https://readyfor.jp/projects/td16 です。

なんちゃって16bitの自作CPUです。

弊社完全オリジナル設計の自作CPUになります。

基本部は、標準ロジックIC×44個、Flash ROM×4個、SRAM×1個、発振器 (RTC) ×1個の計50個のDIP型ICで構成されています。上記写真は拡張部込みのものです。

それぞれ幅300mm×奥行き300mmの基板2枚(North Board  と South Board)で構成され、前後配置、または上下にスタック可能です。

本機はCPUの構成・挙動を理解する教材としても活用できます。

 

組み立てしやすい様にスルーホール型部品のみ使用しています(1つだけ表面実装部品がありますが、DIP 化済みモジュールを使用する事で、表面実装の作業を回避しています)。ただ、その代償として、基板が巨大化してしまいました。

 

真上から見た場合、左側が North Board、右側が South Board になります。写真に見える電流計は動作確認用で、製品版ではポリスイッチになります。

上下にスタックさせると約半分の占有面積になりますが、当然ながら North Board の方は隠れてしまい、一部機能が操作不能になってしまいます。

 

Video Sub-System を持っていますので、白黒のみですが、TV モニター(RCA 端子接続)に文字(日本語や欧米諸国語)や画像を表示させる事も可能です。解像度は 320 * 200 になります。


※ TV モニターと RCA ケーブルは付属しておりませんので、別途、ご用意して頂く必要があります。

 

ALL SRAM モードの場合、電源ON 直後はプログラムがありませんので、毎回、パソコンから Arduino 経由でプログラム(TD16HEXファイル)を転送する必要があります。Arduino に専用シールド(TD16-XC/FW シールド)を取り付け、2x5 のすだれケーブルで TD16 の Ex.Ctl 端子に接続し、プログラム転送させます。
一方、Flash ROMモードの場合は、Flash ROM 内のプログラムが動作します(パソコンから転送する必要はありません)。事前に TD16-XC/FW シールドで Flash ROM にプログラムを書き込んでおき、それを TD16 本体の ZIF ソケットに装着させます。


※ 2x5 すだれケーブルは付属していますが、Arduino と、パソコン⇔Arduino を繋ぐ USB ケーブルは付属しておりませんので、別途、ご用意して頂く必要があります。

 

※ 以下のサムネイルをクリックすると、動画が表示されます。(Drupal 初めてで動画の貼り付け方(埋め込み方)が分からなかったので苦肉の策として、こうしています)

2枚の基板の配置方法は、前後配置、または、上下スタック配置の2種類が可能です。上下スタック配置は省スペースですが、一部の機能が操作不可能になります。

システム・クロック(SYSCK)を切り替えると、7seg と Matrix LED の表示スピードが変化する動画です。32768 Hz の時はチラつきますが、周波数が上がるとチラつきは消えます。

システム・クロック(SYSCK)は、1 / 32768 / 250k / 500k / 1M / 2M / 4M / 8M Hz、及び、手動クロックから選ぶ事ができます。手動クロックは1パルスごとに停止させられますので、TD16 の挙動を理解する際に、非常に役立つ事でしょう。

ALL SRAM モードの場合、電源ON 直後はプログラムがありませんので、パソコンから Arduino 経由でプログラム(TD16HEXファイル)を転送する必要があります。一方、Flash ROMモードの場合は、ROM 内のプログラムが動作しますので、一々、パソコンから転送する必要はありません(ただし事前に付属の Flash ROM Writer でプログラムを書き込んでおく必要があります)。

Arduino Playground の TVout ライブラリを応用した Video Sub-System を持っていますので、文字や画像を表示させる事も可能です。

簡易割込み機能もあります。長文表示中に Timer 割込みで時刻を表示させたり、手動割込みスイッチによる TD16 Monitor プログラムへの遷移の例です。

基本的に AC アダプタからの電力供給ですが、一応、乾電池(006P)からの電力供給も可能です。ただし単純計算で約1時間程度しかもちませんので、気休め程度と考えて下さい。

 


こちらは DIP 型 IC 50個のみの基本構成時の写真です。(標準ロジックIC×44個、Flash ROM×4個、SRAM×1 個、発振器 (RTC) ×1個で計50個。フォトカプラ×4個まで入れると計54個)

基板自体は同じ物ですが、必要最小限の部品だけを搭載して、CPU として正しく動作できるかを確認する為の試作品です。駆動周波数は 32768 Hz 固定になります。

※ 以下のサムネイルをクリックすると、動画が表示されます。

これだけでキチンと動作します。(ただ、基本構成だとキャラ LCD しか付いて無いので、やや面白味に欠けますが)
 

 


TD16 の仕様

CPU の名称 TD16 ※「とっても動作するんだぜ!16bit CPU」の略
CPU の種類 なんちゃって 16bit CPU (CISC型) 共通バスは 8bit 幅なので、厳密には 8bit CPU。なので「なんちゃって」をつけています。
基本レジスタ群 R1~R15, SP, PC, FLG (S/V/Z/C)
※R1~R15, SP の 16本は DS の一部を使用。
FLG 以外は 16bit長、
FLG のみ 4bit長
拡張レジスタ群 ER0~ER15 一部の命令のみで限定的に使用。
基本レジスタ群のような自由度は無い。
割込み用レジスタ群 R8'~R15', ER8'~ER15', IPC, IFLG 裏レジスタ。ノーマルモード用レジスタ群と入れ替わるので、スタックへの退避・復帰は不要。
浮動小数点用レジスタ群 FPX, FP1~FP14 単精度のみ。※ 検証不完全
メモリ空間 コード    領域(CS) = 64kW
割込み用コード領域(ICS)= 64kW
データ    領域(DS) = 64kW
拡張データ  領域(ES) = 64kW
          合計:256kW
1ワードは 16bit長
(セグメント値は固定なので x86 の様な自由度は無い)
命令数 約1000命令(命令ニーモニック数は約213個)  
演算能力 16bit 整数、及び、単精度浮動小数点(IEEE 754 準拠)※検証不完全  
命令の実装方法 マイクロ・プログラム方式(コントロール・ストア=512kB FlashROM×2個)  
ALU の実装方法 ROM テーブル参照方式(512kB FlashROM×2個)  
駆動クロック 基本構成時:32768 Hz固定
拡張構成時:1 / 32768 / 250k / 500k / 1M / 2M / 4M / 8M Hz、または、手動クロック (ただし4MHz 以上は Overclockモードで、外部制御不可)
 
処理性能 16bit 加算の ADD  reg, DS[reg] が152clk 消費するので、基本構成の 32768 Hz 時なら約215 IPS、拡張構成の 8MHz 時なら約52631 IPS ≒ 0.05 MIPS。
参考:Zilog Z80(2.5MHz)は約0.3571 MIPS(ただし8bit 加算)。
 
基本機能 Halt 機能、SingleStep 機能、外部制御、キャラLCD×1、JoyPad (MSX 仕様) または押しボタン×6(上/下/左/右/A/B)、2極 DIPSW×1  
拡張機能 駆動クロック変更、簡易割込み機能、Reg.View機能 (16x16 Matrix LED) 、7seg.View機能 (8桁) 、PC比較機能 (一致時にSystem Idling)、なんちゃってPWM機能 (2点) 、なんちゃってSPI機能、マイクロ型なMMC互換メモリカード、なんちゃってi2c機能、RTC (CR2032によるバックアップ有り) 、K/B制御機能 (PS/2タイプのみ) 、Video Sub-System (解像度320×200×白黒のみ、簡易サウンド、日本語表示40桁×16行)  
簡易割込み機能 手動SW割込み、Timer(1 / 0.25 / 0.0625秒)割込み、V-Blank割込み、K/B割込み、の4つ(優先順位は無し。多重割り込みは不可)
※ただし、本機の処理能力的にV-Blank割り込みは無茶かもしれない。
 
Video Sub-System 機能 Arduino Playground の TVout ライブラリを改変して作成
Atmel AVR ATmega1284 @ 20MHz
解像度:320×200×白黒のみ
仮想画面:320×256×白黒のみ ※Y軸のみ H/Wスクロール可能
映像出力:NTSC コンポジット信号、RCA 端子(黄)
サウンド出力:単音、モノラル、RCA 端子(白)
内蔵フォント:美咲フォント系の k8x12 フォント、および、美咲フォントの極一部
文字コード:UTF-16 のみ ※シフトJIS には対応していません
日本語表示:40桁×16行
描画機能:点、線、円、矩形、bitmap
※ 表示の品質は TV モニターに左右されます。

ISO/IEC 8859-1 文字の一部は、k8x12 フォントを改変して自作した(例:A → Ä)
寸法 前後配置時:幅300×奥行き600×高さ約45 mm
スタック時:幅300×奥行き300×高さ約75 mm
若干、はみ出している箇所あり。
電源 外部供給DC12V、または乾電池006P (DC9V) から DC5V を生成
 基本構成時:消費電流=実測約0.15A @5V
 拡張構成時:消費電流=実測約0.40A @5V
※ 006P は気休めですが…
添付品 2x25リボンケーブル(N/B と S/B の接続用)×2本
ACアダプタ(DC12V1A)×1個
冷却ファンと金具 ×1set
Arduino 用シールド(TD16-XC/FW シールド、要組み立て)×1set
2x5リボンケーブル(TD16-XC/FW シールドと TD16 本体の接続用)×1本
Arduino 本体は添付してません。
その他 プログラム転送時のみ、パソコンとArduinoが必要になります。
プログラム転送が済んだ後は、スタンド・アローンで動作できます。
 

 

以下は本機には添付されていませんので、別途ご用意いただく必要のある部材です(特に上の3つは必須になります)。

TD16 を動作させる為に別途、必要になる部材
Windows パソコン(必須) ソースコードのアセンブル、FlashROM への書き込み、および、生成したバイナリを TD16 本体への転送する際に必要になります。 現在、Windows 7 でのみ動作確認。
Arduino(Vio=5V 仕様)
(必須)
FlashROM への書き込み、および、生成したバイナリを TD16 本体への転送する際に必要になります。 使用している FlashROM が 5V 仕様の為、Arduino の I/O 電圧(Vio)も 5V 仕様になっている必要があります。例えば、Arduino Uno や Arduino Leonardo が Vio=5V 仕様です。
USB ケーブル(必須) Windows パソコンと Arduino を接続する際に必要になります。  
TV モニター(RCA 端子のみ) Video Sub-System で表示させる際に必要になります。 NTSC コンポジット映像です(PAL には未対応)。
RCA ケーブル(できれば2本) Video Sub-System で表示させる際に必要になります。 1本はコンポジット映像用、もう1本は音声(モノラル)用です。音声の方は無くても、映像には影響ありません。
MSX 仕様 JoyPad 簡易な入力用です。
※ North Board 上のタクト SW でも同じ操作ができますので、必須ではありません。ただ、JoyPad の方が操作性が遥かに上です。
D-Sub 9ピンコネクタに接続します。
(USB ではありません)
PS/2 仕様 日本語キーボード アルファベットや数字・記号、カタカナの入力用です(漢字入力は流石に無理です)。
PS/2 仕様の日本語 106/109 キーボードのみの対応です。
ミニ DIN 6ピンコネクタに接続します。
(USB ではありません)
micro サイズな MMC 互換メモリカード FAT16 / FAT32 に対応予定です(現時点では動作未確認です)。 ライセンスの関係で「MMC 互換メモリカード」と表記せざるをえませんw
006P 乾電池(DC9V) TD16 を電池駆動させる際に必要になります。
(ただし、長時間の電池駆動は現実的ではありません)
そこいらで入手できる物で OK です。
CR2032 ボタン電池(DC3V) RTC のカレンダー保持用です。
(無い場合は電源 ON/OFF するたびに、カレンダーがリセットされてしまいます。現在時刻が分からなくなるだけで、TD16 本体の動作自体には影響ありません)
そこいらで入手できる物で OK です。

 

上記の通り、NTSC コンポジット映像による表示ですので、デジタル映像とは違って、ややぼやけてしまいますが、それなりに見える映像だと思います。下記画像にもありますが、Arduino Playground にある TVout ライブラリを応用した表示システムになっています。また、門真なむ氏作成の美咲フォント系 k8x12 フォントを内蔵していますので、TD16 から文字コード(UTF-16)を送るだけで日本語の表示が可能です。ただし表示できるのは JIS X 0208 規格文字と ISO/IEC 8859-1 文字のみになります。

 

基本構成の Block 図です。

 

こちらは拡張構成の Block 図です。基本構成にオプション機能を追加した形になります。

 

以下は 2019/5/4~5 に開催された Maker Faire Kyoto 2019 にて配布しましたパンフや、資料です。

以下は 2019/7/20~21 に開催された メーカーズ・バザール大阪 2019 にて配布しましたパンフや、資料です。

 

以下は仕様書です。暫定版ですので、製品版までに仕様変更になる可能性があります。

  • TD16RM1機械語命令リスト(ABC順) (190525版).pdf  ※リスト上では 1084 とありますが、同一命令の別名が約 28 ありますので、実数は 1056 位になります。さらに同一オペレーション名のオペランド違いの命令が大量にあります。

 

 

製品カテゴリー