pdp11 on-fpga

21
FPGA で動かす PDP-11 互換プロセッ サ Lions commentary on unix 読書会 2011 秋合宿

Upload: magoroku-yamamoto

Post on 31-May-2015

3.045 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Pdp11 on-fpga

FPGAで動かすPDP­11  互換プロセッサ

Lions commentary on unix 読書会 2011秋合宿

Page 2: Pdp11 on-fpga

PDP­11

DECが開発販売していたミニコン 16bitで数 100Kbyteから数Mbyte程度のメモリ 当時のメインフレームに比較して安価

命令セッ トが高級言語向けでエンジニアに好まれた

UNIXの開発プラッ ト フォームとして有名 てな話をまわりにしても、「無反応」なので、芦ノ湖畔の秘密結社の集会に持ち込む事にした

Page 3: Pdp11 on-fpga

FPGAで PDP­11 が動く ?

某コミュニティの飲み会で@himamura さんと飲んだときに同席した青年が、 東海大学出身で学生時代で学生時代に FPGAで動く PDP­11を作っていた!!

調べてみると東海大学清水研の pop­11が見つかる

Page 4: Pdp11 on-fpga

POP­11

http://labo.nshimizu.com/pop11.html PARTHENON SFL 言語で記述

Design Wave Magazine 2003 Julyに解説記事あり 論理設計の素人がいきなり SFL と言われても、資料も少ないし

断念

Page 5: Pdp11 on-fpga

w11 

もんもんと調べてみるとフリー IPを公開しているOpenCoresに w11見つけた

今日の集会でははこの w11の入手、 動作させるために機材、手順をまとめる

Page 6: Pdp11 on-fpga

OpenCores にアカウント を作る

OpenCores.orgはフリーな IPを集めたサイト アカウントを作ってログインしたら

http://opencores.org/project,w11 へ

Page 7: Pdp11 on-fpga

w11 の動作環境

FPGAボード Digilent S3BOARD または Digilent Nexys2  今回は S3BOARDを利用

Programmer Bitstreamを書き込むだけなら安価な USBプログラマで可

今回は JTAG­SPI Full Speedを利用

USB­シリアル FTDIコントローラを推奨を使ったもの

Page 8: Pdp11 on-fpga

開発環境の準備

Xilinx ISE WebPackのダウンロード Programmerのインストール その他以下を Ubuntuにインストール

fxload  libusb­dev ghdl  

tcl8.4­dev libboost­all­dev

Page 9: Pdp11 on-fpga

Xilinx ISE WebPack のダウンロード

論理合成ツールXilinx ISE WebPack WebPackはライセンス無料

http://www.xilinx.com/products/design­tools/ise­design­suite/ise­webpack.htm

Xilinxにアカウント を作成後 以下から Full Installer for Linuxダウンロード

今回は version 13.2を利用 http://www.xilinx.com/support/download/index.htm 

Page 10: Pdp11 on-fpga

Xilinx ISE WebPack のインストール

IDEのアーカイブを展開したディ レクト リで sudo ./xsetup 標準の /opt以下へインストール

Select Editon to Installの画面で ISE WebPackを選択

環境設定ファ イル .bashrcの最後に以下を追加 (64bit bashの場合 ) .    /opt/Xilinx/13.2/ISE_DS/settings64.sh

Page 11: Pdp11 on-fpga

Programmer のインストール

今回は digilent社の JTAG­SPI Full Speedを利用 https://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,707&Prod=JTAG­USB­FS

他に、 次の URLの中から選択すれば S3Boardに対応しているはず

https://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,395&Cat=5

対応するツールを以下からダウンロード https://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,828&Prod=ADEPT2

手順にしたがってインストール

Page 12: Pdp11 on-fpga

W11の論理合成

OpenCoreから w11をダウンロード http://opencores.org/project,w11,installation 

今回は w11a_V0.531    2011­09­12  rev 12 を使用 $ mkdir $HOME/w11a

$ cd  $HOME/w11a

$ svn co http://opencores.org/ocsvn/w11/w11/trunk

環境変数を設定 $  export RETROBASE=$HOME/w11a

