简易 数字存储示波器实验报告Word格式文档下载.docx

上传人:b****3 文档编号:7731985 上传时间:2023-05-09 格式:DOCX 页数:15 大小:796.34KB
下载 相关 举报
简易 数字存储示波器实验报告Word格式文档下载.docx_第1页
第1页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第2页
第2页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第3页
第3页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第4页
第4页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第5页
第5页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第6页
第6页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第7页
第7页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第8页
第8页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第9页
第9页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第10页
第10页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第11页
第11页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第12页
第12页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第13页
第13页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第14页
第14页 / 共15页
简易 数字存储示波器实验报告Word格式文档下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

简易 数字存储示波器实验报告Word格式文档下载.docx

《简易 数字存储示波器实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易 数字存储示波器实验报告Word格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。

简易 数字存储示波器实验报告Word格式文档下载.docx

因此我们所需要设计的部分便是A/D采样控制接口模块、键盘控制接口模块、存储器读写控制模块、LCD控制接口模块和LCD显示模块。

系统工作流程图如下所示:

通过RESET按键初始化,按键选择是否进行采样或是进行其他操作(如示例波形的演示、调用查看以前存储的波形),若进行采样,则将采集的数据存储到FPGA内置的RAM中,下一步进行是否存储或进行实时数据处理。

若进行实时数据处理则可以在LCD显示屏上观察到相应的波形,并且可以对其进行上移、下移、扩展、收缩和测频的处理。

二、实验设计原理

设计总体逻辑思路如下:

系统开始工作时,通过按键选择是否开始检测波形,若是,则首先由频率检测器检测频率,然后根据测得的频率选择适当的采样频率。

信号源产生的信号通过A/D采样,采样结果保存在FPGA内置的存储器中。

待存储完一帧数据时进行输出到LCD上显示。

待显示100ms后暂停100ms以消除视觉暂留效应,然后准备下一帧数据的存储和显示。

如若需要存储波形,则在当前显示的同时,将采样得到的数据送往片外的SDRAM存储,直至存储结束或者存储容量达到上限。

当需要显示存储波形时,则将外部SDRAM的数据读进来,送往LCD显示,其原理和实时显示大致相同。

在显示暂停期间,要读取按键情况进行整体控制,比如控制波形是否显示在LCD屏幕上、是否存储、是否显示实时波形还是存储波形、是否上下移动、是否进行时域扩展等。

在实验的验收中,因为缺少信号源的调试,因此A/D采样存储模块未得到验证。

为了展示对LCD显示控制,我们利用FPGA内部的ROM进行波形数据预存,通过对ROM读取来模仿外部的AD采样存储。

同时为了演示各种不同的波形(正弦、方波、锯齿波),同样可以通过按键进行选择。

最后我们可以在LCD上观察到稳定的正弦波、锯齿波,方波较差。

三、系统各模块的简单说明

根据上述硬件使用说明图以及实验原理,我们的设计总体有以下几个模块:

1)分频、测频模块和选择A/D采样速率模块

说明:

FREDEVIDER作为分频器得到所需要的各档采样频率。

同时部分频率分量也在其他模块的计时处使用。

FREQ_COUNT是测频模块,用于测量输入信号的频率。

其基本原理是给一个1s宽的高电平脉冲,在此期间对信号时钟的跳变进行计数,一秒结束后所得的数据就是信号的频率。

SAMPLERATE模块是为了针对不同频率信号的档位选择不同的采样频率。

为了在LCD上显示适当数量周期的波形,我们将频率设置为12个档位。

最低档位是1~5Hz,采样频率为100Hz,然后是5~10Hz,采样频率为200Hz,然后是10~50Hz,采样频率为1000Hz等等。

以此类推,直到最高档500K~1MHz,采样频率为20MHz。

2)按键控制模块

说明:

KEYBOARD模块是单片机和FPGA的接口和简单的初步处理,用来控制键盘操作;

各buffer触发器是对按键的记录。

为了防止对按键的重复读入,此处的触发器设置为上升沿触发,这样每次按键只读入一次。

模块图如下所示:

3)实时波形处理模块

KEY_DEAL模块主要是处理按键,包括对按键的记录和相应的参数计算;

tlc5510模块是对外部超高速A/D采样芯片tlc5540采样得到的实时数据进行采样存储控制的,作用是将采样得到的数据存储在内置的RAM内,用于实时显示,该RAM容量较小,只用来存储一帧的波形数据。

