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)

  1. 参考文献

    マイクロプロセッサの設計記事(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個マイクロプログラム方式 
    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号機の仕様【暫定版】

    1. ブロック図


    2. SVP IPLの案


    3. メモリ・マップ


    4. 内部バス・サイクル原案


  3. 1号機の仕様(4ビット・マイコン)【暫定版】

    1. 仕様
      • 命令アドレス空間
        • プログラム・カウンタ(PC): 8ビット(256ワード)
        • 命令長: 12ビット
        • 命令専用
      • レジスタ
        • 4ビット幅
        • Wレジスタ
        • 汎用: 4または5本【検討中】
        • DOレジスタ: 2本
        • DIレジスタ: 2本
      • フラグ
        • Cフラグ
        • Zフラグ
        • Nフラグ

    2. ブロック図

    3. ブロック別機能
      • プログラム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レジスタ
        本プロセッサの外から取り込むデータが格納される。

    4. ALU
      • 4ビット
      • 命令
        ニーモニック機能
        000addc加算(Cy付)
        001subc減算(Cy付)
        010andビット毎の論理積
        011orビット毎の論理和
        100xorビット毎の排他的論理和
        101rotr右ローテート
        110shra右算術シフト
        111shrl右論理シフト

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

    5. 命令形式
      • ジャンプ命令
        11109876543210
        0CONDアドレス

      • 演算命令
        11109876543210
        100B-INFUNCdREG

      • 数値ロード命令
        11109876543210
        101<予約>IMM<予約>REG

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

      • REG (レジスタ指定)
        ニーモニック機能
        000WWレジスタ
        001GR1汎用レジスタ1
        010GR2汎用レジスタ2
        011GR3汎用レジスタ3
        100GR4汎用レジスタ4
        101GR5汎用レジスタ5【検討中】
        110PI0/PO0PIレジスタ0(ソース時)/POレジスタ0(ディスティネーション時)
        111PI1/PO1PIレジスタ1(ソース時)/POレジスタ1(ディスティネーション時)

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

      • BIN (ALUのB入力の出し元)
        入力元
        00入力元は即値(IMM)
        01入力はCyビット(000Cy)
        10入力は固定値(0001)
        11入力元はWレジスタ

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

    6. 入出力
    7. 動作概要
      (1)PCの値をROMのアドレスに入力する。
      (2)ROMのアドレスに格納されたデータ(命令)を命令デコーダに入力する。
      (3)命令をデコードして、制御信号を生成する。
      (4)命令を実行する。
      • (4.1)ロード命令のとき
        もし、フラグの内容がCONDの条件が成立していたならば、命令のIMMの内容をPCに格納する。
        フラグの内容がCONDの条件が成立していないならば、何もしない。
      • (4.2)演算命令のとき
        <4.2.1>ALUのA入力にWレジスタの内容を入力する。
        <4.2.2>ALUのB入力に、命令のREGで指定されたレジスタの内容を入力する。
        <4.2.3>ALUの演算種別としてに命令語のFUNCを入力する。
        <4.2.4>ALUの演算結果を、もしD=0ならWレジスタに、D=1ならREGで指定されたレジスタに格納する。
        <4.2.5>同時に、ALUの演算結果からフラグの内容を更新する。
      • (4.3)分岐命令のとき
        命令のCOND部分の条件が、フラグフラグの内容がCONDの条件が成立していたならば、
        命令のIMMの内容をPCに格納する。
        フラグの内容がCONDの条件が成立していないならば、何もしない。
      (5)プログラム・カウンタ(PC)の内容を更新する。

    8. 詳細設計
      • プログラムROM
      • プログラム・カウンタ(PC)
      • ALU
      • 制御信号生成

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

  4. 2号機の仕様(PICマイコン・サブセット)

    1. ALU
      • 命令一覧【検討中】

    2. プログラムカウンタ
      • 11bit

  5. 3号機の仕様(マイクロ・プログラム方式)

    1. 仮想機械をリアルに実行するマシン
    2. 開発手順
      • 仮想機械の仕様決定
      • 仮想機械をC言語等で記述。動作確認。
      • 仮想機械をマイクロ・プログラムで記述。
      • マイクロ・プログラムをリアルに実行するハードの設計・製作。
      • 実機にてマイクロ・プログラムの動作確認。

  6. サービス・プロセッサ(SVP)

    1. ブロック図   (2009/01/01)


    2. メモリ・マップ   (2009/10/18)


    3. 内部バス・サイクル原案   (2009/10/18)




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


Copyright (C)2005,2006,2007,2008,2009,2012 Masahiro.Matsuda(JH8CHU), all rights reserved.