Skip to content

Latest commit

 

History

History
110 lines (95 loc) · 7.31 KB

README.md

File metadata and controls

110 lines (95 loc) · 7.31 KB

TangNanoDCJ11MEM

Memory system and UART implemented on Tang Nano 20K for DEC DCJ11 PDP-11 Processor

This document is written mostly in Japanese. If necessary, please use a translation service such as DeepL (I recommend this) or Google.

概要

  • PDP-11の命令セットを持つCPU「DEC DCJ11」のメモリシステムとUARTをFPGA(TangNano20K)上に実装する試みです。信号のインターフェース部分にtangNano-5Vを使用しています。
  • FPGAに実装するのはメモリやUARTなどの周辺回路部分だけで、CPU自体は本物を使用します。ソフトウェアやFPGAによるシミュレータやエミュレータではなく、本物のCPUを動かします。
  • "TangNanoDCJ11"だとTangNano上にDCJ11を実装したみたいな名前になってしまうので、"MEM"を付けて"TangNanoDCJ11MEM"という名前になっています。
  • とりあえずベアメタルで動いています。
  • PC-11(Paper-Tape Reader/Punch)エミュレータでPaper-Tape BASICをロードして実行することができました.
  • UNIXを動かすためのディスクI/Oは現在作成中です.

ハードウェア

FPGAに実装した機能

  • Initialization Sequence時のPower-Up Configuration Register設定
  • メモリ 32K×16bit
  • UART.TangNanoのUSB経由およびGPIO経由の2系統
  • BS0, BS1は見ていません.TangNano20Kではピンが足りなかったのと,DAL[15:0]とAIO[3:0]を見ればとりあえず十分だったので.
  • DAL[21:16]も見ていません.
  • PC-11(Paper-Tape Reader/Punch)エミュレータを実装しました.(2024/5/22)

PCB rev.1.1

  • rev.1.0はいくつか修正箇所があったので修正しました.
  • CPUが白いので基板も白くしてみました.
  • CPUおよびTangNanoの電源をどこから供給するかを2箇所のジャンパで切り替えられるようにしました.詳細は回路図と基板上のシルクを見て下さい.

BOM

Reference Qty Value Size Memo
C1,C2 2 0.33uF DECのプロセッサボードで0.33uFを使っていたので。0.1uFでもいいかもしれない。
C3 1 47uF
C4,C5 2 68pF
D1 1 LED
J1 1 DC Jack 例: https://akizukidenshi.com/catalog/g/g106568/
J2 1 pin header 1x02 DC Jackからの5VをTangNanoに供給するとき用。(そのときはTangNanoのUSBは外すこと)。
J3 1 pin header 1x03 CPUへの5VをDC JackからにするかUSB(TangNano)からにするかの選択用。
J4 1 IC socket 40pin DIP 600mil TangNano5V用。1x20のpin socket 2列でも可。
J5,J6 2 pin header or socket 1x20 任意。テストや観測、実験用。
J7 1 pin header 1x06 L字 UART用
J8,J9 2 pin header or socket 1x30 任意。テストや観測、実験用。
JP1 任意。sctl_nとcont_nを切断したときにpin headerを立てる用。
R1 1 100K 値はLEDに合わせて任意。
R2~16 15 100K プルアップ、プルダウン用。10~100Kで任意。入力電流がmax10μAなので大きめで良さそう。
R17 1 1M
SW1 1 toggle SW 例: https://akizukidenshi.com/catalog/g/g100300/
SW2,SW3 2 tactile SW 6mmxH4.3mm 例: https://akizukidenshi.com/catalog/g/g103647/
U1 1 DCJ11 60pin DIP 1300mil 1x30 の丸ピンソケット2列
Y1 1 18MHz HC49 例: https://mou.sr/3WcWExh , 遅い方は2MHzとかでも動きます。周波数を変えられるようにソケットの使用をお勧めします。
  • クロス環境で作成したプログラムを実行します.
  • HDLは小規模なので,いろいろ試すベースラインに最適です.
  • 二次記憶をエミュレートするために手始めに作った習作です.
  • PC11(tape reader/pucnch)エミュレータで,tape BASICを読み込んで起動します.
  • SDメモリを使う練習用に作ったものなのでとりあえず動きます程度のものです.

UNIX V1 (開発中)

  • SDメモリを使ったdiskエミュレータを作成し,UNIX V1を動かそうとしています.

動画

旧版

ブレッドボード版

  • console ODT(Octal Debug Technique)の動作確認をするところから始めて,豊四季タイニーBASICを軽微な修正で動かせるところまで確認しました.
  • クロックは18MHzで動きました.遅い方は2MHzでも動きました.

PCB版 rev.1.0

最初に作った基板です.とりあえず動きました。

関連情報

データシート等

bitsavers

先行事例、先駆者たち

開発環境関連

Paper Tape Software関連

更新履歴

  • 2024/4/25: 初版公開
  • 2024/4/25: README修正(BOM追加)
  • 2024/5/5: 基板rev.1.1の写真追加.project更新.
  • 2024/5/5: README.md修正(開発環境関連の情報を追加)
  • 2024/5/5: samplesにasciiart を追加
  • 2024/5/22: PC-11(紙テープリーダ/パンチャ)エミュレータを実装
  • 2024/6/19: SDHCの初期化部分にバグがあったので修正
  • 2024/6/21: tapebasicのtop.vにバグがあったので修正
  • 2024/6/21: baremetalとtapebasicを別フォルダに分離.READMEも分離.