|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( {: k: U# h9 w
# s$ t/ E" r0 a* j
首先,PC向FPGA发送触发字信息、数据采集控制信息和开启数据采集信号;单片机发送数据至外接DAC产生门限电压;采集到的输入信号通过高速比较器与此门限电压进行比较,以确定其值为0或1。接收到PC发出的开启数据采集信号后,FPGA按设定的工作方&nBSP; ' k" G P0 n8 K* Z/ b% C, r
式采集数据,各通道数据移位输入FPGA内部缓存并存入外部SRAM。FPGA将缓存中存储的采集数据与设定的触发字、触发方式和屏蔽位进行比较。一旦符合触发条件,则设置触发标志,记录触发位置。当数据采集至设定的点数后,FPGA向PC发送采集完成信号。上位机接收到此信号后,发送读取数据命令,系统读回采集数据并在PC屏上显示。系统功能框图如图1所示。 ( S( l6 ?* b- A+ W9 L& B! k
, f, D2 t0 Z+ o# s/ S
& l- b* m9 \, ^; _图1 系统功能框图 3 s8 F3 y1 u/ N- i3 I
. ~! E5 N+ Z1 z, @ } z( M5 f: m, z* H
系统触发模块设计 ; x: J8 b6 ~+ A+ n
, n: s. U- M0 J; l& w7 l0 k
触发模块是整个系统的核心部分,主要包括采样时钟选择模块、触发电平设置和触发电路三个部分。 7 t7 p; s% f: z$ c& J
$ @- O% s' h% v& Q! O 采样时钟选择模块 - p: A# g4 Z* g
0 D1 ?; s6 B) e% F/ c4 E8 Y' N 时钟选择模块用于选择采样频率。可供选择的时钟源包括:外部时钟(由有源晶振提供)、单片机PWM模块产生的PWM时钟、外部时钟输入(由额外的设备提供)、以第N路数字信号输入作为采样时钟。 ; N8 j0 Y$ l. l. `& J* L
* N8 b( S Z9 r6 M. F9 I; B7 k
触发电平设置 ' d0 B/ f3 S5 s* l4 U$ }
- y( I" Y9 l- R' ^- [/ @
触发电平用来确定系统正确识别采样信号的高低电平。该模块由串行数模转换器TLC5615和高速比较器LT1721构成。采样开始前,单片机向DAC发送触发电平数据,转换后的电平信号(范围从0~+5V)送入高速比较器。 4 O- u' C% Z8 @3 X) \+ T
* k( c% P, t) j* E6 W 触发电路 + c7 ]2 D" x2 G, o6 g
; o3 s8 W" r8 I( M. C7 V: j% V
触发电路的作用是判断采样信号是否满足触发条件,并分别产生触发动作。当采集的信号满足用户设置的触发条件时,系统记录触发位置并产生触发信号通知上位机读取、显示采样数据。本次设计的触发电路具有三种可选的触发模式:立即触发、顺序触发和并行触发。
: Y3 }- w$ x2 W3 n
. N# m8 v' x: H3 B 立即触发 * i( G* z' { r" p: C
5 T2 _; U) Z/ S+ b. u0 ~ 当上位机向FPGA发出立即触发触发字和开始采样指令后,FPGA开始采样并立即产生触发信号。采样电路将采集到的信号存入外部的SRAM中,直至采集到规定的点数后停止采样,向上位机发出采样结束信号,通知其读取采样数据。此方式下读回的触发点位置为0。
}/ U6 F2 w+ \; G5 d! W- R4 @4 l7 K' j3 c, D0 K$ `& ^, ]) h
顺序触发
0 b% l9 L) J0 @6 I, |3 I4 D' \( X( q; y% g4 O/ l _ ~1 _& D
该方式设置了一个8位的序列触发,只有当被测通道的信号按依次满足触发字所设定的8位序列时,才产生触发信号。同时,为了操作的灵活性,还加入了屏蔽位。若对某一位的数据不敏感,可以将其对应的屏蔽位设置为0,在判断触发条件时不对该位进行检测。 ! ~$ d7 t1 i5 n1 [
8 ?" Y9 B; x0 H( L) n, E# x6 {
使用顺序触发方式,可以对任意一个通道选择最多8位长度的序列进行触发。在进行触发设置时,除设置触发方式(选择顺序触发)和进行采样频率选择以外,还需要进行通道选择、触发字和屏蔽位设置。其Verilog HDL算法源程序如下: . p! P9 |" Q1 k7 Y5 C* _
m9 k' X- H# D V( F if(((dbuf^{TrigWord[1],TrigWord[ 0]})&{enbit[1],enbit[0]}) == 8'h00) 8 l' {- f) O; c" a
' G+ Y8 { b1 w4 Y/ ] begin ; ^4 z! u. Y& z" T4 W+ m `6 G
$ V6 P- y9 y9 ^$ S5 s) Z" p
TrigFlag=2'b01; Trigpoint[6:0] <= MemABus_Wr[6:0];
7 s% P% N- \/ _) d+ |% R
* b* H* [3 c9 V/ i end
, Z/ D0 }! T+ a" N
8 b/ y2 ]4 r; a7 f, _7 b3 y 其中:dbuf为所测采样通道的数据缓存;TrigWord[0]、TrigWord[1]为触发字;enbit[0]、enbit[1]为屏蔽字;Trigpoint为触发位置寄存器。
! {1 A- M0 z3 L5 l
; q, r% x% R! `- f, w 并行触发 $ ^- M( d8 M% f' j6 `
8 s) o5 C. B1 N1 l* e
该方式设置了一个八级深度的并行触发,将每次采样得到的4个通道的数据组合为一个十六进制数,对应于一个4位的触发字,当4个通道的数据在时间上依次满足8个4位的触发字时(并非要求连续),产生触发信号。同样,可以使用屏蔽位对某一通道的数据进行屏蔽,即在进行并行触发检测时,不对该路通道进行检测。( z a# r* j) l1 B3 Q* C# V+ C
6 m( n4 r$ }) A. i- {使用并行触发方式,可以选择最多八级的并行触发。在进行触发设置时,除设置触发方式(选择并行触发)和进行频率选择以外,还需要进行触发字、屏蔽位和并行深度的设置。其Verilog HDL算法源程序如下: 7 I/ s! O% @6 \( k3 l
2 L# M2 @: F/ u# \* ]8 N& Z/ ^
/ U. T1 ] \2 b4 v
if ((({dbuf4[0],dbuf3[0], dbuf2[0],dbuf1[0]}^ TrigWord [dcount] )&enbit[0] ) == 4'h0)
/ j$ v: w) f! K4 m4 t2 Q+ t* T5 H/ m% n! S6 {$ p1 r$ r
begin
2 A3 S6 {5 P) d; c7 y$ X3 z& L6 ?
/ n4 x' b7 `! C ^ if(dcount[2:0]==control[4:2]) ; \3 G" i- A2 x7 R* }
0 Z3 q1 A: N: O! }2 d/ R: ^ begin
5 U6 f6 _% L; G! K0 E" b2 q
) I! H3 F: i: S' e. U TrigFlag=2'b01; Trigpoint[6:0] <= MemABus_Wr[6:0];
6 L0 y! I# J' `: H% B1 {1 X- `" @3 \7 H
dcount="3"'b000; end 4 J6 h, y/ I5 F6 S
5 x/ `0 r( @4 a6 X: k
dcount = dcount+3'b001; 5 U* l& J6 F( x+ n/ W( j8 @
1 n& ]4 w( I/ p, h8 n8 d w( Q8 e0 U6 X2 o
end
" @' W+ r! E# y h
* s3 I% [0 F. [, u! B/ ^* S* R 其中,dbuf4、dbuf3、dbuf2、dbuf1分别为采样通道4、3、2、1的数据缓存;TrigWord[dcount]为触发字;dcount为触发深度计数器;control[4:2]为设定的触发 . Y3 X" ]# d+ U
深度;enbit[0]为屏敝字;Trigpoint为触发位置寄存器。
" |9 y8 M1 q9 u- ?; s$ s7 L* v4 V5 F- |0 v, R2 v/ k, H
USB2.0接口设计
6 x- J; p* E: K" l
3 [) b# m+ Y1 { @0 T+ Q 本设计选用符合USB2.0规范的CP2102芯片构建系统与PC的通信接口。
0 \0 c5 e& `2 t. Z5 s! ^- ?' d4 z9 \# [# t5 Q
CP2102是USB-UART桥接芯片。该电路内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEProm及异步串行数据总线,支持调制解调器全功能信号,无需任何外部的USB器件。其功能强大,采用MLP-28封装,尺寸仅为5mm×5mm,占用空间非常小,非常适合大数据量处理与传输电路系统的设计与应用。 " h+ C9 |: K+ \5 L
8 b7 n, X+ M/ H1 g6 p% T 实际应用中,系统只需使用CP2102基本的输入/输出数据线与复位信号线。其接口原理如图2所示。 : R1 G# H# T" _) u A0 d5 d/ J
) D+ ^" O1 ? G) g% b
系统启动时, 单片机RB1端口发送一低电平至CP2102复位端,芯片复位,然后保持复位端高电平,CP2102正常工作。- E' J9 M0 r0 S4 U3 g. r
" d4 W" U4 ^. I" t Z7 J/ E
3 s/ u3 O& K7 R0 x0 s/ D' @% T5 K0 R
图2 USB2.0接口电路图 4 Q( G j0 Q8 G8 H5 K6 H6 f
* j3 P% L! n4 I- L3 @- E4 F' m 由于CP2102内部的透明设计,数据通信时,可以不必构建CP2102与单片机的握手信号;CP2102数据线直接与单片机1#USART模块的接收移位寄存器(RSR)和发送移位寄存器(TSR)相连。CP2102数据线上一旦出现待发送的数据,该数据会自动移入单片机接收移位寄存器;同样,单片机发送数据时,发送移位寄存器中的数据直接移至CP2102的数据线(即USB接口数据线)上。 / ~8 N0 G. a L: M# r* H% K( Z
6 M5 x) _* l1 T2 l4 k' O9 ^* D
程序设计中,系统不断检测单片机接收中断标志位RCIF1,一旦USART异步接收器的移位寄存器RSR接收到CP2102数据线上发送的停止位,RSR寄存器就将已接收的8位数据装载到接收寄存器(RCREG1)中。系统发送数据时,前次装入发送缓冲器(TXREG1)的数据的停止位P发送出去后,TXREG1缓冲器中的数据(软件装入)就被载入TSR寄存器中,TXREG1缓冲器就为空状态,同时发送中断标志位TXIF被置1。TSR将待发送数据逐位移至CP2102数据线,完成系统与CP2102 USB模块的数据传输。 . S1 [6 w) ~3 p0 i
+ H& y: k9 d- ~0 [( D- { 软件设计 5 v/ Z {1 a% q% b1 @' P
( V' ^6 [7 b4 V0 I6 t$ P FPGA功能实现程序运用硬件描述语言Verilog HDL编写;PIC单片机程序用C语言编写,并采用第三方C语言工具HITECH公司PICC—18编译器编译实现。PC显示和操作部分运用图形化语言LabView7.1编写.
; C4 d6 m" I; J/ y( m" }/ g) ?- [6 s
实验操作 8 y" N7 C: b% P: Y+ z' f6 X/ C4 g
M' L; U1 a" r1 f" J1 {
采用LabView7.1开发的虚拟操作平台,可以方便实现仪器的操作控制。实验开始前,首先选择通信端口,建立PC与本系统的通信;设置触发电平,设置采样频率(外部、内部或其他)、触发方式、触发字、屏蔽字并点击“发送触发命令”按钮,完成相关设置,开启数据采集和触发进程。点击“读取采样数据”可读出采集到的数据,并在PC上显示。
9 b5 c _0 }$ \ G3 N! p6 C& X1 i5 R# b6 W7 s. R k+ J
结语 9 r" y+ {# B2 s
- q5 Y# `3 z8 [3 }+ K& t1 G 在综合考虑应用需要和成本的前提下,本设计采用4个高速采样通道,最高可达75MHz采样率,存储深度达512KB,最多可采集220个测试点。触发电平由10位串行数模转换器TLC5615产生,电平误差小于5mV。高速USB2.0通信接口配合LabView7.1开发的虚拟操作平台,可实现数据在PC上的实时显示。本设计的成本还不到市场上同性能产品的1/2,更适用于教学等对产品数量要求较多,性能要求中等的单位采用。
~5 Y3 C* [0 B6 ^& D. ` |
|