aki_iic’s blog

己の欲せざる処人に施す事無かれ、狂人の真似するは即ち狂人なり

基板組立(その1)

 先月の基板の続きと言えるかどうか・・・

aki-iic.hatenablog.com

 今回は1.のm68008_v0(仮称)に関するものです。

https://www.nxp.com/docs/en/reference-manual/MC68000UM.pdf

資料は下記を参照下さい(すみませんが作成中につき、誤記等の可能性があります)。

drive.google.com

 以下、同資料から抜粋させて頂きます。

1.基本的な考え方

m68008_v0 基本的な考え方(抜粋)

2.ブロック図

m68008_v0 ブロック図

3.マップ

m68008_v0 マップ(抜粋)

4.回路図

m68008_v0 回路図

5.パタン図(全レイヤ合成)

m68008_v0 パタン図(全レイヤ合成)

6.実装ボード(実物)

m68008_v0 実装ボード

 左上がMC68008FN10(PLCC52)、右上がPSD834F2J90(PLCC52)、左中が4MbitSRAM、左下が16C550(PLCC44)、右下がAE-FT245RL(秋月)です。

 パッケージ替えのバージョンでよく見られる様にMC68008でもDIP(L/Psuffix)とPLCC(FNsuffixx)ではアドレス線(68008Pがa0-19の20bitに対して68008FNはa0-21の22bit、つまり4MBのアドレス空間を有し、本機ではそれをを利用しています(1MBに収められない訳でも無かったのですが何となく・・・不人気故かオークションでもFNでも安かったのでつい:)恥ずかしながら68008にPLCCバージョンが存在する事をretroマイコンのサイトを探検して知りました(あはは)。

 オーソドックスな構成と思うので説明は省略しますが、ちょっと驚いたのは68008が結構熱い(CMOSでないのであたりまえ)点でボードの消費電流が0.32A(=1.6W)で大半はCPUで消費している様です(ちなみにhc11f_v1では0.05A(=0.25W)。そういえば1980年代にMC68000L10(10MhzセラミックPKG)も結構熱かったような記憶が・・・)

 あと開発ツールに関してはhc11f_v1と同じなので割愛させて頂きます(手抜きですみません)。ISP(In System Program)でPLDもFlashROMもPCから(VMWareのXPゲストOS経由で:)ISP出来るので所謂コタツデバッグ(懐かし)が出来るので大変具合が良いのでありました(とまたさりげなくステマ:)。

aki-iic.hatenablog.com

 

7.dba(m68008_v0用)

 AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 1 - 2025年11月05日 10時25分16秒


    1/       0 :                        ; 20250412 : bra * が動くようになる。原因はberr_n or lvl7の未処理(berrタイマーのPIC12F1501未実装、lvl7はpsdの/irq_en未接続)
    2/       0 :                        ; 20250509 : t3aをベースにcmd対応。t3と非互換
    3/       0 :                        ; 20250511 : i-chcheをonにする(CACR.IE(bit0)=on)。
    4/       0 :                        ; 20250512 : dumpルーチンでdump0に戻してなかった。
    5/       0 :                        ; 20251105 : m68008_v0に移植
    6/       0 :                        ;          : csiop : $23ff00-23ffff, rs0 : $230000-231fff(8k), fs0 : $000000-03ffff(256k)
    7/       0 :                        ;          : pb7 : $23ff05, ramtop : $230000, rambtm : $231ffe
    8/       0 :                        ;
    9/       0 :                        
   10/       0 :                            cpu    68000
   11/       0 :                            supmode    on        ; assumed supervisor mode
   12/       0 :                        
   13/       0 :                            org    0
   14/       0 :                        
   15/       0 : =$231FFE               STACK    equ    $00231ffe    ; SSP
   16/       0 :                        
   17/       0 : =$230000               ramtop    equ    $00230000    ; 0x00230000 - 0x00231fff (8K)
   18/       0 : =$231000               rambtm    equ    ramtop+$1000    ; 4KB
   19/       0 : =$23FF00               csiop    equ    $0023ff00    ; csiop
   20/       0 : =$23FF05               pb7    equ    csiop+5        ; psd portb7
   21/       0 : =$23FF01               pbin    equ    csiop+1
   22/       0 : =$200000               ft245    equ    $200000        ; ft245 (byte access)
   23/       0 :                            
   24/       0 : 0023 1FFE                  dc.l    STACK    
   25/       4 : 0000 0008                  dc.l    initstart
   26/       8 :                        
   27/       8 :                        ; 初期化(単なる待ち)中はpb7点灯、その後滅灯
   28/       8 :                        initstart:
   29/       8 : 13FC 0000 0023 FF05        move.b    #$00,pb7    ; pb7 = 0(on)
   30/      10 : 203C 0001 0000             move.l    #$10000,d0
   31/      16 : 90BC 0000 0001         dly0    sub.l    #1,d0
   32/      1C : 66F8                       bne    dly0
   33/      1E : 13FC 0080 0023 FF05        move.b    #$80,pb7    ; pb7 = 1(off)
   34/      26 :                        
   35/      26 :                        ; cmd 待ち
   36/      26 :                        cmd:
   37/      26 : 13FC 0080 0023 FF05        move.b    #$80,pb7    ; pb7 led off
   38/      2E : 6100 00BC                  bsr    pbin0    ; 戻り値はd2.b
   39/      32 : 13FC 0000 0023 FF05        move.b    #$00,pb7    ; pb7 led on
   40/      3A : B43C 00D1                  cmp.b    #$d1,d2    ; memory dump?
   41/      3E : 6604                       bne    cmd1
   42/      40 : 613C                       bsr    memc
   43/      42 : 60E2                       bra    cmd
   44/      44 : B43C 00D2              cmd1    cmp.b    #$d2,d2    ; go ?
   45/      48 : 6604                       bne    cmd2
   46/      4A : 613A                       bsr    go
   47/      4C : 60D8                       bra    cmd
   48/      4E : B43C 00D3              cmd2    cmp.b    #$d3,d2    ; memory write?
   49/      52 : 6602                       bne    cmd3
   50/      54 : 610A                       bsr    memw
   51/      56 : B43C 00D0              cmd3    cmp.b    #$d0,d2 ; target id?
   52/      5A : 6602                       bne    cmd4
   53/      5C : 6144                       bsr    id
   54/      5E :                        cmd4:
   55/      5E : 60C6                       bra    cmd
   56/      60 :                        
   57/      60 :                        ; memory write cmd execution
   58/      60 :                        ;  cmd(0xd3),adrs(4byte),length(4byte),data(length(data))
   59/      60 :                        ;  exsample : 0xd3,0x00040000,0x00000001,0x5a
   60/      60 :                        memw:
  AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 2 - 2025年11月05日 10時25分16秒


   61/      60 : 616E                       bsr    adrin        ; a1
   62/      62 : 2449                       move.l    a1,a2        ; adrs = a2
   63/      64 : 616A                       bsr    adrin        ; a1
   64/      66 : 2A09                       move.l    a1,d5        ; length = d5
   65/      68 : 6100 0082              memw0    bsr    pbin0        ; d2.b
   66/      6C : 1482                       move.b    d2,(a2)
   67/      6E : D5FC 0000 0001             add.l    #1,a2
   68/      74 : 9ABC 0000 0001             sub.l    #1,d5
   69/      7A : 66EC                       bne    memw0
   70/      7C : 4E75                       rts
   71/      7E :                            
   72/      7E :                        ; memory dump cmd execution
   73/      7E :                        memc:
   74/      7E : 6150                       bsr    adrin
   75/      80 : 6100 0084                  bsr    dump
   76/      84 : 4E75                       rts
   77/      86 :                        
   78/      86 :                        ; go cmd execution
   79/      86 :                        ; サブルーチン(関数)として呼び出す。
   80/      86 :                        go:
   81/      86 : 6148                       bsr    adrin        ; a1
   82/      88 : 4E91                       jsr    (a1)        ; サブルーチンとして呼び出し
   83/      8A : 4E75                       rts
   84/      8C :                        ; 戻ってきたら常に00で返す
   85/      8C : 1039 0023 FF01         go0    move.b    pbin,d0        ; ft245 txe待ち
   86/      92 : C03C 0010                  and.b    #$10,d0
   87/      96 : 66F4                       bne    go0
   88/      98 : 13FC 0000 0020 0000        move.b    #$00,ft245    ; 常に正常終了(00)
   89/      A0 : 4E75                       rts
   90/      A2 :                        
   91/      A2 :                        ; ターゲット識別情報を通知
   92/      A2 : 227C 0000 012E         id    move.l    #tgt_id,a1    ; ターゲット情報(30バイト固定)
   93/      A8 : 283C 0000 001E             move.l    #30,d4
   94/      AE : 1039 0023 FF01         id0    move.b    pbin,d0
   95/      B4 : C03C 0010                  and.b    #$10,d0
   96/      B8 : 66F4                       bne    id0
   97/      BA : 13D1 0020 0000             move.b    (a1),ft245
   98/      C0 : D3FC 0000 0001             add.l    #1,a1
   99/      C6 : 98BC 0000 0001             sub.l    #1,d4
  100/      CC : 66E0                       bne    id0
  101/      CE : 4E75                       rts
  102/      D0 :                        
  103/      D0 : 4280                   adrin    clr.l    d0
  104/      D2 : 6118                       bsr    pbin0
  105/      D4 : 8082                       or.l    d2,d0
  106/      D6 : 6114                       bsr    pbin0
  107/      D8 : E188                       lsl.l    #8,d0
  108/      DA : 8082                       or.l    d2,d0
  109/      DC : 610E                       bsr    pbin0
  110/      DE : E188                       lsl.l    #8,d0
  111/      E0 : 8082                       or.l    d2,d0
  112/      E2 : 6108                       bsr    pbin0
  113/      E4 : E188                       lsl.l    #8,d0
  114/      E6 : 8082                       or.l    d2,d0
  115/      E8 : 2240                       move.l    d0,a1
  116/      EA : 4E75                       rts
  117/      EC :                            
  118/      EC : 1239 0023 FF01         pbin0    move.b    pbin,d1
  119/      F2 : C23C 0020                  and.b    #$20,d1
  120/      F6 : 66F4                       bne    pbin0
  AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 3 - 2025年11月05日 10時25分16秒


  121/      F8 : 1439 0020 0000             move.b    ft245,d2
  122/      FE : C4BC 0000 00FF             and.l    #$ff,d2
  123/     104 : 4E75                       rts
  124/     106 :                        
  125/     106 : 283C 0000 0100         dump    move.l    #256,d4
  126/     10C : 1039 0023 FF01         dump0    move.b    pbin,d0
  127/     112 : C03C 0010                  and.b    #$10,d0
  128/     116 : 66F4                       bne    dump0
  129/     118 : 13D1 0020 0000             move.b    (a1),ft245
  130/     11E : D3FC 0000 0001             add.l    #1,a1
  131/     124 : 98BC 0000 0001             sub.l    #1,d4
  132/     12A : 66E0                       bne    dump0
  133/     12C : 4E75                       rts
  134/     12E :                        
  135/     12E :                        ; ターゲット識別情報(単なる文字列、30文字固定)
  136/     12E :                        ;                123456789012345678901234567890
  137/     12E : 6D36 3830 3038 5F76    tgt_id    dc.b    'm68008_v0:20251105E00a        '
           136 : 303A 3230 3235 3131
           13E : 3035 4530 3061 2020
           146 : 2020 2020 2020      
  138/     14C :                        
  139/     14C :                        
  140/     14C :                            end
  AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 4 - 2025年11月05日 10時25分16秒


  Symbol Table (* = unused):
  --------------------------

 ADRIN :                         D0 C |
*ARCHITECTURE :                                      "x86_64-unknown-linux" - |
*CASESENSITIVE :                  0 - |  CMD :                           26 C |
 CMD1 :                          44 C |  CMD2 :                          4E C |
 CMD3 :                          56 C |  CMD4 :                          5E C |
*CONSTPI :        3.141592653589793 - |  CSIOP :                     23FF00 - |
*DATE :             "2025\-027\-071\-07611\-026\-100\-12005\-026\-105\-091" - |
 DLY0 :                          16 C |  DUMP :                         106 C |
 DUMP0 :                        10C C | *FALSE :                          0 - |
 FT245 :                     200000 - | *FULLPMMU :                       1 - |
 GO :                            86 C |  GO0 :                           8C C |
*HAS64 :                          1 - | *HASFPU :                         0 - |
*HASPMMU :                        0 - |  ID :                            A2 C |
 ID0 :                           AE C |  INITSTART :                      8 C |
*INSUPMODE :                      1 - | *LISTON :                         1 - |
*MACEXP :                         7 - |  MEMC :                          7E C |
 MEMW :                          60 C |  MEMW0 :                         68 C |
*MOMCPU :                     68000 - | *MOMCPUNAME :               "68000" - |
*NESTMAX :                      100 - | *PADDING :                        1 - |
 PB7 :                       23FF05 - |  PBIN :                      23FF01 - |
 PBIN0 :                         EC C | *RAMBTM :                    231000 - |
 RAMTOP :                    230000 - | *RELAXED :                        0 - |
 STACK :                     231FFE - |  TGT_ID :                       12E C |
*TIME :               "10\-026\-103\-12625\-027\-120\-12216\-025\-089\-110" - |
*TRUE :                           1 - | *VERSION :                     142F - |

     46 symbols
     21 unused symbols

  AS V1.42 Beta [Bld 270] - Source File m08k_t3.asm - Page 5 - 2025年11月05日 10時25分16秒


  Code Pages:
  ----------

STANDARD (0 changed characters)

1 code page

0.08 seconds assembly time

    142 lines source file
      4 passes
      0 errors
      0 warnings

8.retro μP tool画面

retro μP tool画面(target : m68008_v0)

 ターゲット名がm68008_v0になっただけで感動に薄いのですがホスト側のpython(tkeasygui)ツールを使いまわしているので楽で良いです(個人的には)。

m68008_v0 メモリテスト

9.PLD論理式(抜粋)

========= Equations =========
DPLD
EQUATIONS :
=======================
fs0 = !pdn & !a16 & !a15 & !a21 & !a20 & !a17;
fs1 = !pdn & !a16 & a15 & !a21 & !a20 & !a17;
fs2 = !pdn & a16 & !a15 & !a21 & !a20 & !a17;fs3 = !pdn & a16 & a15 & !a21 & !a20 & !a17;
fs4 = !pdn & !a16 & !a15 & !a21 & !a20 & a17;
fs5 = !pdn & !a16 & a15 & !a21 & !a20 & a17;
fs6 = !pdn & a16 & !a15 & !a21 & !a20 & a17;
fs7 = !pdn & a16 & a15 & !a21 & !a20 & a17;
7;
csiop = !pdn & a16 & a15 & a14 & a13 & a12 & a11 & a10 & a9 & a8 & a21 & !a20 & a1
rs0 = !pdn & a16 & !a15 & !a14 & !a13 & !a12 & a21 & !a20 & a17;
PORTA
EQUATIONS :
=======================
PORTB
EQUATIONS :
=======================
!nCF = a16 & !_as & !a15 & !a14 & !a13 & a12 & a21 & !a20 & !a17;
nCF.OE = _reset;
!nIORQ = !a16 & !_as & a21 & !a20 & a17;
nIORQ.OE = _reset;
!nCS16550 = a16 & !_as & !a15 & !a14 & !a13 & !a12 & a21 & !a20 & !a17;
nCS16550.OE = _reset;
!nWR = !_as & !r_w;
nWR.OE = _reset;
nWR.LE = 1;
pb7.OE = _reset;
PORTC
EQUATIONS :
=======================
!nFT245RD = !a16 & !nRD.PIN & a21 & !a20 & !a17;
nFT245RD.OE = _reset;
FT245WR = !a16 & a21 & !a20 & !a17 & !nWR.PIN;
FT245WR.OE = _reset;
!nRAM = !_as & !a21 & a20;
nRAM.OE = _reset;
!nRD = !_as & r_w;
nRD.OE = _reset;
nRD.LE = 1;

10.まとめ

 ・m68008_v0(仮称)を組立て、動作を確認しました。バグは16c550のcs0,cs1をLにスタックしている為、要改造(しょんぼり)。FT245で開発は出来るので後程(2層なので改造は可能)。

 ・dba(debug agent の略のつもり:)はm68030_v0のそれをベースに修正。転がせるベースが有ると楽で良いです:)

 ・SBCと言いながらIOに乏しいのでブレークアウトボード的なポジションで終了かもしれません。チップが熱いのもアレなのでMC68HC001を8bit modeで組むと宜しいのかもしれません(結構、オークションでは高いのですが)。