1 `4 a$ f3 B% W" j
基于串口的虚拟示波器模块功能介绍
9 e- {# f0 L) q' N0 A; r0 s8 u |
6 Y0 J1 F' y- _$ G
模块名
2 b8 r. E1 h& I& l( S | . O: [5 \. `/ \$ i4 g2 S* Z
模块功能2 [6 k y6 K% d& W" E
|
8 ~, d+ s8 `% c3 n" H6 N; {Uart_Byte_Rx. D% R/ J' s. [ D
|
) t+ U9 G( }& ]. K& m串口字节接收模块,负责进行PC机发送指令数据的接收工作;/ y- t" h# [" R5 M, N
|
$ |- E" v6 ]/ G, SCMD. k# ? h3 F ^
|
+ @" z/ U. M' B% Y: y" b H串口指令解析与控制模块,该模块通过解码PC机发送的指令数据序列,获取控制命令,转换为Memory Mapped Master总线,以实现上位机通过串口控制下位机(FPGA)中各模块寄存器的功能;
8 {/ f7 Y: V6 q" p |
1 a* W% c; M4 u% i2 SSample_Ctrl
$ k! ? ~1 A9 N$ @! R: j$ @ | , ]! h$ q% Z) Q+ N6 g
ADC采样速率控制模块,该模块通过控制使能ADC采数的速率来调整ADC的采样率;
4 | A' {5 e4 u6 W& K* h |
( J m& Q8 b' u0 X, S* _UART_Byte_Tx# ^; a v. y5 z H' ?
| % l5 q2 W% M1 U; u+ A
串口字节发送模块,该模块负责将需要发送的字节数据通过UART协议发送出去(发送到上位机)
' a+ m! S; s+ g0 B9 ?$ R. k5 | |
8 O& g. T# U) n7 x; UUART_Tx_Ctrl
4 ]" H' s/ P! e6 b | & w( L" ~% f; x, _. G+ G
串口发送控制模块,根据数据有效标志信号来控制串口发送模块将数据出去
' z) l' g, i( E |
# l( S N9 H8 i5 f& @0 ^
tlc549_Driver# j, R8 H3 d0 R& j$ `
|
! {. M* r' T% h9 Z* ^/ q; zTLC549模数转换(ADC)芯片驱动模块,负责驱动TLC549进行模数转换,并将转换结果以字节格式输出。 Z) z2 ]' i/ o" C, L
|
D& H4 j# w$ l. m0 GDDS: n( l k+ |0 E% a% J
| : W1 a, [4 m- L& k6 o
DDS信号发生器模块,该模块生成一个固定频率的正弦波,在没有外部信号发生器的情况下,可通过该模块生成正弦波,并将输出数据接入到采样部分,以模拟采集正弦波信号并在上位机显示; x8 N3 E3 R7 T2 p
|
2 r# K+ N: z% Y' ]# AMux1
/ p+ {! x. m+ {" Y3 M ~8 _8 | | " c8 p& x) C" I7 z4 [
AD采集结果和DDS数据结果多路选择模块,在测试时,用户可以选择需要采样的数据为内部信号发生器生成的正弦波数据(供演示用)或者ADC采集到的电压结果(实际测试)
) Z9 Q" F) y0 x) v- X |
$ c7 \4 [4 w" r- G
Mux2
2 G$ {# S7 `* g5 h- s+ E% w: }# k |
* P% ^# T& z. c1 G8 ZAD采集结果和DDS数据结果有效标志信号选择多路器,在ADC和DDS都处于工作的状态下,通过该多路器来实现数据有效标志信号的选择
' y- ?5 E, X6 k" D; w4 W |
5 @5 }+ K, s/ k0 O4 z& }/ Y4 snormal_keys_detect( l8 D' v+ L5 o, ]
|
. D& p) ^( B4 ]" L; ]独立按键消抖模块,通过该模块来实现AD数据和DDS数据的切换,即在演示和实际测试中进行切换。
6 q% ?. {" F! |& n+ G |
5 x* o+ Q1 w2 `- O3 n3 e3 S. E, Y
基于串口的虚拟示波器端口和信号介绍
: |9 B" J& b! H6 c/ M |
' N, H+ L5 ~# b* D端口6 M i) n& L4 F, O) Z; y8 v1 H, M
| # [! o/ |" J1 N1 ]
位宽
7 W4 B7 H1 h5 P C# S |
3 B! A+ N' t" g6 D4 C6 G& P. j" R3 N端口功能描述' v, z- y V# N9 V- Z- y- E
|
7 Q8 o! `* J- HClk
0 g2 Z$ f$ [, e8 v* L$ d | ( V; d, }+ C, X, r
1- A- H9 n1 {8 t3 P
| # v/ y2 N ?8 l$ m+ I* f
系统时钟,50M
* I Y/ {3 e" y6 s F" I |
T) u) w1 X* dRst_n9 j/ {* h0 {9 s: e6 A- h
| 2 G, Q. t6 f0 q
1. N# j+ S# _9 O% E) S/ f! T2 e2 G
| / x' ~- H( o v
全局复位,低电平复位
/ h x/ L! @- }# j |
" |" {# N( [! y- V6 N1 d$ z6 WRs232_Rx
+ s" }' s# n8 N3 T( l6 y |
: I& [1 ?; B" f# ]/ G13 R0 J/ c. E4 i$ [" C
|
/ g) H: H9 @9 p- G1 i: f' l' M串口接收引脚1 i+ t* `8 w1 I8 ]7 Q
|
8 t) p- _, Z4 o) z/ Q$ c- xRs232_Tx
( r! W: ]1 H3 k c0 L& [ | 0 l" y; l p7 x
1* S6 V' H* \/ r h: D
|
( m! a, N" s$ M6 Q3 ?! v串口发送引脚% g" k) e7 T' u X# J9 v
|
4 o( }8 n( J7 C7 X) k: oKey_in
1 G3 _1 Z1 R5 e1 E |
# u, G. @- Z7 ]3 z/ ^; f3 T3" M3 Y4 m! d$ ?6 f+ d/ J
| 6 w( X3 l5 U/ e7 K# l
按键输入
# c5 V: M. i( |1 e |
4 ~& p, X5 K8 {3 n* y0 P( K
ADC_Din! R! E" K Q0 ~- `% D" Y
|
4 @# K6 Z$ }! ~' W# k5 C19 y- W! n2 N, n+ }& O) {+ I2 P6 L6 a
|
9 \* u8 Y$ C7 L; o; o2 kADC芯片数据引脚
' o6 @! z% @. V/ f |
* A" b+ Q; E/ H+ Y; D+ uADC_Clk
5 ?! c6 O- y6 i | 9 y4 C, Z* M9 b% d* B; z
1
+ }' g. d$ B" c; x: V" u |
7 t, Y3 I, i7 r) HADC接口时钟
* C& ?6 `6 _, ` |
$ p1 N% k* v8 I9 z. `% F6 L5 N
ADC_Cs_n9 }6 U `+ ~, Z, B2 W2 Y# w2 y. B- S
|
! J3 v) C5 X6 A2 t1% ?9 P8 J4 q- Q
| * Q# \9 \' t) T' L7 \, |+ U
ADC芯片片选信号3 t) L- B- o8 T' c2 G8 [3 B
|
6 F: @5 {, f; q' x( ^
内部信号( k3 r" u4 V" |* C
| 7 B9 b7 k, ]) u& X* F& P0 ?
位宽
1 \2 `7 ?6 _- d, y( @. R | ; U5 g* W/ F) p/ h6 D' H
信号功能描述
1 q# I1 k& M. U- \' y |
; y+ g% k* y# C# r1 r
Baud_Set9 t# w8 \1 c4 h1 q9 c0 P" l* F
|
/ `6 n3 U. Q. j3+ n' B- H p6 W$ B% A2 d* J( z
| * l; }8 P8 G w8 S2 w x
波特率选择信号,对应波特率如下:
& H8 ]% s4 W3 X/ w" O; _000: 9600bps
4 ?0 @4 D ]5 Z8 X* n001: 19200bps
9 {; M5 Z2 z, I; x% h010: 38400bps; w7 c! x( Q9 z. |
011: 57600bps
5 s% L; I ^2 F. I100: 115200bps1 a3 H& W9 c, v, W% m7 ]
101: 230400bps% s. K4 L- ?- T- f9 {' w
110: 460800bps
8 I# ]4 Y: d0 p2 p- S111: 921600bps
* r& D X/ {, o. K& T5 N3 C/ f( A# w( c |
7 I- n7 C8 r; J: t; s0 M1 W
Rx_Byte# J! ~2 S5 R+ u4 }' y
|
- _# \! o, L4 A4 v5 `. w/ [8
) N1 q' ^" i6 P- l$ n! v |
* Q# I( O: m1 t% {" v5 W& H串口接收到的字节数据5 ^9 }; k4 j4 K% M
|
0 X: W+ C: O# _/ A
Rx_Int! e5 K1 a9 N2 u# e7 h$ p* Z5 p5 Z" g
|
( ?7 Z) V3 p2 }+ |6 ?5 ^% K' i1
- G' o* x8 W$ v | % [0 R0 Z* P" N5 U% l/ e; E3 a
串口接收字节成功标志信号,每次接收成功,此信号产生一个时钟周期的高脉冲
# D- Z) N8 Z, j; v I# ]& C |
: K+ K n% B9 B6 E+ K6 ?' j S
Byte_En. J3 y& o& L7 V# D. u& }( \4 ?% C
| ' b1 w0 U: V1 p; z) @5 m
1
; C( E' A, l' M0 h | 2 u9 D8 T, T" Q# \, I9 @6 T% b
串口字节数据发送使能信号,每一次一个时钟周期的高脉冲使能一次串口字节发送。
' w5 U2 \# U) @ |
8 p+ ~' ?- l% D% T4 H/ ^* K4 tTx_Done
: F3 q% s& d, ~ |
. Y; H F( C( r5 w7 ~% r! X! K1 n9 o5 u+ G) h$ B8 E' L
| : p2 X6 U7 b! U1 E) Z7 K
串口发送字节数据完成标志,每个字节的数据发送完成,此信号产生一个时钟周期的高脉冲9 z& W0 \) i% Z% |$ H6 ^/ I
|
, u& M( F+ M2 E: o
ADC_En
4 g& X5 d; C# F | # U* \. @: H4 e8 |; E4 o
1, t7 u3 U z1 r6 {/ n! `
| 5 u/ d; x2 G- P) Z
ADC单次转换使能信号,每一次一个时钟周期的高脉冲使能一次AD转换4 T6 V0 k4 _5 \% P* _
|
( f# @1 \* \ F5 z" E3 v
ADC_Data
: ]* v, x) R% h | 1 G3 x3 t0 k5 U+ P( C$ Z
81 l: n9 C8 c/ i6 s
|
6 m1 H7 H2 l# R% h7 V/ CADC采样结果: L! A/ s/ u. D2 _6 j9 H8 _8 |
|
; i7 J; `' w) M" X4 WADC_Flag
/ M6 h! u& o" U8 q; O | 3 E& t9 b0 ?6 v
1
4 F( v1 e. w, J1 z$ N: @ |
6 D6 t6 J: z# g8 X, BADC转换结果有效标志,每次转换结果有效后,此信号产生一个时钟周期的高脉冲9 M" v {* u; H
|
0 L) z3 o5 p$ G$ I4 ~+ K$ n5 S
ADC_Busy. r) j# O( J- J8 P, L' y! C* ^
|
" _, `1 N; y2 X- D$ Z8 x% s3 Z13 q9 {+ Z! G7 h/ P1 m
| 6 j1 [- R# a) v- z
ADC工作忙标志,高电平表明ADC正处于转换状态,新的转换命令将被忽略,只有当该信号为低电平时,外部控制逻辑才可触发新的转换
7 B6 [. D2 L4 C. q6 ? |
+ n4 _/ @6 R8 C- { J: W% c' Pm_wr
; m& H" D1 d2 L. l. V; K' e7 X |
; y- G+ s8 E5 d. r5 c: Q2 A# j, O1
/ z2 N% G1 p' g( J+ h# l7 f' p( Y# k |
3 P+ t# H" z- N' e) G. {( a主机写数据的请求,为1表明有写请求3 O7 U7 t0 h/ ]
|
' |/ U7 P, B7 @' mm_addr
, u% v6 t; U! E- _ | P- X/ n6 E+ i/ ]
8; [$ d% o+ j2 h
|
8 P% d6 c* m* p主机写数据的地址
# P. e4 K5 \) O) r- N6 \ |
" r+ ^) [$ _4 v% W. E5 }5 K
m_wrdata
8 X' V8 \9 B- R! K; X |
' z# U/ b6 ?! V1 ^" W4 \16: G4 G2 i! M5 v* L* ]8 I4 t
|
9 S6 Z$ K# } I! I1 X0 e主机写数据. `1 R; y0 N8 R5 t) ^$ }; `
|
4 Q' h, S0 f- p5 C7 p9 c+ RDDS_Data) J; a2 J% L% h. W+ b/ t
| 2 ^& \/ o3 J. V* q' ~* r1 _
8" G1 P8 C" D1 P3 A
| 5 d% r; B$ E6 B" |1 k
DDS生成的波形数据; ]7 L4 ]7 ?2 B
|
! S. J, K3 D+ N* Q* P$ s: v% {DDS_Flag
6 d6 R! y' b; M; B# I4 G/ S( h | ( W6 m E& m0 H$ N7 ~6 i
1
( G9 c/ @' y' C |
1 ?* ?& N6 W/ S# Y2 wDDS采样使能标志,该信号由DDS采样速率控制进程产生
: w3 W: r, A- m, o' G2 N' y |
! e s" U Q0 r* I' A& i- }; Z mData_Flag
+ |" c3 P, s1 W4 {# ^ |
& |" h5 B1 V7 u1
6 \+ }/ X1 H3 z+ W4 b* r4 } E | , \' Z* Q# N) \4 x
数据有效标志(根据用户按键进行选择DDS_Flag 或ADC_Flag)
; ^/ L7 s0 \1 T) U5 g7 c |
4 T" a- b. j8 Z9 v# x1 MData_Byte5 f, Q7 e5 a' J2 D! q8 e6 e
|
/ U1 v# \3 {8 N, C) ~- X8
+ A2 M, r% F# } | 0 R% @2 q; m; y( C! m
串口发送字节数据
2 c9 y# v4 k$ x+ N |
~5 o# l( j* ^& j! |/ Y
Data_Sel
) s( y; {, O4 D6 P8 x# r3 a% y% W |
; ] m$ |' U8 j+ E7 `1
9 T. T2 A7 _' ~5 U' E |
0 D; O2 M A( W* Q3 a, W# S& }5 k数据选择信号(选择串口发送DDS_Data 或 ADC_Data),为1选择DDS_Data,为0选择ADC_Data
& |! A& ~! `) c0 X) y |
' B+ h2 n9 c4 i0 g9 {' f, s: yFlag_Sel, F, T+ G4 t0 \+ {! M! z Q" j
|
7 }$ U P, ~5 Q4 }. Q# s& U8 j7 o14 M- E1 ~3 K6 I3 [& y
| 5 E, I, L+ Y! Y2 ^
数据有效标志信号选择信号(选择DDS_Flag 或ADC_Flag)为1选择DDS_ Flag,为0选择ADC_ Flag$ G9 f' j" |2 F7 Y
|
6 {% y0 \7 a, f/ d7 WKey_Flag
5 A2 w$ h# O+ }, Q( n+ f |
& Q( D( m0 [. C9 K* i4 x3 E19 S: X, m0 S% A& K7 e6 Z
| * q: n9 i# r. }! v! k! K
按键检测成功标志信号,每次按键检测成功该信号产生一个时钟周期的高脉冲信号6 {" v+ X& ^, F: u9 }2 d1 @# N- B
|
8 o3 m1 L7 _3 G) F8 @Key_Value( M) s0 W, w7 |4 A7 s# Z
| + U% u) o4 l8 O- i/ {; M
37 [8 W. o4 X) J/ x* n
| 1 i# G9 ?" R+ s, d; d; |
按键检测结果
. g; J# X p/ G2 S( W8 U2 S |