数字示波器中的波形存储、录制与回放
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字示波器中的波形存储、录制与回放
摘要:波形存储、录制与田放是数字示波器的重要功能。在此采用闪速存储器(FLASH Memory)存储重要的波形数据,方便用户事后调出观察、分析和对比。每段波形存储的长度固定,根据存储波形的序号、大小、起始地址等建立波形存储索引表,通过查询波形索引表可选择要回放的波形。还可以通过波影录制功能把信号波影录制到静态数据存储器(SDRAM)中,然后回放波形,寻找并观察自己需要的波形。通过直接存储(DMA)方式实现将显示缓冲区存储的波形搬移到波形录制的缓存中去,实现了数据的高速存储。在手持式示波表的研制过程中实现了此波录制和回放方法达到了预期的效果。
关键词:数字示波器;波形存储;波形录制;波形回放
0 引言
自然界的信号大多都是瞬时变化的一过性信号,采用示波器的触发功能可以捕获符合触发条件的信号,一些重要的信号需要存储并做进一步的观察和分析。早期的模拟示波器无法完成对波形的存储和回放,而现在的数字存储示波器都具有波形存储和回放功能。波形存储是将波形数据存储在闪速存储器(FLASHMemory)中,可以长时间保存数据,掉电之后数据不会丢失,方便用户存储一些重要的波形以便后期观察或对比。在观察一些瞬态信号时,用户来不及捕捉这样的信号,可以通过波形录制功能将信号存储在静态数据存储器(SDRAM)中,然后可回放信号波形,再仔细观察信号的特征。波形录制是一种连续存储波形的功能,即存储从开始录制波形的时刻起到结束时刻的每幅波形。利用波形录制与回放功能可以检测那些不易确定触发条件的瞬态信号。
根据波形存储的长度是否可变将波形存储分为固定波形数据长度存储方法和可变波形
数据长度存储方法。固定波形数据长度存储方法比较简单,而且回放方便。示波器在使用过程中,正常触发模式和扫描模式所要存储的波形点数是不一样的。需要用可变存储长度方式存储波形数据。
本文只考虑存储示波器2个通道的各一组数据,给每个通道的正常触发模式和扫描模式各分出一个存储区。正常触发模式的数据长度与扫描模式的数据长度不同。根据存储波形的关键信息建立波形存储索引表,通过查询波形索引表选择要回放的波形。波形存储索引表存储在铁电存储器(FM24CL04)中,对铁电存储器可以进行快速读写,掉电之后数据可以保存10年。所述波形存储、录制和回放方法已经用于所研制的手持式示波表中,可方便地对所观察的信号进行记录和分析。达到了预期的效果。
1 方案设计
固定大小存储方法是一种简单的波形存储方法,可以完成波形和设置的基本存储要求,虽然正常触发和扫描模式下的波形点数不一样,但是每种模式下的波形点数是固定的,可以把2种模式下的波形分开存储。根据存储波形的序号、大小、起始地址等在铁电存储器(FM24CL04)中建立波形存储索引表,通过查询波形索引表可选择要回放的波形。由波形存储在铁电存储器中的逻辑位置计算出实际存储地址。比如存储10幅波形,FLASH就分出10个区(A,B,…,J),每个区的起始地址是一定的。而铁电存储器也分出10个位置(100,101,…,109)分别对应于FLASH的10个区,假设位置101存储B区的逻辑位置N,每一组波形的大小是固定的,设为M个字节,则当前的波形(起始位置设为ADDR_STAR)位置就是ADDR_STAR+M*(N-1)。
波形录制是把波形数据存储在SDRAM中,本设计中应用ADSP的DMA方式不通过CPU直接实现波形数据的高速传输,这样可以很大程度地节省CPU的资源,实现更加方便。
2 方案实现
2.1 波形FLASH存储与回放
采用固定大小存储方案实现波形FLASH存储与回放,通过单通道的波形存储来讨论。FLASH分出个区A1,A2分别给通道1的正常触发模式和扫描模式,铁电储存器一时也分出2个位置X1,X2与A,B2个区一一对应。逻辑位置N1表示第N1个波形的位置,波形大小即波形点数为K1或K2,起始地址AD-DR1,ADDR2表示A,B两个区的起始地址,波形地址就是本幅波形存储位置的首地址。波形存储地址示意表如表1所示。
对FLASH的操作主要有复位、写、读和擦除操作。其中写操作只能将FLASH的数据由1写为0,如果试图将0写为1就会出错。如果该区域已经写过就只能先擦除,而FLASH 的擦除只能以块为单位,如果对FLASH频繁擦除会减少寿命,因此给A1,A2;2个区各分2个块。假设每1块可以存储10幅波形。当第1块存满10幅波形数据后,下一幅波形存储在第2块中,同时擦除第1块,注意必须是在开始写第2块之后才能擦除第1块,这样可以避免有效数据被擦除。当第2块数据写满之后重新写第1块,并擦除第2块,这样整体看来,存储20幅波形才会对一个块进行擦除,避免了频繁擦除FLASH的某些位置。波形存储流程示意图如图1所示。
存储1幅波形(例如通道1的正常触发时候的波形)的具体过程如下:
(1)A1区中包含2个块(a、b)可以存储该波形。确定每一个块最多可以存储波形数量(count),a块的起始地址ADDR_START;b块起始地址就是ADDR_START+0x08000,定义一个实际的存储地址FLASH_addr。
(2)从FM24LC02中读取该区中已存波形的逻辑位置N1,N1+1就是现在要存波形的逻辑位置。
如果N1≤count,数据存储在a中,地址是FLASH_addr=ADDR_START+(N1-1)K1。
如果N1=count+1,数据存储在b中,地址是
FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1,数据存储之后擦除a中的数据。
如果count+1 FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1。 如果N1=2count,数据存储在b中,地址是 FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1,存储之后,N1=0。下一