需要说明的是,tlc5510里面包括一个100ms的计数器,作用是在一帧数据显示完计时100ms等待,用于消除视觉暂留效应。

计时过后,开始下一帧数据的存储显示。

4)存储波形控制模块

该模块的主要作用是控制存储波形数据的读写操作和送到LCD显示,同时也包括在显示存储波形时对相应按键的处理。

STORE_CTRL模块对存储波形的数据进行采样存储的初步处理;

SDRAM_CTRL模块对外部DRAM进行读写控制。

KEY_DEAL2是用来对按键进行处理,功能类似于实时部分中的KEY_DEAL,只是多了左右波形移位的控制。

5)LCD控制显示模块

SWITCH_CTRL是用于选择显示实时波形还是存储波形的数据;

LCD_POSITION是用来计算LCD屏幕中即将扫描到的位置;

LCD_DISPLAY是用来进行显示控制的,包括计算是否需要显示和相应的RGB的输出。

6)PLL锁相环模块

整个系统的工作频率需要大于LCD的扫描频率20M,因为需要在即将得到的扫描点处进行是否需要显示的计算和处理。

我们通过FPGA内部配置一个锁相环,以得到80M的时钟。

四、最终实现功能说明

本次实验最后实现了波形频率的测量、波形的稳定显示、波形的上下移位、时域上的伸缩扩展以及内置不同波形的选择,完成了设计最初目中的大部分。

和最初的预期相比有一部分没有实现,即外部的A/D采样和保存部分。

同时由于我们使用的系统箱中,所要用到的FPGA-LCD接口引脚与FPGA-单片机接口引脚有复用部分,因此放弃用键盘操作控制系统功能,而是选用八位数码管下方的八个开关进行按键输入。

同时测得频率显示在数码管上。

示例波形选择查看时,得到的正弦波和锯齿波均能很好地展现,而方波却不能得到稳定的波形。

我们认为大致的问题是因为方波中大部分持续数据都一样,在同一行中需要持续显示多个数据,而数据的处理可能稍微跟不上(就是说80M仍然不能完全保证时序),因此波形不稳定。

另外需要说明的是,左移右移只对存储波形的显示有效,因为在实时显示下,波形总是会一帧一帧的更新,按键没有意义。

在切换到另一种波形显示时,当前波形显示的格式应该回到默认状态,而与之前的设置无关。

同理,当前的按键值也只对当前显示的波形格式有效。

因此实时显示和存储显示的Reset还要受waveform的影响,可参见原理图。

五、实验设计实现功能模块具体分析

以下为本次实验验收时的系统框图:

由于框图比较大,为方便观看,将其分开观看。

各模块功能具体说明:

1、KEY_DEAL:

主要是处理按键,包括对按键的记录和相应的参数计算。

对于八个按键开关:

KEY1:

RESET键(高电平有效);

KEY2:

波形上移;

KEY3:

波形下移;

KEY4:

波形扩展;

KEY5:

波形缩小;

KEY6:

波形左移(仅对存储后读取波形有效);

KEY7:

波形右移(仅对存储后读取波形有效);

KEY8:

选择示例波形(通过按键形成一个计数器,1是正弦波,2是方波,3是锯齿波,0没有)。

八个数码管中前三个是显示频率测量值的有效数字,第四个是显示频率的档位。

显示出来的频率档位只设置为两个,小于1K的为第一档,1K~1M的是第二档。

第一档显示百、十、个三位,二档显示百千、十千、千三位,所以有效数字有限。

对于按键基本是以触发器的形式保存的(在keydeal内部可以看出,同时对于需要计数的key值是每记住一次就清除一次,防止下次误读入,而对于waveform则无所谓,因为是持续显示)。

同时,KEY_DEAL模块负责计算对应于上移、下移时,LCD显示屏上的位置。

其计算原理需要结合下面有关计算LCD横纵坐标来看。

对于上移和下移,只需要根据按键值改变基准位置就可以了,比如每上移一次,基准行值减小“1111”,即15,往下移动则基准行值加上“1111”。

当然这里有位移限制值,当移动到最值时便不可进行操作。

对该模块的功能进行简单仿真。

本次仿真假使UP=1,即使波形上移,仿真波形如下:

2、FREQDEVIDER:

对系统时钟进行分频,得到本实验设计所需的各种采样频率。

本模块设计无难度,主要就是分频程序的编写。

以下为仿真波形:

