計算機工学特論 a 第 4 回 論理合成

35
Yamakoshi-Lab. Yamakoshi-Lab. -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma Univer sity Japan- 計計計計計計計 A 計4計 計計計計 計計計計計 計計 計計 2007 計 11 計 7 計

Upload: bruce-sosa

Post on 03-Jan-2016

43 views

Category:

Documents


4 download

DESCRIPTION

計算機工学特論 A 第 4 回 論理合成. 山越研究室 増山 知東. 2007 年 11 月 7 日. HDL 言語で書かれたソースファイルを   ゲート回路のような“素子”に変換し    それらを組み合わせ、機能を向上させること。 但し、論理合成に不向きな言語仕様もある。. 論理合成とは?. module 1. module 3. module 2. ソースファイルである .v ファイルから    シンボルファイル( .bsf ファイル)を作成する. 具体的な方法. File → Create/Update → - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

計算機工学特論 A

第 4 回 論理合成

山越研究室 増山 知東2007 年 11 月 7 日

 

Page 2: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

論理合成とは?• HDL 言語で書かれたソースファイルを  ゲート回路のような“素子”に変換し   それらを組み合わせ、機能を向上させること。• 但し、論理合成に不向きな言語仕様もある。

module 1

module 2

module 3

Page 3: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

具体的な方法• ソースファイルである .v ファイルから   シンボルファイル( .bsf ファイル)を作成する

File → Create/Update →

  Create Symbol Files for Current File

を選択すると .v ファイルで作成した

プログラムのシンボルファイルを作成できる。

Page 4: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

具体的な方法• 作成したシンボルファイルを用いて     .bdf ファイル上に回路図を書いていく。

入力端子、出力端子などは

あらかじめ用意されている。

また、 AND ・ OR 等のゲート素子も

登録されている。

Page 5: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

具体的な方法• .vwf ファイルを作成してシミュレーションを行う。

Page 6: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

フル・アダー呼び出しによる加算回路の論理合成

接続線の太さはデータのビット数が 1bit か、それより大きなもので区別する。

このビット数による差を設定しないと、コンパイルすらできない。

Page 7: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

シミュレーション結果

接続の不良か、設定の不備か期待していた結果は得られなかった。

出力 q の項を見ると‘ X’ という不定形が出力されている。

論理合成せずに HDL 記述で実行した、フル・アダー呼び出しによる 4bit 加算回路

Page 8: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

フル・アダーの論理合成結果

Page 9: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

シミュレーション結果

A : L,H,L,H ・・・・と交互に繰り返す

B : H,L,H,L ・・・・と交互に繰り返す

CIN : 常に H

Page 10: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

第 2 章 もう少し進んだ Verilog HDL 記述2.1 電子サイコロ

修士 1 年 赤津 実幸

Page 11: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

電子サイコロの構造

reset

enable

ck

lamp[0]lamp[1]lamp[2]lamp[3]lamp[4]lamp[5]lamp[6]

reset

enable

ck

リセット。 1 の目を表示して停止1で回転

0で停止

クロック

lamp[0]

lamp[1]

lamp[2]

lamp[4]

lamp[5]

lamp[6]

lamp[3]

対応表示ランプ

ランプ  lamp[0~6]

1 : ランプ点灯

0 : ランプ消灯

に対応

サイコロの目 3の場合

lamp[0]

lamp[1]

lamp[2]

lamp[4]

lamp[5]

lamp[6]

lamp[3]

カウンターが 1~6 の値でループしており、

enable を 0 にした瞬間のカウンター値をサイコロの目で表現するmodule

電子サイコロのブロック図

Page 12: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

電子サイコロの各処理の説明

input ck, reset, enable

Counterイベントpogedge ckor posedge reset

reg [2:0] cnt 3bit レジスタ

デコーダ

output [6:0] lamp

入力 cnt出力 lamp

if (reset = 1)

カウンタ値 cnt を 1 に設定

else if (enable = 1)

if( カウンタ値 cnt = 3)

cnt を1に設定

else

cnt を 1 インクリメント 

※   reset = 1 なら cnt=1 なので  lamp[3] のみ1 になり

   サイコロの目は1を表示

Page 13: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

電子サイコロの各処理の説明

