新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于NiosⅡ的数字示波器的设计与实现

基于NiosⅡ的数字示波器的设计与实现

作者:时间:2015-01-16来源:网络收藏

  3.1.2 顶层软件设计

本文引用地址:http://www.amcfsurvey.com/article/268252.htm

  的顶层软件主要完成波形及参数的显示、运行/停止控制、光标测量、波形窗口移动、保存数据到SD卡等功能。

  (1)波形参数显示。绘制完图形界面后首先输出波形信息的固定部分,如Vpp:???mV,其中“???”将在读取相关参数后更新。然后读取相关参数并判断是否变化,若有变化则更新相关显示,在波形输出结束后将峰峰值更新到屏幕上。

  (2)波形显示。波形参数显示完成之后,CPU进入等待状态,若FIFO写满信号为1,则开始读FIFO数据并显示波形。流程如图4所示。

  

 

  (3)运行/停止控制。波形显示完后,若读到stop为1,则等到FIFO写满后进入停止状态。在停止状态FIFO中的数据保持不变。在停止状态若检测到用户输入,则执行相应函数。若检测到stop为0,则清屏,重绘图形界面,输出运行图标,返回到显示波形状态。

  (4)光标测量。在停止状态若检测到光标测量为1,则进入光标测量状态。首先将2个光标的y轴坐标转换为实际电压值输出到LCD,然后计算2个光标电压的差值输出到LCD上的相应位置处。再根据分频系数将2个光标的x轴差值转换为实际的时间,输出到LCD。最后绘制2个十字光标,每个光标由一横一纵2条直线构成,其交点位于波形上。

  光标绘制完成后检测用户按键,如果有左右移动或光标切换按键操作,则对相应光标的x坐标做加减运算,然后从缓冲区重新读取波形输出到LCD,将之前的信息覆盖,接着再次调用光标绘制函数绘制新的光标位置和光标的信息。流程如图5所示。

  

 

  (5)将波形保存到SD卡。在停止状态若检测到保存按键输入,则将数据保存到SD卡。首先在FAT表中查找空簇,返回簇号,并在FAT表中标记该簇已被占用,同时更新FAT表。然后在根目录中查找已存在的DAT文件,若有DAT文件则返回最大的文件名,否则返回0。然后将缓冲区的数据写入SD卡的对应扇区,扇区地址=根目录地址+根目录大小+(簇号-2)×每簇的扇区数。接着在根目录中找到一个空闲项,将文件名称、大小、所在簇写入该项,即完成文件的保存。最后在LCD上输出相应的提示信息。流程如图6所示。

  (6)波形显示窗口的移动。在停止状态若检测到左右移动输入,则进行波形显示窗口的移动。当左/右键按下时,若窗口没超过FIFO边界,则将窗口的首地址左/右移2个像素,然后更新显示的窗口,同时按比例更新窗口指示器的位置。

  (7)波形文件格式。用于保存波形的文件使用8.3格式命名,名称为OSC_xxxx.DAT,其中xxxx为文件的编号。由于每次采集的波形数据量大小相同,因此文件的大小也为固定值。FIFO深度为256 B,添加触发电平、触发沿、时间刻度等信息后,文件的体积为260 B。由于磁盘的底层读写操作是按照扇区进行的,一个扇区512 B,所以将文件的大小定义为512 B。前256 B为波形数据,第257 B为触发沿信息,第258 B为触发电平信,第259 B,260 B为分频系数,通过软件转换后可得时间刻度的大小。

  4 PC机软件设计

  PC端软件使用C语言设计。图形部分使用SDL库。PC机软件用于打开示波器保存的波形文件,还原波形信息,并可以进行光标测量。程序首先初始化SDL视频,然后打开文件读取260个字节,关闭文件。载入背景图案,初始化TTF字体。将波形绘制到背景图案上并计算相关参数输出到相应位置,绘制两个光标,等待用户移动光标。光标移动后重新载入背景和波形并更新相关信息。软件流程如图7所示。

  

 

  5 结语

  本文介绍了一种基于设计,实际测试结果表明,系统完成了的基本功能,各部分工作正常,各项指标达到设计要求。在设计过程中采用了FPGA芯片、嵌入式处理器以及Verilog HDL语言,简化了电路的设计,提高了灵活性,缩短了设计周期。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