输入为CLKIN,输出为各个分频信号CLKOUT1-11。

(由于截图问题,后面周期很大的波形没有表示出来。

3、FREQ_COUNT:

对信号进行频率测量。

对于信号频率的测量,主要思想是通过输入一个1s的脉冲(由20k频率的时钟计数20000得到1s,其中20k的时钟频率由分频器得到),在这1s内对待测信号进行计数,等同于过零点测频,1s后得到的数据就是待测信号的频率。

4、WAVE_CHOOSE:

用于选择需要显示的波形,分别是零、正弦波、方波、锯齿波。

00,01,10,11分别对应无波形输出、正弦波输出、锯齿波输出和方波输出。

5、DATA_CHOOSE:

根据WAVE_CHOOSE,从三个ROM中进行波形数据选择输出。

6、RAM_ADDR:

用来设置计算读取ROM地址的,包括步长的选择。

对于波形的扩展和收缩,需要通过此模块实现。

其设计思路如下:

如果将ROM中的数据每隔两个点读一次,那一个周期只要读32个点(总共64个),一个周期在LCD上占的列值为96(每三个列显示一列)。

如果要扩展时间波形,那么就将读取地址的步长变为原来的一半,与上面的比较,就是变为步长是1,那么我一个周期需要显示64个点,总共占据LCD的192列,这样波形就扩展了。

同理,如果要收缩,那么将时间步长增大,这样读取的数据点少,一个周期占的显示列就少,整个屏幕就可以显示更多的周期。

在设计中,是以2倍2倍的关系进行扩展和1/2的关系进行收缩的。

7、LCD_POSITION:

用来计算LCD中即将扫描的位置。

LCD的工作原理是逐点逐行的扫描,扫描的规格是1026*506,但是显示的有效区域是800*480。

对LCD的显示控制输出数据分为三类(一类为18位的RGB颜色值,一类是扫描时钟,最后一类是数据加载允许DE,即DATAENABLE)。

因此控制的原理是需要知道LCD现在扫描到什么地方,当到达需要显示的位置时,输出恰当的RGB值或者令DE=1。

LCD_POSITION模块用来计算下一个即将扫描的LCD的位置,输出为扫描位置的两个坐标参数,即行和列。

当LCD屏幕作为示波器显示屏幕时,可将LCD横轴作为时间轴,纵轴作为幅值轴。

在横轴上,每隔一个点取一个显示(这样的好处是需要的采样数据少,同时可以只显示几个波形,而不至于显的太拥挤,不然LCD上的点会比较密集)。

对于纵轴,因为要代表幅值,一个很直观的策略就是待显示的点与基准零点(取为368行,因为显示中心是240行,幅值最大256,上下折半就是128,那么最地点的位置就是240+128=368)之间的行差值就是数字信号的幅度。

所以在要显示的时候,首先从LCD_POSITION中读出下一个要显示的点,然后将列值作为ROM的地址(列值的低几位,因为整个屏幕要显示几个周期的波形),读出信号的幅值数据,将它与即将显示的行值相加,再和基准线比较,如果相等,就表明这是我们要显示的点,否则就不是,通过此来选择RGB的数值。

因为数据处理需要一些时间,从ROM中读出数据也需要时间,因此设置处理时钟和读写数据时钟的速度为80M,而LCD的扫描显示是20M,这样可以保证在下一个显示点真正显示的时候,数据已经处理好,到底要不要显示已经决定好了。

80M的时钟是通过20M的时钟经过锁相环(PLL0)实现的。

8、LCD_SHOW:

用来进行显示控制的,包括计算是否需要显示和RGB的输出。

对于LCD的显示,我们的处理方法是,在有效的显示区域(800*480)始终令DE='

1'

,在不需要显示的点设置RGB全1,显示出的是白色,在要显示点的部分,设置显示蓝色(蓝白对比色差比较大,便于观察)。

需要显示的位置是通过如下方法实现的:

该模块有一个输入L_POSITION,作为波形的基准行。

该输入是从KEY_DEAL中得到的,主要是处理按键对波形控制的上下移动。

在每次读入下次即将扫描到的点时,首先根据读入的列数看是否为偶数列,如果是(每两列显示一个点),则用即将扫描到的行值减去基准行值L_POSITION,将差值与从ROM中读入的代表幅值的数据相比较,如果相等,则下一个点需要显示对应的图样,输出RGB为蓝色,否则输出白色。

在KEY_DEAL中,上下移动的按键对输出L_POSITION进行调整,如果上移,则将L_POSITION的值减小“1111”,即15,否则加上“1111”。

如此便可实现波形整体的上下移动。

9、ROM1、ROM2和ROM3:

存储上述三种波形一个周期的数据。

此部分的设计无难点,主要就是将相关数据按照采样原理存入RAM中。

六、实验未实现功能分析说明及问题分析

本次实验中,对波形进行采样并且存储到外围RAM中进行存储这一功能没有验证。

但我们的设计思路是这样的:

A/D采样模块,由于实验室当时没有相关的信号发生器,故验收时无法验证,A/D采样整个工作的流程为加载信号Reset之后,先对信号进行频率测量,在测得频率之后(一秒多一点点的时间),选择采样的频率(外部的AD采样时钟始终为20M的高速采样),但是抽样存储的时钟是由信号时钟的频率进行选择的。

设置为12个档位,1~5,采样频率为100,5~10,采样频率为200,10~50,采样频率为1000。

以此类推,直到最高档500K~1M,采样频率为20M。

而对于存储波形,为了方便显示,和LCD同步,存储的地址也是每隔三个取一个,而我们打算使用的有效显示列数为600,就是要显示200个数据。

实际中我们存储400个数据(存储地址就达到1200),这是为了在扩展、收缩波形时有数据可以显示(不然收缩一下可以显示的部分只剩下一半了)。

当存储完毕,送一个标志位给LCD的显示控制部分,准备显示。

当可以显示时,我们开始利用和现验收程序中几乎一样的方法从RAM中读取数据进行显示(注意此时RAM停止写入数据),共显示100ms(LCD_DISPLAY里有一个计数器,这是为了保持波形的稳定)。

由于在20M的扫描时钟下,扫描一次完整的屏幕需要的时间是20000000/1026/506,大约是26ms,所以100ms可以扫描不到四遍,即可显示四次波形,当然,由于视觉暂留效应(1s24幅图即可),我们看到的是稳定持续的波形。

在显示一百秒后,我们需要进行下一帧数据的存储(这里LCD的显示是一帧一帧的,不可能实时同步显示,同样是由于视觉暂留效应)。

为了消除上一帧数据显示的影响,我们在显示完100ms后再等待100ms(tlc5510中可以看出),然后进行新一轮的实时数据存储,存储完再进行显示,如此重复下去。

当需要存储波形的时候,我们一边一帧一帧的实时显示数据,同时也进行数据的存储,存储到芯片上附带的DRAM中。

同样,需要根据DRAM的大小设置存储时限,超过时限就不再存储。

这个时限是根据采样速率的变化而变化的。

当需要显示存储的波形时,我们就利用类似的方法处理SDRAM,但是和实时显示不同的地方在于:

因为LCD大小有限,一次只显示200个点,因此在不进行选择时,我们只显示当前的200个点,这个以基准的读地址为基础。

只当按一下向左或向右键时,则进行下一帧或者前一帧的显示,对应的处理方法是使基准的读地址加上或减去600(200个点),同样的,要注意的范围问题。

参数MAX_ADDR就是防止一直向右到没有数据可读。

每次在显示完毕一次后(即显示100ms之后),不仅要计时100ms然后读取新数据,还要对按键值进行处理,以便做出相应的反应。

这在KEY_DEAL中可以看出,因为处理是在READ_DONE的上升沿进行的,这样做的好处是使波形可以稳定的显示,同时也可以保证波形随着控制尽快的变化(大概200ms的时延,几乎感觉不到,且正常情况下,连续按键两次的间隔要大于200ms)。

七、实验硬件分配及总体仿真波形。

由于验收时我们未能进行拍照保存展示,所以事后我们只能通过SignalTapⅡ对ROM里的数据进行读出仿真,其中正弦波波形图如下所示:

关于实验箱硬件说明和引脚分配说明

采用实验箱上内部提供的CLK0作为20M的系统时钟。

待测信号的时钟用的是CLK5。

八个数码管工作模式5。

数码管前四个用作频率测得值的显示,前三位显示信号频率的三个有效数字,第四位显示档位。

需要注意的是这里涉及频率计数器的细节(见上分析)。

按键选用数码管下的八个开关(因单片机和FPGA引脚有复用,故放弃键盘模块)。

实验箱各控制引脚说明:

正负15V的电源打开,LCD与FPGA的接口引脚全部打到ON(即连接状态),工作模式选在模式5。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2