• 検索結果がありません。

システム入出力、ユーザインタフェース定義 3. 構成要素間インタフェース定義

ドキュメント内 LSI LSI 2 (ページ 53-68)

}右のリストを実行したと

2. システム入出力、ユーザインタフェース定義 3. 構成要素間インタフェース定義

論理設計入門 演習ノート

54

10進加算のアーキテクチャ設計

• 使用可能な資源

4ビット入力2本、桁上げ入力、5ビット出力を有する2 進加算器を1つ使用

入力データを選択するデータセレクタ(マルチプレク サ)

入力データの数は前回の要求分析結果より判断

出力データを一時保持するレジスタ(フリップフロップ)

資源として不足があれば、随時追加を検討すること

55

10進電卓のシステム設計

• データの流れを整理しデータパスを設計

• 制御の流れを整理し状態遷移図を設計

• データパス上のデータ移動タイミングをタイミ ングチャートを作成し確認

• 資源抽出が終了した時点で、主要な資源と データの転送路を結ぶブロック図を作成

ブロック図の書き方はテキスト

P129

を参照

56

練習課題

2進12ビット加算器

R

R

R

Q

Q

Q

Oc

O

O

Ol

selAddH selAddM selAddL

A B c

selCin0 selCinC

ブロック図の回路を12ビット加算器として動作させる状態遷移図を作成せよ レジスタ

R

Q

にはあらかじめ値が入っており、レジスタ

O

に計算結果を格納 レジスタへの入力とレジスタの書き込み信号は同一状態内で発行する

wOc wOl

wOm wOh

データ選択回路 レジスタ

4ビット桁上げ入力付 加算回路

57

状態遷移図の設計

起動待ち 状態

Olの計算

selAddL=1

selCin0=1 wOc=1

wOl=1

Omの計算

selAddM=1 selCinC=1

wOc=1 wOm=1

Ohの計算

selAddH=1

selCinC=1 wOc=1 wOh=1

計算開始

起動しない制御信号は記載しない 初期状態

論理設計入門 演習ノート

58

10進計算の基礎知識

z 2進加算器を用いて10進計算を行う

z

8+2=10となって欲しいが、2進加算器では

z

1000+0010=1010 となる。これを補正す るには、加算結果にさらに6(0110)を加える

z

1010+0110=1 0000

z

加算結果が1010以上の場合、および、

桁上げが発生した場合には6を加える

z

8+8=16 1000+1000=1 0000

z

これに6を加えると 1 0110 16

59

10進加算器作成

R

Rm

R

Q

Q

Q

Oc Ot

Oh

Om

O

1010以上判定

selAddH selAddM selAddL

A B

selAinT selAinR

selBin6 selBinQ

6 c

selCin0 selCinC

演習問題 10

ブロック図の回路を10進加算器として動作させる状態遷移図を作成せよ レジスタ

R

Q

にはあらかじめ値が入っており、レジスタ

O

に計算結果を格納

wOm wOh

wOc wOl wOt

論理設計入門 演習ノート

60

演習問題 11

• 加算を行う3桁電卓を設計せよ

4ビット入力および桁上げ入力を持つ加算器を用 いるものとする

フリップフロップは必要な数用意すること

入力は10個の数字キーと+、

AC

、=キー

キーが押されたら、4ビットのデータが入力される

また、同時にキー入力の制御線が1となる

出力は10進3桁(各桁4ビットの出力線とする)

• 要求分析、構成要素抽出を行った後、ブロッ

ク図、状態遷移図を作成せよ

61

電卓ブロック図参考例

R

Rm

R

Q

Q

Q

Oc Ot

Oh

Om

O

1010以上判定

0〜9判定

+記号判定

=記号判定 AC判定

selQin0 selQinkey selRin0 selRinkey

selAddH selAddM selAddL

selOin0 selOinAdd selOinKey

A B

selAinT selAinR

selBin6 selBinQ

Kin