$  export PATH=$PATH:$RETROBASE/tools/bin

$  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$RETROBASE/tools/lib

RETOROBASEがプロジェクトのベースデレクト リ

Page 13: Pdp11 on-fpga

手順の概略

1.ライブラリの調整

2.テストベンチを構成

3.実機向け bitstreamを生成

Page 14: Pdp11 on-fpga

ライブラリの調整

cd $RETROBASE $ xilinx_ghdl_unisim $ xilinx_ghdl_simprim

Page 15: Pdp11 on-fpga

テストベンチを構成

ライブリの不整合、 64bit環境未対応などでコンパイルエラーが出ます

テキトーに修正してください

テキトーな修正でも欲しい方は@magoroku15 まで D

Page 16: Pdp11 on-fpga

実機向け bitstream を作る

bitstreamは FPGA上の構成を指示する bit列。これの bitstreamを ConfigROM(最近は Flash )に書き込んで置く と、 PON時に指定の回路が構成される

$ cd $RETROBASE/rtl/sys_gen/w11a/s3board

$ make sys_w11a_s3.bit

./sys_gen/w11a/s3board/sys_w11a_s3.bit

$RETROBASE/rtl/sys_gen/w11a/s3board/sys_w11a_s3.bit に bitstreamができる

Page 17: Pdp11 on-fpga

bitstream を FPGAに書き込む$ djtgcfg enum

Found 1 device(s)

Device: JtagUsbFs

    Product Name:   Digilent JTAG USB Full Speed

    User Name:      JtagUsbFs

    Serial Number:  210153238924

$ djtgcfg prog  ­d JtagUsbFs ­i 0 ­f \   

              $RETROBASE/rtl/sys_gen/w11a/s3board/sys_w11a_s3.bit

WARNING: startup clock for this file is 'CCLK' instead of 'JTAG CLK'.

Problems will likely occur. Associate config file with device anyway (Y or N)? [N] y

Programming device. Do not touch your board. This may take a few minutes...

Programming succeeded.

Page 18: Pdp11 on-fpga

Unix version 5 を動かす

disuksetをダウンロード $ cd $RETROBASE/rtl/sys_gen/w11a/tb

$ wget http://www­linux.gsi.de/~mueller/retro/oc_w11/data/unix_v5_rkset.tgz

$ tar xfovz unix_v5_rkset.tgz

USB­232C ケーブルをつないで $ sudo $RETROBASE/tools/bin/set_ftdi_lat USB0 1 // lat 調整

$ telnet_starter ­d DL0 &  //DLを termに接続

$ dorri ­u0,460 @uv5_boot.pcmd

Page 19: Pdp11 on-fpga

実行環境

uv5_boot.pcmd

   .mode serv11

   att TT0 8000

   reset

   att rk0 unix_v5_rk.dsk

  boot rk0

  server

dorri       $ dorri ­s3 @uv5_boot.pcmd       (for ghdl sim of tb_w11a_s3)

       $ dorri ­n2 @uv5_boot.pcmd       (for ghdl sim of tb_w11a_n2)

       $ dorri ­t      @uv5_boot.pcmd   (fpga link via /dev/ttyS0)

       $ dorri ­u0,460 @uv5_boot.pcmd  (fpga link via /dev/ttyUSB0)

Page 20: Pdp11 on-fpga

他のOS

BSD 2.11 http://www­linux.gsi.de/~mueller/retro/oc_w11/data/211bsd_rkset.tgz

W11は FPPをサポートしていないので、 パッチを適用

Version6, Version7

FPUパッチを充てて、 RK DISKのでカーネルを再構成すれば動くはず

合宿でやりたかったけど、 到達できず

お詫びに

Page 21: Pdp11 on-fpga

PDP­11 on FPGA Shoppes guide 2011年3 月購入時

Spartan­3 Starter Board(1000K) $159.00

 JTAG­USB Full Speed Module   $37.99

  Subtotal:       $196.99

Shipping (UPS International):  $63.78

  TOTAL: $260.77

USB­232変換  1400円

秋月 :通販コード  K­01798

いますぐポチッ