JH8CHUのホームページ>オリジナルプロセッサの製作

オリジナルプロセッサの製作


まずは手持ち文献の整理(2005/08/24)
4ビット・マイコン計画始動(2005/10/06)
4ビット・マイコン仕様追記(2006/02/03)
4ビット・マイコン仕様追記(2006/02/12)
4ビット・マイコンにブロック毎の機能説明を追記(2006/08/25)
4ビット・マイコンに入出力実験回路のブロック図掲載(2006/08/26)
4ビット・マイコン仕様変更(2007/03/31)
参考文献追加(2008/04/26)
サービス・プロセッサ(SVP)のブロック図追加(2009/01/01)
文献No.2の内容を訂正(2009/10/17)
SVPのメモリ・マップを掲載(2009/10/18)
新1号機のブロック図を掲載。(2012/09/23)
開発計画を全面見直し。(2013/02/03)

  1. 参考文献

    CPUの設計記事(2005/08/24)(2008/04/26追記)(2009/10/17訂正)
    No.記事出版社著者 仕様回路規模特徴備考
    データ
    バス幅
    命令アドレス空間
    1CPUの創りかた(2003)毎日コミュニケーション渡波郁 4 bit8bit×16ワードTTL 10個究極の最小仕様CPU 
    2雑誌 プロセッサ
    4ビットCPU(1986)
    技術評論社星野祐 4 bit4bit×4kワードTTL 96個  
    3トランジスタ技術
    SPECIAL No.48
    作れば解るCPU(1994)
    CQ出版社村田和信 8 bit64kバイトTTL 約60個マイクロプログラム
    方式
    ALUはEP-ROM
    で実現
     
    4Verilog-HDLによる
    トップダウン設計
    (1994)
    CQ出版社E.Sternheim
    他4名著
    井上、鈴木訳
    32 bit4Gバイト?HDLによる記述のみ 詳細は未読
    5雑誌 連載
    トランジスタ技術
    ASICで作る
    マイクロプロセッサ
    (1988 Feb.〜1989 Jan.)
    CQ出版社南宗宏 16 bit16bit×64kワード設計のみCOMET仕様 
    6HDLによる
    高性能ディジタル
    回路設計(2002)
    CQ出版社森岡澄夫 8 bit14bit×1kワードFLEX 10K 約700セルPIC16F84
    サブセット
     
    7雑誌
    Design Wave
    Magazin 特集
    私はこうしてCPUを
    開発した
    (1999 Nov.)
    CQ出版社栗須基弘 16 bit標準64kバイト
    最大4Gバイト
    HDLによるコア 詳細は未読(^^;
    8雑誌
    Design Wave
    Magazin 連載
    コンパクトな16ビット
    CPUを設計する
    (2003 Jul.〜 )
    CQ出版社清水尚彦
    飯田佳洋
    【調査中】【調査中】 PDP-11
    互換命令
    詳細は未読
    9作って学ぶCPU
    設計入門(2007)
    共立出版葉山清輝 8 bit32byteFLEX 10K10オリジナル
    8命令
     
    10HDLによる
    VLSI設計
    第2版(2002)
    共立出版 深山正幸
    北側章夫
    秋田純一
    鈴木正國
    8 bit32のkbyte オリジナル
    16bit長
     

  2. 1号機(TTL-FPGA互換機)【FPGA版】

    1. 開発方針
      • 後日、TTLのみで実現することを想定した論理とする。
      • マイクロ・プログラム制御方式
      • 仮想機械を実現することを想定したアーキテクチャ。
      • クロス・コンパイラ、クロス・アセンブラは使用しない。

    2. 仕様
      • マイクロ・プログラム(1バンクあたり)
        • 命令長: 16ビット
        • メモリ空間:4kワード
        • システム・バスから書き換え可能
      • レジスタ
        • データ幅:8ビット
        • レジスタ数:16本
      • ALU
        • データ幅:8bit
        • 演算機能:8通り
        • フラグ
            (1)Cフラグ
            (2)Zフラグ
            (3)Nフラグ

    3. ブロック図
      • 制御部ブロック図


      • データ部ブロック図

    4. ブロック別機能
      • プログラムROM
        本CPUにより実行される命令語(プログラム)が格納される。
        命令長は1ワードあたり、12ビットである。
        命令が格納されるROMにはワード毎に8ビットのアドレスが割付らており、
        プログラムカウンタ(PC)により指定されたアドレスに格納された命令語が
        ワード単位で読み出される。
        プログラムの変更はHDLの書き換えとFPGAの再合成により行う。
      • プログラム・カウンタ(PC)
        実行する命令が格納されたプログラムROMのアドレスを指定するためのポインタである。
        PCは8ビット長である。従って、最大28 = 256ワードのROMを指定出来る。
        通常、命令はアドレス順に実行されるため、PCはひとつの命令を実行する度毎に
        インクリメントされるが、分岐命令が実行されたときは、命令語内で指定されたアドレスに
        分岐する。すなわち、分岐するアドレスの値がプログラム・カウンタに格納される。
        リセット時は、PCは0クリアされる。従って、リセット後に最初に実行される命令は
        プログラムROMの0番地から格納されていなければならない。
      • Wレジスタ
        アキュームレータとも呼ばれる。演算を行うときに中心となるレジスタであり、
        2項演算を行うときは、必ず演算データの一方はWレジスタになければならない。
      • 汎用レジスタ
        処理するデータや制御情報を格納するレジスタであり、実行される命令語により
        使用するレジスタが指定される。
      • ALU
        データに対して演算処理をするユニットであり、実行される命令語により指定された
        レジスタより送られてきたデータに対して、命令語で指定された演算を実行する。
        実行結果に対するフラグの値も生成する。
      • フラグ
        ALUの実行結果によりCフラグ、Zフラグ、Nフラグの値を保持する。
        更新されるフラグは命令により異なる。
        フラグは条件付分岐命令の分岐条件や、フラグを参照する命令で使用される。
      • DOレジスタ
        本プロセッサの外へ出力するデータを格納する。
      • DIレジスタ
        本プロセッサの外から取り込むデータが格納される。

    5. ALU詳細仕様
      • 8ビット
      • 命令
        ニーモニック機能
        000add加算(Cy無)
        001adc加算(Cy付)
        010andビット毎の論理積
        011orビット毎の論理和
        100xorビット毎の排他的論理和
        101rotr右ローテート
        110shra右算術シフト
        111shrl右論理シフト

      • フラグ:Cフラグ、Zフラグ、Nフラグ
        • Cフラグ: 下記の条件でセットされる。命令ごとの動作は命令表参照のこと。
          (1)加算命令(add, adc)実行時キャリー(Carry)が発生した場合。
          (2)ローテート命令
          (3)シフト命令
        • Zフラグ: 演算結果が0である場合セットされる。
        • Nフラグ: 演算結果が負である場合、すなわちレジスタのMSB=1である場合セットされる。

    6. マイクロ命令形式
      • ジャンプ命令
        1514131211109876543210
        0CONDアドレス

      • 即値加算命令
        1514131211109876543210
        10dFUNC1REGIMM

      • 演算命令
        1514131211109876543210
        11dxREGFUNC2xxxxx

      • COND (ジャンプ条件)
        ニーモニック機能
        000CCarryビット=1ならジャンプ
        001NCCarryビット=0ならジャンプ
        010ZZeroビット=1ならジャンプ
        011NZZeroビット=0ならジャンプ
        100MNビット=1ならジャンプ
        101PNビット=0ならジャンプ
        110ALL無条件にジャンプ
        111IRIRレジスタの値にジャンプ【検討中】

      • REG (レジスタ指定)
        ニーモニック選択レジスタ
        0000AAレジスタ
        0001IR命令レジスタ
        0010CI/CO制御レジスタ
        0011DI/DODI/DOレジスタ
        0100GR0汎用レジスタ0
        0101GR1汎用レジスタ1
        0110GR2汎用レジスタ2
        0111GR3汎用レジスタ3
        1000BHBHレジスタ
        1001BLBLレジスタ
        1010RHRHレジスタ
        1011RLRLレジスタ
        1100SHSHレジスタ
        1101SLSLレジスタ
        1110PHPHレジスタ
        1111PLPLレジスタ

      • FUNC2 (演算指定) (フラグ⇒ ○:変化する、−:変化しない)
        ニーモニック機能CフラグZフラグNフラグ
        000add加算(Cy付)
        001adc加算(Cy無)
        010andビット毎の論理積
        011orビット毎の論理和
        100xorビット毎の排他的論理和
        101rotr右ローテート
        110shra右シフト(算術)
        111shrl右シフト(論理)

      • d (演算結果の格納先)
        機能
        0格納先はAレジスタ
        1格納先はREGによる指定レジスタ

    7. システム・バス
      • スロット構成(案)
        スロットNo.オリジナルCPU
        (TTL版)
        オリジナルCPU
        (FPGA版)
        H8マイコン版
        1DMAインタフェースDMAインタフェース(予備)
        2SVP + I2C-ROM FPGA CPU H8マイコンCPU
        +シリアル
        3TTL CPU
        4VRAM
        5キーボード(PS2) + I/O
        6Fileインタフェース(IDE)
        7LANインタフェース(10BaseT
        8予備(USB、または拡張バス etc.)
      • H8マイコンと互換性のあるバス
      • データ幅:8bit
      • アドレス空間:1Mバイト(20bit)
        ただし、オリジナルCPUとしては64kバイト(16bit)
      • メモリ・マップドI/O
      • 信号線一覧
        信号名本数機能備考
        A[19:0]20アドレス 
        D[7:0]8データ 
        AS_N1アドレス・ストローブ 
        RD_N1リード・ストローブ 
        WR_N1ライト・ストローブ 
        WAIT_N1ウェイト要求オリジナルCPUでは未使用
        BREQ_N1バス使用要求 
        BACK_N1バス使用許可 
        CS_N[7:0]8エリア選択(検討中)
        NMI_N1ノン・マスカブル割込み 
        IRQ_N[5:0]6割込み要求(本数検討中)
        GR_N1システム・リセット 
        CLK1システム・クロック 
        VCC?電源(5V) 
        GND?グランド 

    8. IPL
    9. DMAインタフェース
      • 機能
      • 実装イメージ

    10. 詳細設計
        詳細設計はこちら(工事中)

        ・論理シミュレーション

    11. テスト回路とテスト・プログラム
      • データ転送(入出力、即値)
      • ALUテスト(1桁電卓)
      • 7segment LEDダイナミック表示
      • ディジタル時計
      • LCD表示
      • シリアル・パラレル変換
      • キーボード入力(チャタリング除去)
      • パラレル・シリアル変換
      • ステッピング・モータ速度制御
      • DCモータ速度制御(PWM)
      • D/A変換
      • A/D変換(直流電圧計)
      • 仮想機械の実現プログラム

  3. 2号機(SVP)【TTL版】

  4. 3号機(TTL-FPGA互換機)【TTL版】

    1. 開発方針
      • TTLとメモリのみで実現する。(CPLD、FPGAは使用しない。)
      • ALUはAND、OR、XOR、NOTで実現する。
        (専用のICは使用しない。このため、演算速度の低下は許容する)
      • マイクロ・プログラム制御方式
      • FPGA版と同一の機械語が動作する。
      • 仮想機械を実現することを想定したアーキテクチャ。
      • クロス・コンパイラ、クロス・アセンブラは使用しない。
      • マイクロ・プログラムはSVPによりI2C-ROMよりローディングする。
      • IPLは最初DMAにより格納し、SVPによりI2C-ROMへ格納する。


JH8CHUのホームページ>オリジナルプロセッサの製作


Copyright (C)2005,2008,2009,2013 Masahiro.Matsuda(JH8CHU), all rights reserved.