6 c

selCin0 selCinC

レジスタの書き込み信号は各自定義せよ

論理設計入門 演習ノート

62

電卓ブロック図参考例(改良版)

R

Rm

R

Q

Q

Q

Oc Ot

Oh

Om

O

1010以上判定

0〜9判定

+記号判定

=記号判定 AC判定

selQin0 selQinkey selRin0 selRinkey

selAddH selAddM selAddL

selOin0 selOinAdd selOinKey

A B

selAinT selAinR

selBin6 selBinQ

Kin

6 c

selCin0 selCinC

Oh

Om

Ol

63

まとめ

• システムLSI設計の考え方

要求分析

アーキテクチャ設計

システム設計

• システムLSI設計のための基礎知識

組合せ回路

順序回路

表現形式

• システムLSI設計演習

論理設計入門 演習ノート

64

付録

• ハードウェア記述言語の講習を受けた後、各 自設計した電卓をHDLで実現してみよう。

• まずは2進12ビット加算器の例題を見てから、

設計の流れに沿って、検討しよう。

65

2進12ビット加算器HDL記述例

/* 2進12ビット加算器の例題 */

/* 例題ではレジスタはあらかじめ設定済みとしたが、

ここでは、各レジスタ設定を外部から行う */

module add12 { input key<4>;

instrin setRh, setRm, setRl, setQh, setQm, setQl;

instrin doadd;

output outH<4>, outM<4>, outL<4>;

reg Rh<4>, Rm<4>, Rl<4>, Qh<4>, Qm<4>, Ql<4>, Oc;

reg Oh<4>, Om<4>, Ol<4>;

instrself selAddH, selAddM, selAddL, selCin0, selCinC;

instrself wOc, wOh, w0m, wOl, exec_add;

sel addinA<4>, addinB<4>, addinC, addOut<5>;

stage_name exec {task t();}

par { outH = Oh; outM = Om; outL = Ol; } instruct doadd generate exec.t();

instruct setRh Rh := key;

instruct setRm Rm := key;

instruct setRl Rl := key;

instruct setQh Qh := key;

instruct setQm Qm := key;

instruct setQl Ql := key;

instruct selAddH par { addinA = Rh; addinB = Qh; } instruct selAddM par { addinA = Rm; addinB = Qm; } instruct selAddL par { addinA = Rl; addinB = Ql; } instruct selCin0 addinC = 0b0;

instruct selCinC addinC = Oc;

instruct wOc Oc := addOut<4>;

instruct wOh Oh := addOut<3:0>;

instruct wOm Om := addOut<3:0>;

instruct wOl Ol := addOut<3:0>;

instruct exec_add addOut = addinA + addinB + addinC;

stage exec {

state_name invoke_wait, calcL, calcM, calcH;

first_state invoke_wait;

state invoke_wait goto calcL;

state calcL par { selAddL(); selCin0(); wOc(); wOl();

exec_add(); goto calcM;}

state calcM par { selAddM(); selCinC(); wOc(); wOm();

exec_add(); goto calcH;}

state calcH par { selAddH(); selCinC(); wOc(); wOh();

exec_add(); goto invoke_wait; finish;}

} }

論理設計入門 演習ノート

66

電卓を実現する SFL 記述

• 電卓を実現する SFL 記述の作成を行ってみよ う

モジュール名

: calculator

入力端子

: key<4>

出力端子

: outL<4>, outM<4>, outH<4>

制御入力端子

: keyin

、制御出力端子

: keyreq

入力を要求するときには

keyreq

を起動し、外部から

keyin

とともに

key

に入力データが到着するとする

67

データパス設計

• ブロック図の各線に名前をつける

テキストP.129の

CPU

ブロック図を参照

• セレクタの選択信号、レジスタの設定信号を

モジュールの制御線( instrin もしくは instrself )

として宣言

ドキュメント内 LSI LSI 2 (ページ 53-68)

関連したドキュメント