input ck, reset, enable

Counterイベントpogedge ckor posedge reset

reg [2:0] cnt   3bit レジスタ

デコーダ function  dec

output [6:0] lamp

入力 3bit cnt出力 7bit lamp

function を用いたデコーダ

function [6:0] dec

input [2:0] din

function のリターン値

7bit のデータを出力

C 言語でいう仮引数。

3bit の変数を din に代入

Case 文による din の値での場合わけdin = 1 dec = 7b’0001000din = 2 dec = 7b’1000001din = 3 dec =7b’0011100din = 4 dec=7b’1010101din = 5 dec=7b’1110111din = 6 dec=7b’1110111din = その他 dec= 不定値

lamp = dec( cnt )

関数 dec に 3bit カウンタ値 cnt を入れると 7bit の lamp に 7bit の dec の値が代入される。

Page 14: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro  出力結果 1

クロック周期 clk 50ns, 20MHz(=1/50ns)reset(1→0) タイミング 200nsenable(0→1) タイミング 800ns  

1 1 12 23 34 45 6 5 6サイコロの目

ひげが立ち上がってしまう。 1→2 、 3→4 のタイミングこうなると、一瞬だけサイコロの値が変化してしまうところができてし

まう。

Page 15: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro  出力結果 2  問題の検証

カウンタ cnt と出力 lamp の出力タイミングがほぼ同時

データの立ち上がり、立ち下りのタイミングが重なるので出力値が不安定になっている可能性がある

Page 16: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 1 不定値を 0 化

カウンタ cnt が変化する不安定な区間は lamp を 0 にする

default = 7’bxxxxxxx を変更

Page 17: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 1 変更後

変更前

変更後

サイコロの目 1 → 2 になるタイミングは改善された

Page 18: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 1 変更後

3→4のタイミングの検証

01

1 10

ZOOM

カウンタ一瞬で値が変わるのではなく、 bit が全て変化するのに時間がかかる。

lamp = dec(cnt) によりカウンタ cnt の変化に応じて出力 lamp も変化してしまう。

3 6 5 4

6

Page 19: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 2 デコーダ処理

問題点

・カウンタには値が完全に変化するまで時間がかかる

⇒その間のカウンタ cnt の値は不定値

・カウンタ cnt の変化にすぐに応じてデコーダ dec が処理して

出力 lamp に吐き出してしまうそこで・カウンタ cnt が完全に変化したあとにデコーダ dec で処理させて やればよい

⇒デコーダに処理のタイミングを与える⇒カウンタはクロックの立ち上がりで処理するので 半クロック後にはカウンタの変化は終了しているので

      半クロック後に 1 回デコーダ処理を行わせる⇒イベント always 文を用いる  always@(negedge ck)

Page 20: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 2 変更後

クロックの立下り時にのみ処理を行うデコーダを作成

カウンタ変化後半クロック遅れて

lamp 出力される

Page 21: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

module saikoro 改善 2 比較

変更前

変更後

デコーダにカウンタを読み込むタイミング(半クロック遅延)が与えられたためカウンタの不定値範囲を読み込まなくなった

Page 22: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

計算機工学特論 A

  テキスト内容  2.2

Page 23: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2  電子錠

Page 24: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

7 8 9

4 5 6

1 2 3

0クローズ

ck

reset

tenkey[9:0]

close

lock

クロック (50Hz程度 )リセット

10

クロック

テン・キー

クローズ・キー

錠出力

入力 出力

2.2.1  電子錠の仕様

Page 25: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.2  電子錠の回路概要

エンコー

=3 =6 =9

EN

D

CKRES

Q

EN

D

CKRES

Q

EN

D

CKRES

Q

EN

D

CKRES

Q

=5

R

QCK

S

tenkey

ck

close

lock

ck

Page 26: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.3  電子錠の HDL 記述

module elelock(ck,reset,tenkey,close,lock);

input ck,reset,close;

input [9:0] tenkey;

output lock;

reg lock,ke1,ke2;

reg [3:0] key [0:3];// レジスタ配列

wire match, key_enbl;

parameter SECRET_3=4‘h5,SECRET_2 = 4’h9,SECRET_1 = 4‘h6,SECRET_0 = 4’h3;// 定数

