DES IC のインタフェース階層の設計


DES ICの最上位階層となる desif.v について設計を行う。



プロセッサとDES IC間の信号は以下のように定義する。
信号名 入出力 動作
CLK 入力 クロック、立上り動作
RST 入力 リセット、非同期、key, di, do, soレジスタを0に初期化
KEY 入力 KEY=1のときkey, soレジスタをシフト動作させる
STR 入力 STR=1のときdi, do, soレジスタをシフト動作させる
DE 入力 DE=0で暗号化、DE=1で復号化を指定する
KEY=0,STR=0のときDEに応じ てdiレジスタの内容を暗号 化または復号化しdoレジス タに書込む
SI 入力 シリアル入力
SO 出力 シリアル出力
PE 出力 keyのパリティエラー

desifモジュールからはdesモジュールを呼び出す。
desモジュール内には、暗号・復号回路、sub-key生成など、レジスタ以外の回 路が含まれている。
desif.v
module desif ( CLK, RST, SI, KEY, STR, DE, SO, PE, LED );
  input  CLK;  // Clock
  input  RST;  // Reset
  input  SI;   // Serial input
  input  KEY;  // Key register select
  input  STR;  // String register select
  input  DE;   // Decrypt=1/Encrypt=0
  output SO;   // Serial output
  output PE;   // Key parity error (if 1, parity error detects)
  output LED;  // On board LED (if 0, light on)

  reg         ...;
  reg  [1:64] ...;
  reg  [1:64] ...;
  reg  [1:64] ...;

  wire [1:64] ...;	// Internal wire

  assign LED = ...;	// if no parity error, light on.

  always @( posedge ... or posedge ... )
  begin
    if( ... )		// if reset, all register is 0;
      begin
        ... <= ...;
        ... <= ...;
        ... <= ...;
        ... <= ...;
      end
    else if( ... )	// if key register selects, shift key register
      begin
        { ..., ... } <= { ..., ... };
      end
    else if( ... )	// if string registers select, shift data registers
      begin
        { DO, SO } <= { DI[64], DO       };
          DI       <= { SI,     DI[1:63] };
      end
    else
      begin		// encrypt or decrypt data is written to DO register
        ... <=  ...;
        SO  <= 1'b0;
      end
  end

  des u_des ( .DI(DI), .DO( ... ), .KEY(KE), .MODE(DE), .PE(PE) );

endmodule

次は、 暗号・復号回路 を設計する。
| Back |