简易数字存储示波器实验报告Word格式.docx
- 文档编号:22644998
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:797.15KB
简易数字存储示波器实验报告Word格式.docx
《简易数字存储示波器实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《简易数字存储示波器实验报告Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
系统工作流程图如下所示:
通过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。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数字 存储 示波器 实验 报告