, L" f5 o- F* [! I& @* U4 L 基于串口的虚拟示波器模块功能介绍 : }9 o( D/ j* h9 p, {
|
- Y6 }7 N5 b# U% ^, T模块名5 {% o4 k1 y4 ?
| + G2 r& s3 G4 W2 G
模块功能3 b( F6 g2 I" O/ r+ R
|
# Y: r2 Y/ Z, `
Uart_Byte_Rx
' E9 a. Y. w# m" s |
5 g; R/ n, p: x( O# _串口字节接收模块,负责进行PC机发送指令数据的接收工作;
1 ^0 h+ P1 m4 N0 C: H6 k8 ? |
( ?. o7 a6 ~7 [' T; g# [5 D
CMD# S2 F" ?. ^" ~1 U" x: e
| & Z; y4 F3 U7 k3 y2 H
串口指令解析与控制模块,该模块通过解码PC机发送的指令数据序列,获取控制命令,转换为Memory Mapped Master总线,以实现上位机通过串口控制下位机(FPGA)中各模块寄存器的功能;
5 p' {5 a) Z9 S$ \/ K |
* E) p# q$ d# h" }- E" WSample_Ctrl
. t/ c* Y: e) n8 u1 K j | 5 p i: ]3 H6 j4 D" R g! N: W- r
ADC采样速率控制模块,该模块通过控制使能ADC采数的速率来调整ADC的采样率;3 v% Z$ e1 Z* p7 k- f: W
|
5 {6 y0 n# X0 z# J5 F
UART_Byte_Tx6 p! d1 Y8 r3 T
|
/ R, G& U" K5 u( V. C; ^, B' ~串口字节发送模块,该模块负责将需要发送的字节数据通过UART协议发送出去(发送到上位机)1 e; l T& R9 w& a! K9 Z, t3 N* Z
|
7 p# _ K3 ]7 y$ z; HUART_Tx_Ctrl
& |: x% y+ a# g, h( [5 V2 h | 8 } ?! |$ L/ e0 B
串口发送控制模块,根据数据有效标志信号来控制串口发送模块将数据出去! s7 R# y# b, A; C) {
|
1 y2 |% g/ ^$ H* L/ Mtlc549_Driver
# k2 C6 V# i0 ^& a7 F | ( R# i+ ]0 _* N+ V$ c$ o% l5 ^9 ^7 W
TLC549模数转换(ADC)芯片驱动模块,负责驱动TLC549进行模数转换,并将转换结果以字节格式输出。2 m% X c. t$ `+ L
|
: I9 B+ M# ?( i! J% dDDS9 a3 @! s+ R8 g: n
|
( j8 L# \8 b1 ?. ]DDS信号发生器模块,该模块生成一个固定频率的正弦波,在没有外部信号发生器的情况下,可通过该模块生成正弦波,并将输出数据接入到采样部分,以模拟采集正弦波信号并在上位机显示: r2 x7 q+ ?/ \+ X
|
1 h' ~, p G2 f. r) e( \
Mux15 y8 h! c$ `& s! G
|
& C7 g& o% H) SAD采集结果和DDS数据结果多路选择模块,在测试时,用户可以选择需要采样的数据为内部信号发生器生成的正弦波数据(供演示用)或者ADC采集到的电压结果(实际测试)+ _% ~) {. W2 Z2 S" }
|
* }& ^( Z r" i% ?8 Y
Mux2* S) h- f# J. u- @
| & h s9 l7 P/ I3 c0 H2 Z
AD采集结果和DDS数据结果有效标志信号选择多路器,在ADC和DDS都处于工作的状态下,通过该多路器来实现数据有效标志信号的选择8 v S( p8 n5 { t( C' }" Y
|
7 _: d. R; T% F- gnormal_keys_detect
: e$ N0 j, f9 ~ | $ |7 f1 R3 J( f0 n% t! j
独立按键消抖模块,通过该模块来实现AD数据和DDS数据的切换,即在演示和实际测试中进行切换。
6 S. n z( F O |
" F5 }) {: y3 X- t6 R3 }
基于串口的虚拟示波器端口和信号介绍: N* l6 ]8 o `- q% Q( p7 G2 u
|
8 p% D" l2 P" a% w( y+ _5 I
端口. i i8 E) `& m. s" t1 [" V" }
| & B7 l1 T- I" ]
位宽+ [# a/ z/ N+ D3 s+ C8 M, }
| 9 i/ A: F: T7 Z1 C* V
端口功能描述
* b! m7 Y) C8 B& b- |+ e; s |
; P/ J) b2 f: ]5 ^5 Z2 O9 P: ?
Clk
# y* T; ?0 o6 O4 F2 K3 G |
! r& ]$ r& ~: c1
7 F9 ~: V1 E1 _8 d' l) k | ! T" [( I8 W2 X5 ?- Q( n T
系统时钟,50M- R7 G/ o8 i7 q8 p; f7 M/ \0 I, V
|
6 ], i5 h0 Z! [' a8 b5 qRst_n
' f: C% K% j. N, [9 T | ) `7 v5 [' T" I- R6 k2 ]$ a4 C$ d
1% d* d/ O2 ]4 @
| 6 `1 I+ m$ V) \9 Y' v
全局复位,低电平复位
@0 |+ H( ?3 F8 w' H+ f |
* ^, P' d$ L( B$ C, n
Rs232_Rx
( b# b3 u; \: J. F | 1 k* e/ Y: p% L" ~
1
5 D/ N9 w7 M. N, r2 q" i: T! U |
$ s$ i+ P! b. Q; q串口接收引脚
' @+ J, b4 i- f$ ^ g5 t/ g |
! @# P3 X# u. M+ b
Rs232_Tx
2 u g# ?3 P' { |
8 a& G4 o' v& m- U2 X1 x) E1
5 r( I5 J6 K! K9 h1 E0 V' u |
8 c+ Z! y u- Q' C- K串口发送引脚1 S* K9 [' T# H
|
6 } [, {! E$ ]# B& NKey_in) O; B8 A4 B: r& ^% Z* j g1 \5 S
| 4 r( ?; K O+ {$ T' d. E
31 J' u$ L$ Q) h b
|
5 s( U j6 a) w& I按键输入7 u( M/ S8 C, V! Z+ l
|
4 W1 K( M, ^' L2 z& C9 O% _) \2 R0 X P
ADC_Din
x" C- ?8 O$ W |
* x6 ~, C1 ? s: f3 \/ \1, s6 G; U) q' s6 T
| ; f+ N8 R1 |3 l$ x- J5 n- x, f
ADC芯片数据引脚
$ k% p+ @7 v6 y9 b2 g* O: _ |
( h0 ^ c# @4 o& w- _# r2 v; E
ADC_Clk) K6 n) |$ e! g! B( u
|
- n0 q7 `: d, q4 @6 I. A1; o+ K2 d3 c2 x! k& x
| 7 x) e/ R4 H) X
ADC接口时钟# K" s5 ? [) l2 y* f& @
|
/ V2 `* z) R3 S
ADC_Cs_n
. \ |& P1 x9 f7 L | $ V- n$ J. M/ ~# ]! E
1
1 ~/ n8 r+ |& Q5 Q( ^ |
1 S _4 H' {" w7 f; n% J kADC芯片片选信号 ? q1 m; T& I; r
|
* g9 c2 s: T& }内部信号" z5 ^& {7 i. O( E
| ! D; H- A& `7 d5 o
位宽
3 H! L/ a( L( |" Y |
" b# k$ K# K; P( b, k, c信号功能描述
+ W' e: U+ }9 c2 }) _4 n |
" e, S) m8 l5 C8 XBaud_Set
7 Y5 q( w6 f3 T( Q& V3 W/ s! M$ o |
& u1 ~: U ?% Z. `+ M9 o% d9 Q3* z% } b1 s" N& V. F" o3 _
|
# F' S) E8 k' p" l, W8 C波特率选择信号,对应波特率如下:/ p( V+ T# X9 [" h1 _1 N ?
000: 9600bps: Q# B! h4 e+ I. b, |9 k
001: 19200bps
) R+ w" Q+ n7 C# |010: 38400bps+ q, { u8 ~0 M, J y
011: 57600bps6 t) p1 U5 a2 s* q+ ^
100: 115200bps
! E" V2 }0 @; V o101: 230400bps
9 h' Y/ f5 }. O Z8 ]110: 460800bps( [. ~7 I3 e, q, ]$ v8 U P
111: 921600bps/ F7 A" \- g6 Z
|
6 w0 ]+ N9 e! eRx_Byte8 M! ], h# I; z
|
$ y# S) l4 L/ u" i4 n! z8
% C* O, }8 ~$ Q3 L0 H. E- h1 v* Y | 0 I+ y+ B8 S7 O3 X5 o( p) F3 y
串口接收到的字节数据
% S1 H f* u( q6 s4 a; o6 H9 j# P; ] |
' D7 K& }5 m i0 F: S
Rx_Int0 ]' A7 T* N0 _! E% `( b! O, v
|
3 O0 k+ J4 D0 D3 u6 b1 U1
0 t: E" U) @# g3 l+ [/ V- E3 o | ! _$ }6 d8 {/ h1 p: J0 P
串口接收字节成功标志信号,每次接收成功,此信号产生一个时钟周期的高脉冲. a6 l7 \0 q; h9 P
|
: s9 [9 i1 T m5 U4 a0 p! {Byte_En& t2 {* J; Y3 g8 q
| : M* G* b+ U6 ~
1
6 B: r4 U, n. w* }2 D! q |
1 H* P4 A) H2 O8 A串口字节数据发送使能信号,每一次一个时钟周期的高脉冲使能一次串口字节发送。" J( R& }6 h+ Y" @, Z# j
|
) f/ f4 x; b' d/ xTx_Done
8 D1 B* H4 K: C" g# r/ N | ; n# c+ B S1 u+ L
1
! P5 b: M" f' d7 i |
) a7 D8 M% B* [5 i- V串口发送字节数据完成标志,每个字节的数据发送完成,此信号产生一个时钟周期的高脉冲
& ?; V c% z8 V+ t |
+ g8 z* @1 V4 ], ~% \8 x) v# H
ADC_En
; g% b z- t) G! J# \- v& o: i+ }7 n! i |
9 \5 J D' b2 g: p- K* L/ T( n1
8 z1 p4 S* l6 m+ x+ }; u. s |
1 Y6 S0 s" _: P# H& Z6 }9 vADC单次转换使能信号,每一次一个时钟周期的高脉冲使能一次AD转换
! B. O9 h7 n& r6 t; |* q6 E7 n( ~0 J |
+ X, w, G+ ?' z! N# z1 K7 n' F
ADC_Data1 q* R. J! n# T0 ?" C$ y
| 5 c9 x5 g$ I$ Z3 C+ u
8
6 d& P! f I3 D2 P8 z5 D |
* O! \" s# }- L& T- cADC采样结果( ^* R% h3 J7 e8 e: w
|
0 W2 X) X5 j6 o4 M5 t; D
ADC_Flag8 K, d' _8 f* P# U" f! w8 P5 E
|
2 H' D, P, v. |, x) t& x- ~1 k1) i+ Q/ ~4 a7 n2 Y ]
|
; ~+ g/ I) y0 s$ P& WADC转换结果有效标志,每次转换结果有效后,此信号产生一个时钟周期的高脉冲
7 M# t% S/ Z, Y1 n) U6 Y9 T# c |
( ]4 S' p; ^7 P% r3 z+ p
ADC_Busy
6 i2 u; [: v8 Y5 X ~# [ | ! t3 w6 W( ^# o) f+ [
1; p: J/ g( K+ U0 k# Z( P5 q4 ~$ e
|
+ r0 c( ]3 B6 {5 \3 h' r! oADC工作忙标志,高电平表明ADC正处于转换状态,新的转换命令将被忽略,只有当该信号为低电平时,外部控制逻辑才可触发新的转换3 }! `" z& q* K
|
9 ^9 l/ l, p, r! \1 o N( X
m_wr
3 k1 l$ Q. G |$ U: I( M+ e | + g& O0 a: O2 D8 k+ t9 Y- J! q
1 p2 \/ x* M7 u/ v- K7 e) {* W8 A& `" ]
|
) ]/ p# J6 j) n' ?. @6 f% {6 k m主机写数据的请求,为1表明有写请求" I/ L# Q7 O3 t6 R, ~+ M
|
/ S6 H* t; H4 N$ G" f8 f! a/ P7 h& o: Y% Qm_addr
- }! l7 }8 O1 C+ D& G5 S |
- v0 k6 ^, F9 g6 X3 |2 _% D, I8
0 ~3 D7 B. Y5 j; b |
) A- R* b" ^- `2 e主机写数据的地址2 A6 i: n' ^1 o, n
|
; B5 r/ ^3 n/ I7 u& [m_wrdata0 M0 C* Q+ Z" x$ ]# v
|
3 y( ^6 ^6 {+ {; v! Q4 }167 N8 j I3 _2 D; o4 {+ Y& U$ P
|
( z) E. u1 F4 F* }" I0 F主机写数据
5 H) d* t- n' Z7 R: X |
% J- O0 H. m6 w% {; V/ d3 ~DDS_Data
( A" k, H- {' T* p+ d2 F& g7 S |
5 Q% N# r; ^: V* @2 a2 G; e8
2 k+ H( b& i q5 O, d, z |
1 |, n- k( j( A3 x9 tDDS生成的波形数据$ y& i. k) r. S$ m$ V
|
# N. J( g* X1 I3 K; }DDS_Flag
9 X( i$ X$ x3 C( p |
4 E/ n1 E0 N; ]. ~3 k8 N. U1$ T1 l& w" j1 o% T* L$ j
| 7 c& Y$ @: @: S; k- W* w+ \' d
DDS采样使能标志,该信号由DDS采样速率控制进程产生 1 {, W9 Y1 V; ] b, v, m& l7 [7 S, ~0 x5 z
|
2 h5 W$ o" s5 P9 N. AData_Flag' z1 o( o0 |& j9 F, E) k
|
3 G. v1 c0 {" A& K1
% p( g+ S4 x# i- v2 R4 C* V4 } | % E- x- B4 a0 T- Z/ b+ s7 i
数据有效标志(根据用户按键进行选择DDS_Flag 或ADC_Flag)9 y( A: f! `+ H( u0 [$ I
|
g8 {0 m5 S. [* F
Data_Byte
8 y% n8 F7 P4 E! P! K8 O | 3 X* R# Y9 H% I0 F( ?+ n
84 V$ Q6 b. \( r R2 z+ z
| + b9 |6 c/ L9 m5 f: d, C
串口发送字节数据
- t( ?# R% x" R; F7 B1 | |
' \/ _6 `: f8 l7 [1 Y2 b, w: ~
Data_Sel
& _/ v$ I, m1 ?) k! ]/ y | 5 L7 O, s0 m9 A% u \, G, L
1
T0 D+ Q! D4 c0 _ | - @" q9 Y: _& E- m9 c! P& v b$ G# t
数据选择信号(选择串口发送DDS_Data 或 ADC_Data),为1选择DDS_Data,为0选择ADC_Data
# A' o6 y6 F" P+ ~( I& j& { |
2 z u2 Y& i8 v
Flag_Sel
& O2 c% e9 G" u5 V8 T | * C% G) b* m) c' f5 T
1
( c, Q) K4 G! o2 b |
3 v, p& o- o# ~: |数据有效标志信号选择信号(选择DDS_Flag 或ADC_Flag)为1选择DDS_ Flag,为0选择ADC_ Flag& [+ W9 Y1 |- U' H8 b3 _( Z
|
1 @. U3 C" I# X% Q" K
Key_Flag5 u( X' k6 A6 }9 D; T- [6 g
|
2 Z( x" h7 t% [7 E ]& W19 h- q* U# e3 p0 ?2 j6 s- \& ~
|
# y3 W/ \) t8 _8 s- v# H按键检测成功标志信号,每次按键检测成功该信号产生一个时钟周期的高脉冲信号
3 s' ?0 G" i/ A) U) v1 l |
8 m; i' E' Z' U6 `2 e: QKey_Value
+ D5 _- {' c( J# g |
. l$ X. Y5 M2 a f4 Z8 Z" q3% e- Z. N+ {% X$ T7 F1 j
| 1 a+ }$ X8 t/ f8 T+ }
按键检测结果
- H- k3 Y; V4 [8 g6 N% N& } |