リスト 2.3

Page 27: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.3  電子錠の HDL 記述レジスタ配列

reg [x1:x2] 名前 [y1:y2];

多次元配列の一種。 x1-x2+1bit をひとつの単位としてみなした一次元配列。要素数は y2-y1+1個。全体のサイズは (x1-x2+1)×(y2-y1+1)bit 。アクセスは x1-x2+1bit を単位としてのみ可能で 1bit単位ではアクセスできない。ex) reg [7:0] u_byte [0:3];//1byte(8bit) の u_byte[0]~ [3] が宣言されるu_byte[1] = 8’hff;

Page 28: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.3  電子錠の HDL 記述定数

parameter 名前 = 実態 ( 数値 );

数値等を使うところで代わりに parameter で定義した名前を使うことができる。ex)parameter aka = 24’hff0000;reg [23:0] tmp;tmp = aka;とすると tmp に 24‘hff0000 が代入される

Page 29: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

always @(posedge ck or posedge reset) beginif (reset = = 1'b1) begin

key[3] <=4‘b1111;key[2] <=4’b1111;key[1] <=4‘b1111;key[0] <=4’b1111;

endelse if(close= =1'b1)begin

key[3] <=4'b1111;key[2] <=4'b1111;key[1] <=4'b1111;key[0] <=4'b1111;

endelse if (key_enbl= =1'b1) begin

key[3] <= key[2];key[2] <= key[1];key[1] <= key[0];key[0] <= keyenc(tenkey);

endend

2.2.3  電子錠の HDL 記述

リスト 2.3  暗証番号入力レジスタ

リセット信号が来たらそれまでに入力された番号を消す。

クローズ信号が来たらそれまでに入力された番号を消す。

キー入力が来たら値を更新する

入力されたキーから保持すべき値を返す関数

Page 30: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

always @(posedge ck or posedge reset) beginif(reset==1'b1) begin

ke2 <= 1'b0;ke1 <= 1'b0;

endelse begin

ke2 <= ke1;ke1 <= |tenkey;

endend

2.2.3  電子錠の HDL 記述

リスト 2.3  テンキー入力チャッタ取り用

リセット信号が来たらキーが押されてない状態として暗証番号入力レジスタに通知する

1 クロック前に押されてたキーの状態を ke2に保存し今キーが押されているかを取得する。

Page 31: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

always @(posedge ck or posedge reset) begin

if (reset==1'b1)lock <= 1'b0;

else if (close==1'b1)lock <= 1'b1;

else if (match==1'b1)lock <= 1'b0;

end

2.2.3  電子錠の HDL 記述

リスト 2.3  電子錠出力

リセット信号が来たらロックを解除する

クローズ信号が来たらロックする

暗証番号が一致したらロックを解除する

Page 32: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

function [3:0] keyenc;input [9:0] sw;

case (sw)10'b00000_00001: keyenc = 4'h0;10'b00000_00010: keyenc = 4'h1;10'b00000_00100: keyenc = 4'h2;10'b00000_01000: keyenc = 4'h3;10'b00000_10000: keyenc = 4'h4;10'b00001_00000: keyenc = 4'h5;10'b00010_00000: keyenc = 4'h6;10'b00100_00000: keyenc = 4'h7;10'b01000_00000: keyenc = 4'h8;10'b10000_00000: keyenc = 4'h9;

endcaseendfunction

2.2.3  電子錠の HDL 記述

リスト 2.3  テンキー入力エンコーダ

Page 33: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

assign match = (key[0]==SECRET_0) && (key[1]==SECRET_1)     && (key[2]==SECRET_2) && (key[3]==SECRET_3);

assign key_enbl = ~ke2 & ke1;

endmodule

2.2.3  電子錠の HDL 記述

リスト 2.3  暗証番号一致信号

設定されている暗証番号と入力信号が一致すれば 1 を出力する

~ は not を表している。

Page 34: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.4  電子錠のシミュレーション

Page 35: 計算機工学特論 A 第 4 回 論理合成

Yamakoshi-Lab.Yamakoshi-Lab.      -Department of Electric and Electronic Engineering,Faculty of Engineering,Gunma University Japan-

2.2.4  電子錠のシミュレーション