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

Microsoft PowerPoint - 回路デジタル

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - 回路デジタル"

Copied!
76
0
0

読み込み中.... (全文を見る)

全文

(1)

集積電子回路設計

Part 3:デジタル回路

千葉大学工学部電気電子工学科

橋本研也

(2)

論理回路

Y=AB=A+B Y=A+B=AB Y Y A B Y Y=A+B=A+B A B Y L L H L L L L H H H L H A B Y L L H L L H L H H H H H A B Y L L H L L H L H H H H L A B A B Y A B Y A B Y A B

(3)

デジタル素子もアナログ素子

しきい値

過渡応答によ

る波形の乱れ

(4)

負荷を多くすると ⇒ パルス遅延の増加

遅延を規定以

下にする最大

の素子数 =

ファンアウト

遅延の増大+

パルス幅の減少

(5)

高速デジタル回路 ⇒ 分布定数回路

しきい値

パルスの遅延

伝送線路によ

る信号遅延

パルスの反射は?

(6)

反射があると。。。

反射による波

形の乱れ

(7)

A sel 0 1 A B sel 0 1 2 3 sel A 0 1 H x H H L L L H L L L H _ _ A B 0 1 x x H H L L H L L H H L _ _ sel H L L 2 3 H H H H H H _ _ L H H H H H H H L L L H H L

セレクタ

(8)

A B Y L x H x L H sel L L x L x H L H H H

デュプレクサ

A B Rp Y Y A B sel sel 3ステートバッファによる実現 (多くの多重化容易)

(9)

入出力回路

SW1 Rp Y A RB RC 通常の論理ICはGNDへの 電流流出により“L”を判定 +5V C LED BE LED

R

V

V

I

5

VLED: LEDの順方向電圧降下 RB(<VBE /ILED) : ベース電流の制限 マイクロ コンピュータ 無接続の入力は “H”と判

(10)

Ra Rb eout ein

シュミットトリガ回路









  b a in b out a t b a in b out a t out

R

R

e

R

e

R

V

V

R

R

e

R

e

R

V

V

e

V+:”H”出力、 V-:”L”出力

e

out

e

in シュミットトリガの入出力特性 V+ Vs- Vs+

V

s+

=V

t

/(1+R

b

/R

a

)-V

-

R

b

/R

a

V

s-

=V

t

/(1+R

b

/R

a

)-V

+

R

b

/R

a V

(11)

-C R eout Ra

マルチバイブレータ

0

V

+

V

t

V

-t

e

out

e

c

V

c+

V

c-ec 青曲線を表す式(T=CR) マルチバイブレータの波形

)

/

exp(

)

(

V

V

t

T

V

V

o

V

o

V

t

(

V

V

)

T

T

V

V

V

V

T

o t

2

.

2

3

log

2

)

/(

)

(

log

2

(Vt=(V++V-)/2の時)

(12)

C R Ra ein eout t eout ein ecut ec

ワンショットマルチバイブレータ

Vt V -V+ V+ V -青曲線を表す式(T=CR)

)

/

exp(

)

(

V

V

t

T

V

V

(Vt=(V++V-)/2の時)

T

T

V

V

V

V

T

t

69

.

0

2

log

)

/(

)

