Skip to content

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

License

Notifications You must be signed in to change notification settings

ryomuk/TangNanoDCJ11MEM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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メモリを使う練習用に作ったものなのでとりあえず動きます程度のものです.
  • SDメモリを使ったdiskエミュレータを作成し,UNIX V1を動かそうとしています.
  • まだかなり不安定で,ちょっと修正しただけで起動しなくなるのですが,とりあえず公開することにしました.

動画

旧版

ブレッドボード版

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

PCB版 rev.1.0

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

関連情報

データシート等

bitsavers

先行事例、先駆者たち

開発環境関連

Paper Tape Software関連

UNIX関連

更新履歴

  • 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も分離.
  • 2024/6/24: unix-v1用の開発中HDLを公開(かなり不安定です)
  • 2024/6/28: tapebasicのtapeimage.datの作成方法を修正

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published