制御回路 どんどん技術的説明ばかりになってしまいますが・・
制御ロジック(タイミングコントロール)
制御ロジックは、A/DコンバータやFIFOメモリの動作をコントロールします。ここで、サンプルスピードや、サンプリングモード(10M以下通常モード、20M高速モード、40M交互サンプルモード)
WLA1640では、基本的に20MSa/sの8ビットデータを2チャンネルサンプリングできますが、制御信号を半クロックずらすことによりチャンネル数が減少しますが、倍速(40M)でのサンプリングを可能にしています。
この部分は、クロックが80Mで動くこのシステムのなかで一番高速な部分です。
最高速サンプリング時、A/Dコンバータと、FIFOメモリに必要な制御クロックのデューティ比が異なるため、それらの制御信号を生成するために80MHzという高速クロックを使用しています。
この下にPALASMのソースファイルを添付しています。
余談ですが、これを設計した当初、環境がPALしか使えない環境(ないし、PALをGALで置換は可能だった。)でGALを自由に使うため、.JEDファイルを手作業で書き換えて行くという強行手段を使用しました。)
*PLDとは?
PLD(プログラマブルロジックデバイス)は、チップの中の論理回路を自分で設計して書きこめるものです。単純な組み合わせ論理から、小さなマイコンのようなものまで作れるため、多くの74シリーズICを組み合わせて機能を実現する必要がなくなりました。
オーソドックスなものでは、一回きりしか書きこめないものとして、(メモリーでいえば、P−ROM)PALがあり、(今はほとんど廃番)電気的消去可能なものとしてGALなどが使われますが、最近は、共通化された書きこみ方式による、5V書き込み・消去・テスト可能なISP(インシステムプログラミング)タイプのものがはやりで、サイズが大きいCPLDや、FPGAのISPタイプがたくさんでています。
値段としては200円くらいから、数万円まで、いろいろあります。
そのほかのサンプリング部制御回路
このほかに、データソースの切り替え(A/D出力orディジタル入力など)、アナログ入力信号処理部の、ゲインコントロール(*1から*10)、トリガ設定など、マイコンからサンプリング部への制御信号として計93ビットを用意しています。これらの信号のうち、本数が多く、拡張による増加可能性があり、しかしながら速度は低速でよい部分(80ビット)は、クロック同期シリアルI/Oを使用し(ポートがマイコンに内蔵)、受ける時はHC595(SIPOラッチ付きシフトレジスタ)でパラレルデータに戻して使用しています。なお、トリガ設定データについてはPLD内に48ビットシフトレジスタを内蔵させましたので、実際に使用しているシフトレジスタ数は4つで、一般的に行われるであろう、マイコンのPIO増設に比べて省スペース化も図られています。
WLA0110設計ファイル
TITLE WLAC01
PATTERN BLUE
REVISION 1.0
AUTHOR T.O
COMPANY
DATE 981114
CHIP WALC0110 PAL16R8
CLK M0 M1 NC NC FRD2 FRD SUBRS RESET GND
/OE C3 C2 C1 C0 FFCK1 FFCK0 ADCK1 ADCK0 VCC
;MODE (M1,M0)=(1,1) 40M<-----CHANGED!1
; (1,0) 20M<-----CHANGED!1
; (0,0) 10M
;ADCK INVERTED TYPE <-----CHANGED!2
EQUATIONS
C0 :=RESET*/C0
C1 :=RESET*/C1*C0
+RESET*C1*/C0
C2 :=RESET*/C2*C1*C0
+RESET*C2*/C1*/C0
+RESET*C2*/C1*C0
+RESET*C2*C1*/C0
C3 :=RESET*/C3*C2*C1*C0
+RESET*C3*/C2*/C1*/C0
+RESET*C3*/C2*/C1*C0
+RESET*C3*/C2*C1*/C0
+RESET*C3*/C2*C1*C0
+RESET*C3*C2*/C1*/C0
+RESET*C3*C2*/C1*C0
+RESET*C3*C2*C1*/C0
ADCK0 :=/(/C2*/C1
+M1*C2*/C1
+/M1*/C2*C1)
ADCK1 :=/(/M0*/C2*/C1
+/M0*M1*C2*/C1
+/M0*/M1*/C2*C1
+M1*M0*C1*/C0
+M1*M0*C1*C0)
FFCK0 :=M1*/C1*C0*SUBRS
+/M1*/C2*C1*C0*SUBRS
+/M1*C2*/C1*/C0*SUBRS
+/M1*C2*/C1*C0*SUBRS
+/M1*C2*C1*/C0*SUBRS
+/FRD
+/FRD2
FFCK1 :=M1*M0*C1*C0*SUBRS
+M1*/M0*/C1*C0*SUBRS
+/M1*/C2*C1*C0*SUBRS
+/M1*C2*/C1*/C0*SUBRS
+/M1*C2*/C1*C0*SUBRS
+/M1*C2*C1*/C0*SUBRS
+/FRD
+/FRD2
WLACA211設計ファイル(2個使い)
TITLE WLAC02
PATTERN BLUE
REVISION 1.1
AUTHOR T.O
COMPANY
DATE 980830
CHIP WLAC0211 PAL20R8
;64 STAGE PRESETTABLE BINARY COUNTER WITH 3 TO 1 DATA SELECTOR
;R7 VERSION
;CHANGE DEVICE NAME IN JED FILE PAL20R8->PAL20A7 OR PAL20B7
; AND USE R7.EXE FOR GAL WRIGHTING.
CLK X2 X1 S0 S1 S2 S3 S4 S5 PS1_ SEL0 GND
/OE SEL1 CR A5 A4 A3 A2 A1 A0 Y X0 VCC
EQUATIONS
;3 TO 1 DATA SELECTOR
;**
Y :=/SEL1*/SEL0*X0
+/SEL1* SEL0*X1
+ SEL1*/SEL0*X2
;/2 - /64 DIVIDER
CR := A5* A4* A3* A2* A1* A0
A0 :=/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S0
; ^ FULL COUNT NEXT
A1 :=/A1* A0 *PS1_
+ A1*/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S1
; ^ FULL COUNT NEXT
A2 :=/A2* A1* A0 *PS1_
+ A2*/A1*/A0 *PS1_
+ A2*/A1* A0 *PS1_
+ A2* A1*/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S2
; ^ FULL COUNT NEXT
A3 :=/A3* A2* A1* A0 *PS1_
+ A3*/A2*/A1*/A0 *PS1_
+ A3*/A2*/A1* A0 *PS1_
+ A3*/A2* A1*/A0 *PS1_
+ A3*/A2* A1* A0 *PS1_
+ A3* A2*/A1*/A0 *PS1_
+ A3* A2*/A1* A0 *PS1_
+ A3* A2* A1*/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S3
; ^ FULL COUNT NEXT
A4 :=/A4* A3* A2* A1* A0 *PS1_
+ A4*/A3*/A2*/A1*/A0 *PS1_
+ A4*/A3*/A2*/A1* A0 *PS1_
+ A4*/A3*/A2* A1*/A0 *PS1_
+ A4*/A3*/A2* A1* A0 *PS1_
+ A4*/A3* A2*/A1*/A0 *PS1_
+ A4*/A3* A2*/A1* A0 *PS1_
+ A4*/A3* A2* A1*/A0 *PS1_
+ A4*/A3* A2* A1* A0 *PS1_
+ A4* A3*/A2*/A1*/A0 *PS1_
+ A4* A3*/A2*/A1* A0 *PS1_
+ A4* A3*/A2* A1*/A0 *PS1_
+ A4* A3*/A2* A1* A0 *PS1_
+ A4* A3* A2*/A1*/A0 *PS1_
+ A4* A3* A2*/A1* A0 *PS1_
+ A4* A3* A2* A1*/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S4
; ^ FULL COUNT NEXT
A5 :=/A5* A4* A3* A2* A1* A0 *PS1_
+ A5*/A4*/A3*/A2*/A1*/A0 *PS1_
+ A5*/A4*/A3*/A2*/A1* A0 *PS1_
+ A5*/A4*/A3*/A2* A1*/A0 *PS1_
+ A5*/A4*/A3*/A2* A1* A0 *PS1_
+ A5*/A4*/A3* A2*/A1*/A0 *PS1_
+ A5*/A4*/A3* A2*/A1* A0 *PS1_
+ A5*/A4*/A3* A2* A1*/A0 *PS1_
+ A5*/A4*/A3* A2* A1* A0 *PS1_
+ A5*/A4* A3*/A2*/A1*/A0 *PS1_
+ A5*/A4* A3*/A2*/A1* A0 *PS1_
+ A5*/A4* A3*/A2* A1*/A0 *PS1_
+ A5*/A4* A3*/A2* A1* A0 *PS1_
+ A5*/A4* A3* A2*/A1*/A0 *PS1_
+ A5*/A4* A3* A2*/A1* A0 *PS1_
+ A5*/A4* A3* A2* A1*/A0 *PS1_
+ A5*/A4* A3* A2* A1* A0 *PS1_
+ A5* A4*/A3*/A2*/A1*/A0 *PS1_
+ A5* A4*/A3*/A2*/A1* A0 *PS1_
+ A5* A4*/A3*/A2* A1*/A0 *PS1_
+ A5* A4*/A3*/A2* A1* A0 *PS1_
+ A5* A4*/A3* A2*/A1*/A0 *PS1_
+ A5* A4*/A3* A2*/A1* A0 *PS1_
+ A5* A4*/A3* A2* A1*/A0 *PS1_
+ A5* A4*/A3* A2* A1* A0 *PS1_
+ A5* A4* A3*/A2*/A1*/A0 *PS1_
+ A5* A4* A3*/A2*/A1* A0 *PS1_
+ A5* A4* A3*/A2* A1*/A0 *PS1_
+ A5* A4* A3*/A2* A1* A0 *PS1_
+ A5* A4* A3* A2*/A1*/A0 *PS1_
+ A5* A4* A3* A2*/A1* A0 *PS1_
+ A5* A4* A3* A2* A1*/A0 *PS1_
+ A5* A4* A3* A2* A1* A0 *PS1_ *S5
; ^ FULL COUNT NEXT
SIMULATION
TRACE_ON CLK PS1_ S5 S4 S2 S3 S2 S1 S0 A5 A4 A3 A2 A1 A0 CR SEL1 SEL0 X2 X1 X0 Y /OE
SETF /PS1_ OE /SEL1 /SEL0 /X2 /X1 /X0
CLOCKF CLK
SETF PS1_
SETF X0
SETF SEL0
SETF /X0 X1
SETF SEL1 /SEL0
SETF /X1 X2
SETF /SEL1 /SEL0 /X2 /X1 /X0
SETF /S5 /S4 /S3 /S2 /S1 S0
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
CLOCKF CLK
以下略
どうも負論理表記を好みません・・
いまとなってはこれも少し時代遅れの記述法になりつつあります。
戻る