(

log

(13)

HDL(Hardware Description Language) verilogによる構造記述 A B S L L L H L H C L L H L H H H L L H

半加算器

S W0 A B W1 W2 C module halfadder(s, c, a, b); input a, b; output s, c; wire w0, w1, w2; assign w0 = a&b, w1 = ~w0, w2 = a|b, s = w1 & w2, c = w0; endmodule 入出力,ワ イヤの定義 相互接続の 定義 否定 論理積 論理積 論理和

(14)

B Ci S L L L H L H Co L L H L H H H L L H

全加算器

W0 A B W1 S

module fulladder(s, co, a, b, ci); input a, b, ci; output s, co; wire w0, w1, w2; halfadder I0 (.s(w0), .c(w1), .a(a), .b(b)); halfadder I1 (.s(s), .c(w2), .a(w0), .b(ci)); assign co = w1 | w2; endmodule HDL(Hardware Description Language) verilogによる構造記述 入出力,ワ イヤの定義 下位モ ジュール の相互接 続の定義 Ci 半加算器I0 半加算器I1 Co A L L L L L L L H H L L H H L H H L H H H H H H H W2

(15)

4bit

加算器

Ci A0

module adder4(s, co, a, b, ci); input [3:0] a, b; input ci; output [3:0] s; output co; wire w0, w1, w2; fulladder I0 (.co(w0), .s (s[0]), .a(a[0]), .b(b[0]), .ci(ci)); fulladder I1 (.co(w1), .s (s[1]), .a(a[1]), .b(b[1]), .ci(w0)); fulladder I2 (.co(w2), .s (s[2]), .a(a[2]), .b(b[2]), .ci(w1)); fulladder I3 (.co(co), .s (s[3]), .a(a[3]), .b(b[3]), .ci(w2)); endmodule 4bitデータ バスの定義 全加算器I0 B0 A1 全加算器I1 B1 W1 W0 A2 全加算器I2 B2 A3 全加算器I3 B3 W2 S0 S1 S2 S3 Co 下位モ ジュール の相互接 続の定義 ワイヤの定義

(16)

begin

a = 4'b0001; b = 4'b0001; ci = 1'b0;

$monitor("%t %b %b %b",$time,s,a,b,co); for (count=0; count<=7; count=count+1) begin #10 b = a; a = s; end $finish; end

adder4 inst0 (s,co,a,b,ci); endmodule

動作試験のためのモジュール(結果を次々加算)

時間10お休み module testadder4; reg [3:0] a, b; reg [7:0]count; reg ci; wire [3:0] s; wire co; initial 2進数の代入 結果の 出力 7回反復 終わり 最初にする仕事 は以下の通り 始めはこのモ ジュールから データを収 納するメモ リに定義

(17)

VeriLogger Proによる

シミュレーション結果

(桁あふれに注意)

(18)

4bit

加算器

Ci

A0 module adder4(s, co, a, b, ci);

input [3,0] a, b; input ci; output [3,0] s; output s, co; reg [3:0] s; reg co;

always (a or b or ci) begin [co,s] = a + b + ci; end endmodule 全加算器I0 B0 A1 全加算器I1 B1 W1 W0 A2 全加算器I2 B2 A3 全加算器I3 B3 W2 S0 S1 S2 S3 Co HDL(Hardware Description Language) verilogによる動作記述 動作を保管するレジス タの定義 a,b,ciが変化 した時は常に

記述は簡単だが、

最適な

hardware

組み上がるか不明

(19)

SR(Set-Reset)

フリップフロップ

S R Q Q H H L L H L L H H L L H L L H L L H _ HH→LLの遷移の結果 は? Q Q _ S R Q Q S R _ _ 早い者勝ち!=実装や素子によって不定 _

(20)

SW1 SW2 SW1 SW2 t Q S R Q Q _ _ _ Rp SW R S Q Q _ _ _ Rp Rp スイッチのばたつき (チャタリング) t Q S R _ _ スイッチのばたつき (チャタリング) Rp

(21)

Q _ Q clk S R

クロック付き

SR

フリップフロップ

クロック“H”の時に出力変化 R S R S Q Q Q Q _ _ clk clk clk S R Q Q _ クロックが“H”から“L”に変化し た時のデータを保持 クロックが“H”から“L”に変化し た時のデータを保持 それ以外では出力変化せず マスタ・スレーブ型

(22)

Q _ Q clk K J Q _ Q clk K J pre clr J(S) K(R) Qn Qn H H H L L H H L L H L L _ Qn-1 Q_n-1 Q_n-1 Qn-1

JK

フリップフロップ

preset(set):クロックに関わ らず強制的にQ=H clear(reset):クロックに関わ らず強制的にQ= L Qn-1 :1クロック前の出力

(23)

ラッチ

(D

フリップフロップ

)

J K Q Q _ pre clr D clk RB RC t Q D clk 0 0 1 11 0 11 1 00 0 11 0 00 1 0 00 0 11

次のクロック入力まで

データ保持=メモリ

D Q Q _ pre clr

(24)

Serial-Parallel変換(シフトレジスタ)

J K Q Q_ pre clr J K Q Q_ pre clr J K Q Q_ pre clr clk clr D Q1 Q2 Q3 t Q1 Q2 Q3 D clk 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0

クロック入力から出力

変化までに遅延有り

(25)

Parallel-Serial変換

(シフトレジスタ)

J K Q Q _ pre J K Q Q _ pre clr J K Q Q _ pre clk clr clr D1 ld Sin S out D2 D3

(26)

J K Q Q _ pre clr J K Q Q _ pre clr J K Q Q _ pre clr Q0 clr clk Q1 Q2

2進数(Binary)カウンタ

t Q1 Q2 Q0 clk 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1

(27)

J K Q Q _ J K Q Q _ J K Q Q _ clk J K Q Q _ Q0 ' Q1 Q2 Q3 Q2

二進化十進数(Binary-Coded Decimal)カウンタ

t clk Q0 Q1 Q2 Q2 Q3 ' 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0

(28)

Q4 BCDカウンタ Q4 BCDカウンタ Q4 BCDカウンタ Q1Q2Q3 Q1Q2Q3 Q1Q2Q3 液晶ディスプレイ CLR CLR CLR Set Reset Q (gate)

ストップウォッチの回路構成

基準クロック •クリアパルスの入力で、カウンタをクリア •セットパルスの入力から、計測開始 •リセットパルスの入力で、計測終了 ① ② ③

(29)

C

2

e

out

C

1

クロック用発振回路

音叉型水晶振動子

e

out

e

in インバータの入出力特性 反転増幅器と等価!

2

15

=32,768Hz を2

15

分周すれば

1Hz!

(30)

高安定プログラマブル発振器

(

v

=M

s

/N)

VCO

s v

Amp

e

d

位相検波器

LPF

N分周器

M分周器

Phase-Locked Loop (PLL)

• 高安定発振源

s

による制御 ⇒ 高精度、高安定

• 分周器をプログラム可能 ⇒ 可変

S

水晶発振器による発生

DCモータ+回転検出センサ

高精度モータ

(31)

ミキサ

(排他的論理和)とLPFの役割(位相検出)

t

A B

A

B

LPF

通過後

閉ループ利得大で、負帰還がか

かっている時、差動入力は零

PLLロック時AとB

90度の位相差

+

(32)

t Q(gate) LD S clk CLR Q4

周波数カウンタを作ってみよう

基準クロック 計測開始 計測終了 データラッチ カウンタクリア 計測区間 •計測区間内のパルス数をカウント •計測後、結果をラッチに保存 •カウンタをクリア

(33)

Q4 BCDカウンタ Q4 Q4 Q4 BCDカウンタ Q4 Q4 Q1Q2Q3 Q1Q2Q3 Q1Q2Q3 Q4 Q1Q2Q3 Q4 Q1Q2Q3 Q4 Q1Q2Q3D4 D1D2D3 D1D2D3D4 D1D2D3D4 液晶ディスプレイ LD LD LD BCDカウンタ BCDカウンタ

reset reset reset

BCDカウンタ BCDカウンタ

reset reset reset

LD reset CLK CLK set D Q Q (gate) set D Q

周波数カウンタの回路構成

基準クロック reset

(34)
(35)
(36)

module jkflipflop(out,outbar,j,k,clk,res); output out,outbar;

input j,k,clk,res; reg q;

always @(negedge clk or negedge res) begin if(!res) begin q <= 0; end else

HDL(Hardware Description Language)による論理回路設計

JKフリップフロップの Verilog-HDLによる記述 入出力線,内部 レジスタの定義 clkの立ち下がりもしくは resの立ち下がりの時 低レベル機能の モジュール化 q=0の代入(リセット動作) resが偽(0)の時 その他の時

(37)

if(j==1) if(k==1) begin q <= ~q; end else begin q <= 1; end else if(k==1) begin q<= 0; end end assign out=q; assign outbar=~q; endmodule 出力信号の定義(常時接続) J=K=1の時、qの反転 J=1でK=0の時、q=1 J=0でK=1の時、q=0 always構文の終了 もしj=1ならば もしk=1ならば もしk=1ならば

(38)

module bcdcounter(out,clk,res); output [3:0] out; input clk,res; wire q3,qbar0,qbar1,qbar2,qbar3,a; assign a=1; jkflipflop I0 (.out(out[0]),.outbar(qbar0),.j(a),.k(a),.clk(clk),.res(res)); jkflipflop I1 (.out(out[1]),.outbar(qbar1),.j(qbar3),.k(a),.clk(out[0]),.res(res)); jkflipflop I2 (.out(out[2]),.outbar(qbar2),.j(a),.k(a),.clk(out[1]),.res(res)); jkflipflop I3 (.out(q3),.outbar(qbar3),.j(out[2]),.k(qbar2),.clk(out[0]),.res(res)); assign out[3]=qbar2&q3; endmodule モジュールを組み合わせ て高機能のモジュール化 BCDフリップフロップの Verilog-HDLによる記述 相互接続線の定義 a=1(常時接続) qbar2とq3の&をoutと定義(常時接続) モジュー ル間の相 互接続の 定義 論理積

(39)

module bcdtest; wire [3:0] out; reg set,clk,res; initial begin $monitor("%t %b %b %b",$time,clk,res,out); clk <=0; res <=0; #40 res <=1; #350 $finish; end always #10 begin clk<= ~clk; end

bcdcounter inst0 (out,clk,res); endmodule 試行用信号源の Verilog-HDLによる記述 初期動作の定義 これ終わり 出力データとその出力 形式の定義 clkの否定(clkの作成) 時間40休止 時間350休止 時間10毎の動作 2進数で表示

(40)

VeriLogger Pro Student Versionによるシミュレーション結果

アナログモデルでの シミュレーション(信号 の遅延、鈍り等考慮) Field Programmable

Logic Array (FPGA) によるハードウェア化 カスタムLSIによ るハードウェア化 駄目な場合 FPGAやカスタム LSIへの実装 Intellectual Property (IP)としての権利化・ 販売(例: CPUコア)

(41)

t trig clk Q1 Q3 Q2 out Q0

トリガ入力後、クロックに同期した

パルスを4個出力するためには?

パルスを4 個数える 最後のパルス リセット信号 この区間だけ出力 入力トリガ 入力クロック 出力信号

(42)

トリガ入力後、クロックに同期した

パルスを4個出力する回路

動くかどうかはシミュレータで実証!

思いもかけない入力もありえる

J K Q Q_ J K Q Q_ trig OUT J K Q Q_ CLR clk Q1 Q2 Q3 R Q 0 CLR CLR

実は後述の

verilog-HDL

で最初に設計し、

後に

Hardware

(43)

module rsflipflop(out,outbar,set,res); output out,outbar;

input set,res; reg q;

always @(posedge set or posedge res) begin if(set=1) begin q <= 1; end else begin q <= 0; end end assign out=q; assign outbar=~q; endmodule

HDL(Hardware Description Language)による論理回路設計

RSフリップフロップの Verilog-HDLによる記述 入出力線,内部 レジスタの定義 動作の定義 set=1の時q=1 set=0の時q=0 setの立ち上がりもしくはresの 立ち上がりの時 出力信号の定義

(44)

module pulse4out(out,clk,trig,res); output out; input clk,res,trig; wire [3:0] q,qbar; wire clk2,a; assign a=1,clk2=res&~q[3]; rsflipflop I0 (.out(q[0]),.outbar(qbar[0]),.set(trig),.res(~clk2)); jkflipflop I1 (.out(q[1]),.outbar(qbar[1]),.j(q[0]),.k(a),.clk(clk),.res(clk2)); jkflipflop I2 (.out(q[2]),.outbar(qbar[2]),.j(q[0]),.k(a),.clk(q[1]),.res(clk2)); jkflipflop I3 (.out(q[3]),.outbar(qbar[3]),.j(q[0]),.k(a),.clk(q[2]),.res(clk2)); assign out=q[0]&clk; endmodule フリップフ ロップ間の 相互接続 resとq[3]の否定の&をclk2と定義 q[0]とclkの&をoutと定義 入出力線,相互 接続線の定義 低レベル機能を利用した高 次機能モジュールの実現 複雑機能のモジュール化 4bitデータ

(45)

module pulse4; wire out; reg clk,res,trig; initial begin $monitor("%t %b %b %b",$time,clk,trig,out); clk <=0; res <=0; trig <=0; #40 res <=1; #25 trig <=1; #5 trig <=0; #100 trig <=1; #5 trig <=0; #100 $finish; end always #10 begin clk<= ~clk; end

pulse4out inst0 (out,clk,trig,res); endmodule

試行用信号源のVerilog-HDLによる記述

VeriLogger Pro Student Versionによるシミュレー ション結果

(46)

OrCAD PSPICE A/D SVによるシ ミュレーション結果 Reset:FFの初期値 設定(これが無いと シミュレータが怒る) Clk Trig Trigのタイミングによっ てパルス数が変化!

(47)

機械同士でデータを交換する

(非同期通信)

data Ready Strobe Strobe t data Ready ホスト 周辺機器 •周辺機器が準備できるまで待機 •データ出力(データからだけでは データが出ているか否か判定不能) •ストローブ信号を出力 Nビット分のデー タ(Data Bus構造)

(48)

Read/Write data CLK enable Read/Write address t clk data enable •クロックもしくはセレクト信号に 同期したデータ出力 •読み書き動作 •アドレス設定 CPU メモリ address

(同期通信)

(49)

Read/Write

バス構造

CPU

アドレ スバス

Memory1 Memory2 Memory3

データ バス コントロー ルバス enable 同一配線を選択されたもの同士が利用 必要に応じてユニットを追加・削減可能

(50)

Y C A Y C A

3

ステートバッファ

C A Y H H H H L L x L high-Z C=“H”の時 C=“L”の時

双方向性バッファ

high-Z :無接続と同等

(51)

Rp Y A

オープンコレクタ

シュミットトリガ 人間を相手にする以上間違いを考慮した設計(Fail Safe) •配線切断(もしくは無接続)の状態ではどうなるか? •GNDとの短絡ではどうなるか? •配線間の短絡ではどうなるか?

(52)

#include <stdio.h>

int main(int argc, char **argv[]) {

int count, cmax; int sum = 0;

scanf("%d",&cmax);

for (count = 1; count <= cmax ; ++count){

sum = sum+count; (sum += count;と標記可)

printf("count = %d, sum = %d¥n", count, sum); } return (0); } 変数(整数)と初期値の定義

高級言語

Cによるプログラム例

1からcmaxま で順次加算 おまじない(利用する関数群の定義) cmaxの読み込み(10進数形式) このプログラム(関数)から スタート 終了するとき0を返す 変数cmaxの収納場所 countとsumの出 力(10進数形式) 行替え

(53)

lcc-win32でcompileして実行した結果 入力

(54)

#include <stdio.h>

int bcdcount(int, int, int);

int main(int argc, char **argv[]) {

int count, countmax; int clock = 1, reset = 1;

for (count = 0; count <= 5 ; ++count){ clock = -clock;

out = bcdcount(clock,reset,in); in=out;

printf("time = %d, clock = %d, out = %d¥n", count, clock, out); }

reset = 0;

scanf("%d",&countmax);

for (count = 0; count <= countmax ; ++count){ clock = -clock;

out=bcdcount(clock,reset,in); in=out;

printf("time = %d, clk = %d, out = %d¥n", count, clock, out); } return (0); } 変数と初期値の定義

高級言語

CによるBCDカウンタの動作実現

時間5まで reset=1 countmaxまで reset=0 clkの否定(clkの作成) clkの否定(clkの作成) おまじない(利用する関数群の定義) countmaxの読み込み 使用する関数(module

と等価

)の定義 ここからスタート

(55)

int bcdcount(int clock, int reset, int in) {

int out;

if( reset == 1 ) { out = 0 ;} else {

if( clock == -1 ) {out = in +1 ;} else { out=in ; } } return out; } reset付BCDカウンタ

int updowncount(int clock, int reset, int a, int b, int in) {

int out;

if( reset == 1 ) { out = 0 ;} else { if( clock==-1) {

if( a == 1 & b==0) {out = in +1 ;} if( b == 1 & a==0) {out = in -1 ;} } else { out =in ; } } return out; } reset付updownカウンタ

(56)

lcc-win32で compileして実 行した結果

updown.c

(57)

デジタル

(Finite-Impulse-Response; FIR)フィルタ

a

0

e

in

+

+

+

+

e

out

a

1

a

2

a

3

a

4

 

1 0

)

