, i! x6 O# f; t, t 基于串口的虚拟示波器模块功能介绍
9 B7 A* P/ r- y, o$ M( t1 R |
# m, {# r) b6 s1 o- ^ o' l模块名 C8 C. O1 T6 H& t& r% E* Z
| # l+ N8 |" ]& K9 T P
模块功能
/ R( X+ x2 i8 r |
k' R. u% D6 A5 _( e; D( w: i- |/ ~
Uart_Byte_Rx
! a& f S0 |8 N2 {- c |
9 {% ^' `* ~3 f# _+ \* g串口字节接收模块,负责进行PC机发送指令数据的接收工作;
* ]/ K& Q, d, E4 C: J. P+ P3 T |
( H) w0 E7 _# F9 S" t# ~/ B
CMD$ [( B! ~( h. f4 `. b3 a
|
& l; s4 |; ~* k4 A& R串口指令解析与控制模块,该模块通过解码PC机发送的指令数据序列,获取控制命令,转换为Memory Mapped Master总线,以实现上位机通过串口控制下位机(FPGA)中各模块寄存器的功能;! C$ v" N" A7 n
|
# R q: o. w1 g* Q4 KSample_Ctrl& u5 v- }6 G% T( S E( O+ b
|
' `, ~' j$ d! j4 JADC采样速率控制模块,该模块通过控制使能ADC采数的速率来调整ADC的采样率;
0 m* w& |. M( e |
- @( f! M) L# d
UART_Byte_Tx9 U: N) `6 H1 W7 P
| ) p) a# Y0 z Y
串口字节发送模块,该模块负责将需要发送的字节数据通过UART协议发送出去(发送到上位机)
3 z( q/ c: F! u: |( d6 e |
. y$ q# E$ p* _% \# d8 r$ s6 W" M0 y# v
UART_Tx_Ctrl
! A' C9 @+ U: W+ L9 P |
4 [$ g* n% r3 X3 w串口发送控制模块,根据数据有效标志信号来控制串口发送模块将数据出去5 |! U* s2 S+ ]' x
|
$ c4 C5 A$ D5 `4 Htlc549_Driver1 d. M! M( C& R2 Q$ @' i
|
' v4 \" e2 y- U, [2 Q7 ?TLC549模数转换(ADC)芯片驱动模块,负责驱动TLC549进行模数转换,并将转换结果以字节格式输出。
, J* o3 J, f) q0 G: H9 t( }2 J |
$ A: U, v" i g- P
DDS
7 |& a. M' G1 o- T7 s |
$ E3 E. M+ G) J# M" J2 _DDS信号发生器模块,该模块生成一个固定频率的正弦波,在没有外部信号发生器的情况下,可通过该模块生成正弦波,并将输出数据接入到采样部分,以模拟采集正弦波信号并在上位机显示% {/ z& N5 L' o; R. p
|
( q7 E2 E- [* P+ |Mux1- K- q' C) Y, r, i5 e
| 5 Y$ U! \" c" }! e
AD采集结果和DDS数据结果多路选择模块,在测试时,用户可以选择需要采样的数据为内部信号发生器生成的正弦波数据(供演示用)或者ADC采集到的电压结果(实际测试)
" K. l) u. C& l- F3 @ |
9 k0 ^0 |( `4 p% L8 FMux29 m3 o7 t; }) ~1 O
| * [, ?1 p" f' S+ g" w9 l
AD采集结果和DDS数据结果有效标志信号选择多路器,在ADC和DDS都处于工作的状态下,通过该多路器来实现数据有效标志信号的选择8 l5 F: Z5 |" g. C2 V
|
8 T% X: @' Z& M! D
normal_keys_detect+ t& D: }* Y" m, N
| $ Z% ?% g3 S! K: K, }) E
独立按键消抖模块,通过该模块来实现AD数据和DDS数据的切换,即在演示和实际测试中进行切换。
. o6 X1 X. i5 _1 J, `1 Y+ f7 g) O |
$ N8 Y/ B2 M: f: H0 D. r4 {
基于串口的虚拟示波器端口和信号介绍; C8 C9 Q6 }7 d. @% J- [
|
# G: Y/ m" D8 [. Q
端口
Q3 p$ R. C1 M5 N6 N& z1 Q R- m+ x- W |
* b' r. _% {5 e) _1 k% q( d# p位宽1 E9 n* A* c, v8 g$ t
|
2 l- c% q8 \# d1 w8 ^: t! x1 u" c端口功能描述' F% i; a, l, M/ R! y. `3 f( Y! q/ @
|
4 {, I, i$ M$ B" zClk. O, i$ A9 N6 G* |/ U' E7 D
| 9 b7 j& A3 u" N6 {
1
4 v3 ?% _- l# w- n# Y& L# T | : |8 W& b1 Y0 W5 `1 |8 S9 R
系统时钟,50M8 M8 G* ^) g- B& L M/ f
|
2 B7 M- w3 e8 H6 Z# F9 U" Y
Rst_n5 e& F) L- ]+ M! W0 T7 o
|
. X# U& K4 W! I( n& f1
" }* n5 |5 u$ T5 S' { | / Z7 |6 _) @0 L4 t
全局复位,低电平复位
& n, _+ j; ^' Y& Y5 }6 I |
. p) j0 y5 r, H/ {
Rs232_Rx
j( R! h% U7 K0 V- S. d |
Z6 Z9 `5 M/ v' q0 A- t y- I1
$ a( e5 d2 Y H) a | 3 H' g8 y7 B5 ^7 k
串口接收引脚 o, h' P2 s8 z' r4 o
|
5 s2 ]# G" z" f4 n' A. |+ L- BRs232_Tx% l* J8 ~0 W6 J, O- ~! h
|
- U9 w/ c* F) w/ f' t, g- m9 l18 f/ ]0 B* i# e8 Z0 S0 L F
| 2 I* k! v# v( _* L/ ^' M3 t
串口发送引脚
# z7 D) }1 {8 P$ W" E* C% e |
) {6 {! U( q5 q8 E: a( rKey_in
# F% m/ F N8 c* |) V |
( X$ F8 J5 m+ F( F( P* X8 C30 V% U2 j! u& u& B' d8 H
|
& W! C$ R. i: _按键输入2 h8 Z. L' M. r! @% D
|
& M7 J. ?9 S8 M$ nADC_Din& U* C/ o# H. Q8 h
|
+ M6 q* |, ~3 l6 I% r& R" e19 z+ w% X9 b& V/ {/ _
| - D3 O* C2 p" a: s) \/ O
ADC芯片数据引脚% Y$ u7 u0 W, c- q- f
|
/ X0 z* A0 ?. y5 c* O6 E( FADC_Clk3 a* x( t4 O' {+ Z1 n* x1 j
| # s2 l- @5 u2 N' `7 c
1$ @0 ^" m3 A$ P6 J6 t6 i$ v/ H
| . I3 U* I/ |+ T
ADC接口时钟
7 o- ?) `' A5 t# ]8 w |
2 v& L- F3 S3 o) ^4 e& HADC_Cs_n
$ q. T0 \% F+ f; F6 u |
; ^4 W! K, A1 P8 |10 j! j% a0 Q+ ?& p0 W# r' K
| 8 a* e* H; E4 B
ADC芯片片选信号
9 O. I& Q) u* ?+ B8 v |
4 X" F6 f4 g% q7 R2 R内部信号
. Q, |/ g0 Y7 E) c# ?9 F2 h8 \- F | ' u; c& e* }5 P- k
位宽
- X5 j8 c: }8 ^0 X |
* K$ V% e! U& `8 U; C$ v% ]信号功能描述
# f: e" y8 U8 a S0 L" F; n9 V |
9 i/ L3 L1 w& |- i \$ d4 d
Baud_Set
8 [7 V+ D1 M* \3 j7 f) [' k) ~ | ' o; R5 w& {8 @/ T; d$ S
3
" T) k* z- q8 h7 `; O6 R |
) ?0 h; @) F5 I. j. i' Q波特率选择信号,对应波特率如下:
/ q+ c+ S" k" P4 U" ]4 `; F5 h000: 9600bps9 Z' i; X" g! O: i1 y
001: 19200bps6 L" {$ ^1 M& F/ M5 ]9 E
010: 38400bps
- k# I/ O4 P/ ]" }( ^! e011: 57600bps, p0 e3 p4 l$ |; a. B
100: 115200bps4 d1 K$ g% d0 G% i3 K4 f& _
101: 230400bps* t3 O% r; @( E/ }+ ?( A- C
110: 460800bps
/ w/ J6 l; ?" h5 ^+ q111: 921600bps. p% X. b9 F i! \5 n) e8 ?
|
. g: r2 K' ~8 d
Rx_Byte: x1 n- g2 `5 J- }
|
0 J4 E9 N/ i, ]' P6 u: [7 g8' V! d# w ^# _, m' S: ], I
| + h4 n0 Z8 E4 ?, g1 o
串口接收到的字节数据( L( T" B0 ?* d! }2 L s' }# c
|
7 }' v/ g! Y4 L7 ARx_Int
% f$ N5 m5 n7 r# m8 ] |
0 T9 X& {. S. [, E15 l, V8 {, r1 }' M8 a& G
|
% W: t& M. b% D/ e: o; f5 y串口接收字节成功标志信号,每次接收成功,此信号产生一个时钟周期的高脉冲
( x- a8 i9 _5 @# {% N+ T! y' V( z |
. e* `+ L3 ?4 L+ P% @Byte_En, `: F! \5 a- H# M5 q
|
+ R0 Y$ \6 L! @1 l$ F19 ^( L1 q. g2 g& e
| ) ^7 M, V- u8 {* K7 X
串口字节数据发送使能信号,每一次一个时钟周期的高脉冲使能一次串口字节发送。
7 Z3 u9 r, x8 K; t: x+ n |
+ S. |! O) i7 {7 K' Z% aTx_Done
2 H8 n/ L4 m1 |$ X" f9 o: B |
# w1 d" ^+ z+ k: S6 K+ s1
7 g( Q- d3 U. J* L( [0 S |
) i" e2 ` Y# S* j串口发送字节数据完成标志,每个字节的数据发送完成,此信号产生一个时钟周期的高脉冲9 z. U5 c [2 s5 q) B
|
$ d9 Y5 U- f: N5 M) U1 y
ADC_En
" v# _0 {: v: y% E6 [! t3 N |
1 P2 u/ c7 C' d1 W/ n! L$ F1
5 }( i1 I" { X" n |
" m0 x a# P' V0 k% q) ~; nADC单次转换使能信号,每一次一个时钟周期的高脉冲使能一次AD转换
9 [, _/ X3 X g |
) H% m0 J1 f. i* y' `ADC_Data
0 x* S$ S/ p0 \" L0 q2 M9 ]( e2 } | + s4 r" t0 ~8 r6 |7 Z
8. J6 Z, E3 E3 b" h% U3 P% m* J
| ) A9 G: w" M6 g& m6 a* T+ e- b
ADC采样结果; A1 d3 s' e4 s' W% u
|
1 s, [* N! ?: W# f) H
ADC_Flag
6 E2 m' h5 R# t3 @& i* Q | 0 j6 Z" d4 _( S4 N+ B' E* ^
1$ O# X2 [( y+ g; X/ S; x$ k! T6 C
|
U2 ~! z6 _' Y! v2 `. cADC转换结果有效标志,每次转换结果有效后,此信号产生一个时钟周期的高脉冲
# T" ^% f/ H) q2 f |
+ @6 ~' W' u2 }' N
ADC_Busy
0 R. l- k3 U/ g% k | : k7 `% p8 R4 w6 x! l! q
1
% t9 d# e5 c) Q9 q! V2 V( L; z+ z |
5 d. e7 i7 e- CADC工作忙标志,高电平表明ADC正处于转换状态,新的转换命令将被忽略,只有当该信号为低电平时,外部控制逻辑才可触发新的转换
$ q% w! g- D- I; M |
* U5 Y' P, q; Z8 t8 p. Sm_wr
' V9 i9 T* M) e$ t: x | 8 i$ {* M5 Y4 o8 D( m* d7 i, Q$ {6 p
16 P9 E. f8 D3 Y: ?$ i V
|
3 Z0 u4 n2 c s" p. k- `主机写数据的请求,为1表明有写请求/ T: k4 q1 I9 T$ Y: Z% v9 n8 u$ j
|
! |+ ]$ I" [$ F2 b7 L Om_addr
l; y l5 h+ M. S. l. B1 Y |
9 T' ^1 m! I* k; ]2 I j# X4 _( V8
8 Z5 y* ^* R& ?: b7 O. }# c2 u | 3 `$ w2 P# r8 R( Q2 P
主机写数据的地址
( F* U$ D! v: u8 G O |
/ j+ y) Z8 E! @m_wrdata7 W9 O: j D( P L! |9 W9 r# O6 ?
| % R/ x9 P6 C; Z' Y- j
16
, [( ^ v# E$ J$ ] | # @. ]2 \; J/ u% Z ~" L7 J
主机写数据: c$ ^9 X8 K1 y4 l4 b2 k$ h2 m8 Y+ y( [
|
1 S0 J% O1 L: e/ | HDDS_Data, w8 q7 i8 o5 Y# @& n
|
* V9 Y* ~$ o4 [82 k3 C a3 C& _3 J; {# O1 g# ^; q
|
) \7 D! Y8 v! K$ @, ^' c" A! HDDS生成的波形数据9 @2 ?9 P, T9 f: `4 u, C
|
3 a# P4 O2 i" @) ZDDS_Flag& p( ]( t: q, P' O3 Y' n
| - M$ h1 ]6 k6 S/ n9 [. L* H
1
7 `+ }. }2 C4 l. ~, ~ |
N3 ~5 y/ u; Y" fDDS采样使能标志,该信号由DDS采样速率控制进程产生 ! i- L; I: ~* X9 W! N0 S7 [) `. l. ^
|
$ g- V7 O2 y- _" ^: v, FData_Flag
& o$ Y. S+ D+ @1 b4 p | ( ^# n; [ E. W0 F* w
1
0 B1 X3 y4 U- `0 @7 h0 T/ m1 p | 4 V* b% m1 w2 P. W A6 e L
数据有效标志(根据用户按键进行选择DDS_Flag 或ADC_Flag)
( u4 P8 u) H- E) C' j7 S: z |
5 Z& C: Z% K+ P1 N; \
Data_Byte0 U) N* Y. s. L% \3 J. {- I
|
5 ^, l! _4 y9 w/ W. Z8 }: b0 y6 D$ C
|
/ I% y5 s: \5 }串口发送字节数据
; X- h* u/ n* n5 J. R+ ` |
$ p- j B- k) [% U9 d
Data_Sel- X7 Y7 S9 q& }/ @ l
|
+ S3 r/ n b+ U }1 c. Q2 k* O6 s' q3 i* H8 R- d
|
, s; \& i% A' A+ W, m6 ~% _数据选择信号(选择串口发送DDS_Data 或 ADC_Data),为1选择DDS_Data,为0选择ADC_Data
7 E! E9 r4 A6 j# c5 l6 ^2 }$ { |
2 |8 h6 q" r; t \Flag_Sel
4 y6 u3 k8 F- F+ S | 4 Z' H5 l% L/ U4 V6 G3 H
1
) n5 m: I2 _+ m' X* n6 w* ~ |
|4 A {1 X0 u! p* {3 n1 ~数据有效标志信号选择信号(选择DDS_Flag 或ADC_Flag)为1选择DDS_ Flag,为0选择ADC_ Flag
; K2 K; ~. l& f( S$ ?6 h |
% I* P! v8 l3 B
Key_Flag: J2 W1 Z J# i4 R
|
: V. Y3 h C9 a" h1
/ J) W2 @: Y! c! [ |
! r9 h! K2 a2 A) ^& B6 D7 V按键检测成功标志信号,每次按键检测成功该信号产生一个时钟周期的高脉冲信号
. |7 y# b, I. t7 K |
* W+ W" ^0 }( @6 P5 Z: o( [8 ~Key_Value
. s+ T. u+ ^6 e" i' k% ? | : g5 O- c7 Z3 n
39 ^& s6 @6 Y# D3 H9 W6 Y% U
|
; A& U8 x7 g: @8 ^+ A' @按键检测结果
h: v+ \ Z( ]( _# Z |