REKLAMA

mux.pdf

Częstościomierz 1Hz - 1 GHz

FPGA załatwia liczenie krótkich czasów (poniżej 1us). Zacząłem to robic na TTL ale jak zaczęły się mnożyc i szansa na błąd wzrastać sięgnąłem po FPG, cena około 10zł. Biorąc pod uwagę zajmowana powierzchnię to warto. No i poprawienie błędów nie wymaga skalpela. Poza tym można zasymulować przebiegi wejściowe, obejrzeć wyjściowe. Pomyślałem też aby umieścić tam multiplekser wejściowy i dzielniki wstępne. FPGa działa do 133MHz więc dałem na zewnątrz 74ABT74 200MHz. Dwa załączone PDF + jeszcze trochę zatrzasków, liczników mutiplekser i kilkanaście bramek, zastępuje FPG 44pin (35 do dyspozycji). Wynik symulacji: http://obrazki.elektroda.pl/3440242600_1488052771_thumb.jpg http://obrazki.elektroda.pl/1868893500_1488052862_thumb.jpg Układ EMP3064 jest wykozystany w blisko w 50%. Opiszę jak to (ma)działa(ć). Pomiar czasów rzędu us realizuje timer z przechwytywaniem. Krótsze czasy pomaga mierzyć FPGa. Przyjmijmy, że poprzedni pomiar sie odbył lub FPGa jest po resecie i licznik w FPG jest zerowany. Gdy mierzony sygnał (przebieg T) przyjmie poziom wysoki, bramka AND "przepuści" sygnał zegarowy 100MHz na wejście licznika. Opadające zbocze mierzonego sygnału wygeneruje najpierw impuls zatrzaskujący zliczone impulsy (przebieg 5Q.CLK) po czym zeruje licznik (1QD.CLRN) przygotowując licznik do następnego pomiaru. Jednocześnie sygnał ICP przyjmuje poziom niski powodujący przechwycenie pomiaru timera w mikrokontrolerze. Jeśli sygnał był krótki mikrokontroler zliczył 0 impulsów (może 1). Stan ICP nie zmieni się do czasu odczytu wyniku pomiaru strobem RD przy wysokim stanie linii A0. Ze względu na to, że mikrokontroler komunikuje sie z FPGa 4-bitowo odczyt podzielony jest na dwa półbajty. Po odczycie starszego pół bajtu ICP przyjmie poziom wysoki i umożliwi zatrzaśnięcie wyniku kolejnego pomiaru. Prawda, że proste? Sygnał można zanegować bramką exor i mierzyć czas poziomu niskiego (wejście POL FPGA). Ze względu na synchroniczne generowanie impulsów kasujących i zatrzaskujących wynik zliczania minimalny czas pomiędzy pomiarami to 3 okresy sygnału zegarowego 100MHz (jeśli nie pomyliłem sie w obliczeniach - przesymuluję to i napisze jak jest). Co do wyświetlaczy, to zrezygnowałem z 4x20 na rzecz dużego negatowywego 2x16. Dodatkowe wyświetlacze będą sterowane po IIC. LED standardowa aplikacja SAA164 (4 szt). LCD sterowany atmega169. Ma ona wbudowany sterownik 4x25 segmentów (w obudowie 100pin 4x40). niewielkimi LCD można sterować prosto z mikrokontrolera ale przy 8x7-seg potrzeba dużo wyprowadzeń. Sterowanie multipleksowe już takie proste nie jest (kilka poziomów napięć) dlatego zajmie sie tym kontroler AVT'ka. Może zrobić sterownik lamp NIXE? Fajne połączenie, miernik z lampami podłączony do kompa przez USB :-) Myślałem też o opcji VIDEO. Dodatkowy AVR może generować obraz dla CRT lub VGA (o HDMI czy DVI na razie zapomnijmy). Zaleta monitora - duża liczba informacji, ale czy ma sens skoro wyniki będą dostępne przez USB? Wtedy aplikacja na kompie może wyświetlać dużo informacji i łatwo zrobić dokumentację (zrzuty ekranowe). PS Wiem, że można dać Xilinx, będzie szybszy, bo może reagować na obydwa zbocza, można dać zegar 200MHz itp, itd. Mnie pomiar czasów rzędu 10ns z odstępem co najmniej 30ns wystarczy a jeśli ktoś już zrobił lepszy miernik to niech pokaże go na Elektrodzie.


Pobierz plik - link do postu

1

2

4

3

VCC
VCC

VCC

D
C?
100nF
VCC
GND

LF

INb

1

3

U?A
3

2

R?
74ABT04D
330R

VCC

EnINb

GND

5

4

14

1

7

C

VCC

R?
74ABT04D U?A
330R
74ABT125D

VCC
R?
220R
U?B
3
4

U?
2
D1
12
D2
1
CLR1
13
CLR2
3
CLK1
11
CLK2
4
SET1
10
SET2

GND

R?
EnLF
220R U?A
1
2
2

VCC

10

GND
TTL

GND

U?
7
STB
PRE011
A
PRE110
B
PRE2 9
C
/1
4
D0
3
/2
D1
/4
2
D2
1
/8
D3
/16 15
D4
/32 14
D5
/64 13
D6
1/5M 12
D7

U?
2
R0(1)
3
R0(2)
14

8
1

VCC

PRE[0..2]
6
Q1
8
Q2
5
Q1
9
Q2

6

U?B
74ABT125D

R?
EnTTL
220R U?C
5
6
9

GND

74ABT74D

GND

74ABT00

R?
74ABT04D U?C
330R
74ABT125D

CKA
CKB

4
NC
6
NC
7
NC
13
NC
12
QA
9
QB
8
QC
11
QD

B

13

EnHF
U?D
9
8
12

HF

11

U?E
11
10

W

R?

2 13

D?
IN

VCC

R?
10k

2
D1
12
D2
1
CLR1
13
CLR2
3
CLK1
11
CLK2
4
SET1
10
SET2

VCC
12

P?
3MHz

200MHz
U?F
74ABT04D
VCC

A

VCC

C?
C?
100nF 100nF
GND

R?
1k

C

GND

B

IN GND

GND
1

Fout

R?
1k

ABT - 200MHz
AC(T) = 133MHz
F - 100MHz
HC(T) - 35MHz

U?

JP?
200MHz

5
6

D?

1k
74ABT04D U?D
74ABT04D
74ABT125D

R?
330R

Y

74HC151
VCC

74HC93D
R?
220R
GND

D

C?
100nF

C?
100nF

6
Q1
8
Q2
5
Q1
9
Q2
Title

74AC74D
Size

GND

Number

Revision

A4
Date:
File:
1

2

3

25-Feb-2017
Sheet of
d:\Dokumentacje\Czestosciomierz\PCB\Czestosciomierz.ddb
Drawn By:
4

A