(

)

(

N n in n out

t

a

e

t

n

e

デジタルシグナルプロセッサ(DSP)による処理 : 1clk遅延

  

1 0

)

(

N n n n

z

a

z

H

ADC DSP DAC

e

i

e

o

(58)

z

-1

a

+

e

i

e

o

離散系信号処理(その1)

}

)

1

{(

)

(

)

(

i i o

nT

e

nT

ae

n

T

e

1クロック遅延 = z

-1

)

(

}

1

{

)

(

)

(

)

(

i 1 i 1 i o

z

E

z

az

E

z

az

E

z

E

 1

1

)

(

z

 az

H

(59)

a

0

z

-1

e

i

+

+

+

+

e

o

a

1

a

2

a

3

a

4

Finite Impulse Response (FIR) フィルタ

  

1 0

)

(

N n n n

z

a

z

H

デジタルフィルタ=数値計算によるフィルタリング

位相直線性が可能、しかし多くの段数を必要

z

-1

z

-1

z

-1

(60)

z

-1

a

+

e

i

e

o

離散系信号処理(その2)

}

)

1

{(

)

(

)

(

i o o

nT

e

nT

ae

n

T

e

)

(

)

(

)

(

i 1 o o

z

E

z

az

E

z

E

 1

1

1

)

(

az

z

H

無限インパルス応答

(IIR)フィルタの一例

)

exp(

1

1

)

(

T

j

a

H

(61)

Infinite Impulse Response (IIR)

フィルタ

1 1

1

)

(

  

N n n n

z

b

z

H

z

-1

e

i

+

+

+

+

e

o

-b

1

-b

2

-b

3

-b

4

z

-1

z

-1

z

-1

短い演算で急峻な周波数特性可能

ただし、線形位相実現せず

(62)

   

N n n n N n n n

z

b

z

a

z

H

1 0

1

)

(

z

-1

e

o

-b

1

-b

2

-b

3

-b

4

z

-1

z

-1

z

-1

a

0

z

-1

e

i

+

+

+

+

a

1

a

2

a

3

a

4

デジタルフィルタの一般形

z

-1

z

-1

z

-1

(63)

 

1 0 i o

{(

)

}

1

)

(

N n

T

n

m

e

N

mT

e

平均値フィルタ

    

1 0

(

1

1

)

1

1

)

(

N n N n

z

N

z

z

N

z

H

)

2

/

sin(

)

2

/

sin(

}

2

/

)

1

(

exp{

)

(

T

N

T

N

T

N

j

H

線形位相:遅延が周波数に依存せず

有限インパルス応答

(FIR)フィルタの一例

(64)

-40

-35

-30

-25

-20

-15

-10

-5

0

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5

sinNx/Nx

sinNx/Nsinx

Relative frequency

Relative amplitude in dB

スペクトラムの

折り返しの影響

(65)

z=exp(j

T)であるから

)

2

/

(

)

2

/

sin(

}

2

/

)

1

(

exp{

)

2

/

sin(

)

2

/

sin(

}

2

/

)

1

(

exp{

1

)

exp(

1

)

exp(

)

(

T

N

T

N

T

N

j

N

T

N

T

N

T

N

j

N

T

j

T

jN

E

 

1

1

)

(

1

z

z

t

e

N

Z

は?

パルス中心の

ずれ:

(N-1)T/2

単一パルスの

離散化版

連続関数と離散化関数で何故違う?

(66)

-120 -100 -80 -60 -40 -20 0 0 2 4 6 8 10 rectangular Hamming Blackmann Blackmann-Harris Relative frequency Amplitude in dB 0 0.2 0.4 0.6 0.8 1 -1-0.8-0.6-0.4-0.2 0 0.20.40.60.8 1 W eight Relative position Hamming Blackmann Blackmann-Harris ハミング関数w(t)=0.54+0.46cos(2t/T) ブラックマン関数:w(t)=0.42+0.5cos(2t/T) +0.08cos(4t/T) ブラックマン・ハリス関数:w(t)=0.35875+0.48829cos(2t/T) +0.14128cos(4t/T)+0.01168cos(6t/T)

窓関数

hd(t)を有限時間で打ち切るための関数:w(t) 帯域外抑圧と帯域幅はトレードオフ

(67)

-70 -60 -50 -40 -30 -20 -10 0 0 0.5 1 1.5 2 -0.04 -0.03 -0.02 -0.010 0.01 0.02 0.03 0.04 0.05 Relative frequency T ransfer function in dB T ransfer function in dB -0.05

レメッツ交換法による設計結果

手法提案の論文に設 計プログラムが添付 ⇒ 世界中に普及 許容リップルと最も狭 い遷移帯域幅で必用 なタップ数を推定可能

(68)

(Infinite-Impulse-Response; IIR)フィルタ

+

+

+

+

e

out

a

0

e

in

b

1

b

2

b

3

b

4

N n out n in out

t

a

e

t

b

e

t

n

e

1 0

(

)

(

)

)

(

: 1clk遅延

 

N n n n

z

b

a

z

H

1 0

1

)

(

・少ないタップで良好な遮断特性可能(ただし最少位相推移系) ・係数によっては発振(安定条件:全ての極が|Z|<1)FIRと組み合わせて、少ないタップで、位相特性、周波数特性 共に良好なフィルタ実現

(69)

int average(int clock, int in) {

int position, count, temp, result; long int sum = 0;

temp=clock/TAP;

position=clock-temp*TAP+TAP; data[position]=in;

data[position-TAP]=in;

for (count = 0 ; count < TAP ; ++count) { sum += data[position-count]; } result = sum/TAP; return result; }

平均値フィルタの構成

タップの場合

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 こ の 範 囲 を加算 新データ 新データ 次々と下 に移動 下まで行ったら 一番上 32bit整数 切捨て演算 余りの算出 総和 タップ数での 割り算

(70)

#include <stdio.h>

#define TAP 8 #define TMAX 20

int average(int, int);

int data[2*TAP];

int main(int argc, char **argv[]) {

int count, period, out; int in=0, clock=0;

for (period =1 ; period <=4 ; ++period) {

for (count = 1 ; count <= TMAX ; ++count) { ++clock;

in += 5;

out=average(clock,in);

printf("%d, %d, %d¥n", clock, in, out); } 以下省略 定数の定義 共用の変数を定義 clockを1ずつ増加 inを5ずつ増加 関数averageの実行 傾斜型 波形の 形成 4回繰り返し TMAX回繰り返し

(71)

TAP=4の結果 TAP=8の結果

TAP=16の結果 TAP=32の結果

計算結果を gnuplotで表示

(72)

Program counter

Data bus Address bus Register A Register B Register C Register D Stack pointer ALU Instruction register Interrupt unit B Instruction decoder control lines CPU Interrupt status register Read Write Interrupt unit A Reset Clock

CPU: Central Processing Unit ALU: Arithmetric Logical Unit Register

Address

(73)

1. LD A, 30H (16進数で30をレジスタAに代入) 2. DEC A (Aの内容を1つ減少) 3. JNZ 09H (演算結果が"0"で無い場合アドレス09Hにジャンプ) 4. LD 50H, B (レジスタBの内容をアドレス50Hに代入) 5. JMP 30H (アドレス30Hへジャンプ)

多少高級な言語

(アセンブラ)での記述

00 20 30 02 51 03 25 09 05 32 50 07 20 30 アドレス データ

機械語での表現

機械語への変換

(74)

プログラム実行の流れ

00H(20H) 01H(30H) 02H(51H) 03H(25H) 04H(09H) 05H(32H) 06H(50H) 07H(20H) 08H(30H) 09H(00H) 0AH(18H) 0BH(2CH) 0CH(33H) 0DH(FCH) 0EH(35H) 30H 31H 32H 33H 34H 50H 51H 52H 53H 54H 35H 36H 結果が 0の時 resetされた時 の開始場所 データ の収納 Jump 基本的には逐次実行 データも同 じ空間上 に展開

(75)

サブルーチン(例:三角関数の計算)

00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 30H 31H 32H 33H 34H 50H 51H 52H 53H 54H 35H 36H call 50H call 50H call 30H call 30H return return ② ③ ④ 04H 34H ① ① ② スタック構造 ③ ④ ポインタ の位置 •call: ポインタ1増+ポインタ位置に戻りアドレス収納 +指定アドレスへジャンプ •return: ポインタ位置のアドレスに移動+ポインタ1減

(76)

割り込み処理(例:キーボードが押された場合)

00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 30H 31H 32H 33H 34H 35H 36H return ② ③ ④ ① 割り込み 発生 1. 現在の処理終了後→ 割り込み 禁止+ポインタ1増+ポインタ位 置に戻りアドレス収納+指定ア ドレスにジャンプ 2. return: ポインタ位置のアドレスに 移動+ポインタ1減+割り込み 禁止解除 割り込み 発生 複数機器の同時 の制御等に有効

参照

Outline

関連したドキュメント

With hysteresis not enabled (see ALS_CONFIG register), the ALS_TH registers set the upper and lower interrupt thresholds of the ambient light detection window. Interrupt

Since bits [b4 – b0] of the MOSI register contain the smart card data, programming the CRD_VCC output voltage shall be done by sending a previous MOSI message according to Table 2

In Default Interrupt mode, exceeding HTHL causes an interrupt that remains active indefinitely until reset by reading Interrupt Status Register 1 at address 01h or cleared by

A WRITE Operation Where DATA from the Master is Written in SPI Register with Address 2 Followed by a READ Back Operation to Confirm a Correct WRITE Operation. Registers are updated

The NEW DATA is written into the corresponding internal register at the rising edge of CS Registers are updated with the internal status at the rising. edge of the internal

To write data to a TS register, or to the on−board EEPROM, the Master creates a START condition on the bus, and then sends out the appropriate Slave address (with the R/W bit set

ADDMULSUB Add two XY data registers, multiply the result by a third XY data register, and subtract the result from an accumulator ADDSH Add two data registers or accumulators and

The only way to leave the overcurrent / local thermal shutdown state and at the same time clear out the output status and APPINFO register is to command OFF the affected driver..