VGA显示的多通道数字示波器课设_第1页
VGA显示的多通道数字示波器课设_第2页
VGA显示的多通道数字示波器课设_第3页
VGA显示的多通道数字示波器课设_第4页
VGA显示的多通道数字示波器课设_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGEI2013~2014学年第一学期《专业综合设计》课程设计报告题目:VGA显示的多通道数字示波器班级:10电子信息(2)班姓名:许怀生张小东刘玉陈奇江陆子指导教师:崔雪英电气工程系2013年11月《专业综合设计》任务书课题名称VGA显示的多通道数字示波器指导教师崔雪英执行时间2013~2014学年第一学期第11周学生姓名学号承担任务评分刘玉1009121046理论分析与计算张小东1009121090硬件电路设计(AD采样;转换部分)许怀生100912108硬件电路设计(其他部分)陈奇1009121010软件设计(软件流程图部分)江陆子论文撰写,排版设计目的用FPGA平台实现VGA显示的多通道数字示波器设计要求(1)示波器实时采样频率为10MHz,A/D转换精度为10bits。(2)模拟信号输入电压为-2.5V+2.5V,频率为0-1MHz。(3)两路数字信号输入。数字信号低电平为0V,高电平为3.3V,频率为0-1MHz。摘要本设计是基于sopc技术的VGA显示数字存储示波器。采用在FPGA内嵌入32位软核处理器MicroBlaze的SOPC技术为核心来构建系统,充分利用FPGA中的可编程逻缉器件资源构成各部分数字电路,处理器与eda技术相互补充,形成了整个基于VGA显示的数字示波器的核心,完成高速数据采样控制、数据处理及波形显示等系统功能。设计分为模拟信号预处理电路、AD采样电路、触发电路、RAM存储、Flash存储、可调数字信号产生、MicroBlaze控制模块、VGA显示输出与人机交互接口控制。设计中采用实时采样,AD采样后的数据经过触发电路,满足触发条件后送到RAM中,然后显示在显示器上,并能够相应按键存储命令,实现波形数据的非易失性存储。设计中发挥可编程逻辑器件和处理器各自优势,符合现代设计理念,满足设计要求。关键词:多通道,FPGA,数字示波器,10位AD,VGA显示目录TOC\o"1-3"\u《专业综合设计》任务书 I摘要 II目录 III第1章方案论证与设计 11.1设计思路 11.2方案论证与比较选择 11.3系统总体方案分析 2第2章理论分析与计算 32.1实时采样与等效采样的选择 32.2采样速率分析 32.3垂直灵敏度分析 32.4扫描速率分析 42.5显示分辩率分析 4第3章系统硬件设计 53.1信号调理电路 53.2模拟通道与AD采样电路设计 53.3A/D转换电路 63.4触发电路设计 73.5FPGA部分硬件设计 73.5.1VGA显示部分 83.5.2数字信号的产生模块 83.5.3FLASH存储部分 83.5.4键盘模块 8第4章软件部分设计 104.1软件流程图 104.2软件组成 11第5章系统测试与结果分析 125.1测试仪器 125.2测试方法 125.3测试数据 125.4实际效果 135.5结果分析 13总结 14参考文献 15附录 16答辩记录及评分表 22第1章方案论证与设计1.1设计思路本系统以Xilinx公司的FPGA芯片XC3S500E为控制核心,FGPA内建双缓冲机制的VGA显示模块,实现中文信息显示和绘制波形的颜色控制。使用Verilog描述硬件控制A/D转换器,存储采样数据并进行数据处理,简化了硬件电路,提高稳定性。输入模拟信号系统通过4级级联放大器,达到了所要求的带宽和精度。使用硬件比较器达到单次触发,和存储显示功能和正负延时功能。选用存储容量为8K的EEPROM芯片24C64作为手动存储的存储介质,实现掉电不丢失。另外通过软件实现了自动选择扫描速率和垂直量程的功能。输入信号输入信号AD采样XilinxFPGAEXCD-1开发板触发电路数字通道波形存储VGA显示器PS2键盘信号调理电路图1系统框图1.2方案论证与比较选择数字存储示波器系统由信号调理电路、触发电路、A/D采样、数字通道、数字信号产生电路、控制处理系统、键盘控制模块、VGA显示模块等组成。方案一:由Verilog硬件描述语言完成全部逻辑控制功能,组成可编程片上系统。此方案优点是处理速度快,不占用多余的片上资源。但是系统功能复杂,且控制、运算量大,开发起来比较困难。方案二:采用EXCD-1开发板为控制核心,由Verilog硬件描述语言实现采样频率控制模块、数据存储控制模块和VGA显示,键盘人机交互模块。嵌入MicroBlaze软核作为主控制模块,用来处理实时性要求低和复杂的运算,并完成彩色通道显示,中文界面显示等。整个控制系统都集中在单个芯片上,大大简化了外围硬件电路设计,增加了系统的稳定性和可靠性。FPGA的高速性能比其他控制芯片更适合于高速数据采集和处理,而且使用FPGA内部存储模块完成输入信号的量化存储,在存储速度上有着外接RAM无法比拟的优势。方案选择:综上所述比较可知,方案二既可满足题设基本要求又能充分发挥扩展部分,电路简单,易于控制,所以选择方案二。1.3系统总体方案分析系统总体上利用Xilinx系统开发环境ISE,内建AD采样控制,键盘控制,VGA控制等多个模块,并利用XPS将MicroBlaze微处理器嵌入到FPGA中,实现了可编程片上系统。MicroBlaze通过LBM总线访问片上存储模块BlockRAM;通过OPB总线上挂接外设接口连接并进行驱动。VGA显示部分采用双缓冲机制工作,在FPGA内建GRAM,按照一定时序将将RAM内缓存数据映射到VGA显示器上。通过这种机制,我们可以灵活地另外大跨度增益自动调节是程控增益放大电路设计的一个难点,本系统通过4级级联放大器,并合理地由软件控制继电器实现增益的步进,达到了要求的带宽。第2章理论分析与计算2.1实时采样与等效采样的选择通常采样是按固定顺序进行,并且采样顺序与示波器屏幕上显示的顺序相同,这就是实时采样,实时采样技术的好处就是可以捕获单个信号。题目给出AD的采样速率为10M,当档位在1us/div,显示器上选择分辨率为40点/div,此时显示器上每四个相邻扫描点为相同的幅值,但被检测信号的频率范围是在0—1MHz,即在最高频率1MHZ时,实时采样可以在每周期采10个点以保证取到一个完整的信号波形。等效时间采样又称重复采样,在满足以下两个条件时:1.波形必需重复;2必需稳定触发,示波器可以从多个波形周期获得波形不同点的采样,然后在屏幕上完整恢复波形,它包含顺序采样和随机重复采样两种技术,其好处是可用很慢的模数转换器。,且题目要求能检测单次按键的波形,等效采样不能完成非周期波形的采样,故选用实时采样方式。2.2采样速率分析显示波形的水平轴的调节通过采样点的时间间隔的变化来调整,题目要求有1us/div,1ms/div,1s/div三个档位,并且水平显示分辨率为20点/div,因此对应的采样速率是25ns/点、25us/点、25ms/点,当显示波形的水平分辨率为1us/div时,能分辨的信号最高频率为1MHZ,由奈圭斯特定理要求采样速率至少为2MHZ才能使信号不失真;分辨率为1ms/div时,可以分辨的信号最高频率为1KHZ,采样速率至少应为2KHZ,同理分辨率为1s/div时,采样速率至少为2HZ。本设计中保持AD的采样速率为10M,完全可以满足实际需求。2.3垂直灵敏度分析设计要求垂直灵敏度分为10mv/div,100mv/div,1v/div三档,我们的垂直刻度为8div。A/D转换器的输入信号电压幅度为0~2V,当示波器满刻度显示时,被测信号的幅度将分别为:VI1=1V/div×8div=8V,VI2=0.1V/div×8div=0.8,VI3=10mv/div×8div=80mV。A/D转换器的满刻度输入值为VMAX=4V,程控放大器电路的增益AN=VMAX/VIN,其中N=1、2、3,对应于3挡不同垂直灵敏度的增益分别为:A1=2/8=0.25;A2=2/0.8=2.5;A3=2/0.08=25。我们进一步提高了参数,增加了250倍档,1mv刻度。2.4扫描速率分析A/D的转换速率取决于被测信号的频率范围,或DSO对扫描速度的要求,设计要求扫描速度含1ms/div、1μs/div、1s/div三挡,我们通过FPGA内建分频电路实现了最高采样率16MSa/s,每10倍频步进,共六档,增加了该示波器的实用性。水平显示分辨率为64点/div,以保证显示波形清晰稳定。2.5显示分辩率分析显示波形的垂直分辨率:显示RAM中的数据为12位,其中模拟信号经AD后的值为10位,两路数字信号的值各占1位,,要求中有垂直分辨率为10mv/div,100mv/div,1v/div,垂直刻度为8div。A/D转换器的输入信号电压幅度为0~5v,当示波器满刻度显示时,被测信号的幅度将分别为:VI1=1V/div×8div=8V,VI2=0.1V/div×8div=0.8v,VI3=0.01v/div×8div=0.08V。A/D转换器的满刻度输入值为VMAX=5V<8v,根据题目要求通过外部输入来信号来改变分辨率以适应不同精度。将AD采样的值和数字信号的值据当前档位进行计数存储,即1us/div时每10个点保存一个,1ms/div时每10000个点保存一个,1s/div时每采样10000000个点保存一个。第3章系统硬件设计在Xilinx的EXC1控制板的基础上,为实现系统功能,所设计的外围硬件电路主要包括:电源电路、信号调理电路、A/D转换电路、触发电路、及键盘接口电路。下面只叙述其主要功能实现部分。3.1信号调理电路由于模拟信号输入为±2.5V,而所用A/D有效输入为2Vp-p,因此需要输入信号进行比例缩小,因此需要设计一个比例运算电路。本设计采用了高速放大器AD826来实现这一功能。AD826可以作为出色的ADC/DAC缓冲器或有源滤波器用于数据采集系统中,0.01%建立时间为70ns,最大输入失调电压低至2mV。利用AD826来搭建一个反向比例运算电较路,其运算公式为:根据设计要求,取Rf=1KΩ,R1=2.5Rf=2.5KΩ,Rp=R1∥Rf=0-71KΩ。为了保证信号显示与输入信号同相,再采用AD826搭建反相器,将输出信号接入到后面的AD876中进行采样转换。信号调理原理图3.2模拟通道与AD采样电路设计此部分由于贴片元件多,抗干扰等要求苛刻,因而自己绘制了PCB。模拟部分由AD采样部分,程控放大部分,电源部分等构成。AD采样电路图程控放大器的作用是对输入信号进行衰减或放大调整,使输出信号电压在AD转换器输入电压要求范围内。信号从探头输入,进入程控放大(衰减)电路进行放大(衰减),再对被放大(衰减)的信号进行电平抬高后送入高速AD转换器对信号进行采样,采样所得的数据存入FPGA内建的存储器中。时钟引出插针。由FPGA为高速AD转换器提供从32Hz-16MHz的6种不同的频率信号作为不同水平扫速时的采样时钟频率。从程控放大器输出的信号送入AD转换器。在本电路中选用的是精密运算放大器OPA4727和高速AD8012,合理的搭配两种运放来设计电路,互补优劣,使系统既达到了高精度和高带宽,又大大节约了设计成本。我们选用10bit,65MSa/s,的ADC10065.达到了采样率和精度的要求。3.3A/D转换电路AD876是一款CMOS、160mW、10位、20MSPS模数转换器(ADC),内置一个片内输入采样保持放大器。它采用多级流水线架构,内置输出纠错逻辑,可提供精确的性能,并保证在整个工作温度范围内无失码。参考输入的驱动和检测连接将外部压降降至最低。可以将AD876置于待机工作模式,此时功耗降至50mW以下。模拟输入端接受2Vp-p值范围内胡信号,数字I/O接口支持+5V或+3.3V逻辑。可以将数字输出引脚置于高阻态;输出格式为标准二进制编码。A/D转换模块原理图3.4触发电路设计数字存储示波器中触发电路的作用是:在满足触发条件时开始对采集的数据按规定的起点地址进行存储和显示。触发电路如图所示。电阻R2、R3用于调节或选择触发电平,分别为和20KW,后者为可调电位器,可以在0~5V范围内任意选择触发电平。触发电路原理图3.5FPGA部分硬件设计顶层模块包括例化的8个子模块。1.AD采样时钟产生模块Modulead_clk_gen。2.AD与fifo控制模块Modulefifo_control(核心控制模块,作用为AD与fifo读写控制和Uart发送控制)。3.VGA显示模块vga_drv与GRAM模块。4.键盘输入模块。5.锁相环倍频模块。6.缓存采样数据的双口RAM模块。下面对有关部分进行说明:3.5.1VGA显示部分该模块使用双缓冲机制,软核MicroBlaze通过读写显存来控制VGA显示。考虑VGA显示部分要求至少有三种颜色,我们使用2bit数据表示一个点,可以完成4色显示,可以对不同通道使用不同颜色加以区分。网格与水平标度轴由硬件实现,CPU通过接口方便地进行访问,充分利用了SOPC的优势。GRAM位宽32bit,大大提高了FPGA刷屏的速度。vga_drv与GRAM对内嵌的MCU设计成为BlackBox,MCU只需向相应地址发送合适数据即可显示想要的波形。经实践证明该方案可稳定地显示多种颜色和中文信息。3.5.2数字信号的产生模块在FPGA内建比较器,使用一个表示信号平均值的数据与AD采样得来的数据进行比较得到同频同相的A路信号,再经由A信号触发计数器,经过合理设置计数脉冲,得到有45°延时,占空比25%的B路信号。表示信号平均值的数据由MicroBlaze测量信号提供。3.5.3FLASH存储部分由于要求掉电不丢失,因此我们使用开发板上的一块AMD的型号为AM29LV160DB的FLASH存储器,当按下存储健后,FLASH把RAM中的数据写到FLASH中,根据资料中的读写时序图,使用状态机实现这个过程,当按下回显的按键时将FLASH中的数据读回图像显示RAM,再显示出来。3.5.4键盘模块键盘采用PS2键盘,,用FPGA作PS2键盘的控制器,在FPGA中嵌入相应的功能模块,充分利用了FPGA的内部资源,增加了系统的可靠性和灵活性。键盘电路第4章软件部分设计4.1软件流程图系统程序流程图开始开始上电初始化进入主循环启动AD采样等待数据处理完与双口RAM交换数据测量,画波形及相应信息显示读取按键值有按键触发电平调节RUN/STOP存储功能measure响应用户其他操作4.2软件组成本系统的软件部分包括AD采集控制,水平分辨率控制,垂直分辨率设置,多个颜色的波形画线函数,测量功能,自动功能,存储与回放,存储显示状态控制,通道选择控制,用户界面实现等。由于系统充分利用了SOPC的优势,将大部分工作交由硬件完成,从而大大简化了系统的软件设计。第5章系统测试与结果分析5.1测试仪器DS1102E数字示波器1台,EE1641D函数信号发生器1台,数字万用表15.2测试方法用标准数字示波器和本设计示波器并联测量同一信号的幅度和周期,测量所得数据分别记为Vi/Vo,T1/T2。5.3测试数据表1.垂直灵敏度测试档位输入Vi/V输出Vo/V误差=|Vo-Vi|/Vi×100%1V/div2.50V2.47V1.25%1.00V0.97V3.0%100mv/div300mV297mV1.0%100mV98mV2.0%10mv/div30.0mV31.0mV3.3%10.0mV10.3mV3.0%表2扫描速率测试档位输入f1输出f2误差=|f1-f2|/f1×100%1s/div5.00Hz5.09Hz4.5%15.00Hz15.33Hz1.2%1ms/div220Hz218Hz1.0%660Hz663Hz0.45%1us/div220KHz224KHz1.8%660KHz643KHz2.6%表3数字通道测试档位输入f1输出f2误差=|f1-f2|/f1×100%1s/div5.00Hz5.04Hz0.8%15.00Hz15.30Hz2.0%1ms/div220Hz216Hz1.8%660Hz665Hz0.75%1us/div220KHz217KHz1.3%660KHz664KHz0.6%由表中数据知,测量结果都在测量误差允许范围内,满足题目要求的误差≤5%。5.4实际效果图2实际显示效果图5.5结果分析本设计完成了题目所要求的各项基本指标,并达到了全部的发挥部分要求。实现了实时显示和存储多通道显示,自行产生两路数字信号,且A路数字信号与输入模拟信号同频同相,中文提示时间、幅度刻度和通道颜色,图像左右平移,存储显示的正负延时。很好地完成了设计任务。总结本设计以EXCD-1开发板为控制核心,实现了多通道VGA显示的数字存储示波器。通过测试,系统不但完成了基本要求,也完成了发挥部分的要求。在设计制作过程中遇到了不少难题,但经过几天的不懈努力,经过一次次的测试和改,最终圆满完成了设计任务。参考文献[1]李辉.基于FPGA的数字系统设计.[M]西安电子科技大学出版社[2]黄智伟.全国大学生电子设计竞赛技能训练.[M]北京航空航天大学出版社[3]何宾.xilinx可编程逻辑器件技术详解.[M]清华大学出版社[4]夏宇闻verilog数字系统设计教程北京北京航空航天大学出版社,2003[5]孙航XIlinx可编程逻辑器件的高级应用与设计技巧,北京,电子工业出版社,2004附录主要程序1、############################CreatedbyBaseSystemBuilderWizardforXilinxEDK10.1.03BuildEDK_K_SP3.6#SunSep1922:50:272010#TargetBoard:HepHepEXCD2-500BoardRevC#Family:spartan3e#Device:XC3S500E#Package:PQ208#SpeedGrade:-4#Processor:microblaze_0#Systemclockfrequency:50.00MHz#OnChipMemory:8KB#TotalOffChipMemory:1MB#-RAM=1MB###############################################################################2、户的按键做出响应程序部分/************************************************///Locatedin:microblaze_0/include/xparameters.h#include"xgpio_l.h"#include"xparameters.h"#include"xgpio.h"#include"xbasic_types.hXGpiokey,output;volatileu32out_put;//xxxxxxxxxxxxxxxxxxxx共18位//波形左移波形右移标尺左移/右移暂停/继续开显示/显示时间尺度幅值单位数字信号频率调节存储回放多道显示选择 volatileu8h_scale,v_scale,trig,disp,channel,mov; volatileu8freq,vga_on_off,pause_run,,cursor_left.cursor_right;////////////////////////////////////////////////////////////////////////函数名:delayusdelayms//功能描述:延时2us1ms//参数:Xuint16delay//返回值:void/////////////////////////////////////////////////////////////////////////staticvoiddelayus(Xuint16delay){volatileXuint16i,j;for(i=0;i<delay;i++) for(j=0;j<10;j++) ;}staticvoiddelayms(Xuint16delay){volatileXuint16i,j;for(i=0;i<delay;i++)for(j=0;j<3785;j++);}/*************************************************Function:key_scan()3、scription:扫描键盘并返回键值Calls:nonoCalledBy:mainTableAccessed:TableUpdated:/Input:/。Output:Return:按键值Others:*************************************************/Xuint8key_scan(){Xuint8value;Xuint8temp,sccode,recode; pio_SetDataDirection(&key,1,0x00);//设置为输出 //P1=0xf0;XGpio_DiscreteWrite(&key,1,0xf0);//输出0xf0delayus(1);XGpio_SetDataDirection(&key,1,0xf0);//设置为输入if((XGpio_DiscreteRead(&key,1)&0xf0)!=0xf0)//若读回值不是0xf0{delayms(5);if((XGpio_DiscreteRead(&key,1)&0xf0)!=0xf0){//P1=0xf0; XGpio_SetDataDirection(&key,1,0x00);//设置为输出XGpio_DiscreteWrite(&key,1,0xf0);//输出0xf0 //temp=P1;XGpio_SetDataDirection(&key,1,0xf0);//设置为输入temp=XGpio_DiscreteRead(&key,1);//读回值 sccode=temp&0xf0;//取高四位//P1=0x0f;XGpio_SetDataDirection(&key,1,0x00);//设置为输出 XGpio_DiscreteWrite(&key,1,0x0f);//输出0x0f //temp=P1; XGpio_SetDataDirection(&key,1,0x0f);//设置为输入temp=XGpio_DiscreteRead(&key,1);//读回值 recode=temp&0x0f;//取低四位temp=sccode|recode; //xil_printf("temp:%x\r\n",temp);switch(temp) {case0xEE:value=0;break;case0xDE:value=1;break;case0xBE:value=2;break;case0x7E:value=3;break;case0xED:value=4;break;case0xDD:value=5;break;case0xBD:value=6;break;case0x7D:value=7;break;case0xEB:value=8;break;case0xDB:value=9;break;case0xBB:value=10;break;case0x7B:value=11;break;case0xE7:value=12;break;case0xD7:value=13;break;case0xB7:value=14;break;case0x77:value=15;break; default:value=16;break; } }elsevalue=16; } elsevalue=16; return(value); }intmain(void){ u16result; XGpio_Initialize(&key,XPAR_KEYBOARD_DEVICE_ID);//初始化键盘接口 XGpio_Initialize(&output,XPAR_OUTPUT_DEVICE_ID);//初始化输出接口/* XGpio_SetDataDirection(&output,1,0x0); while(1){if((result=key_scan())!=16) { xil_printf("pressbutton%d\r\n",result); switch(result) { case0://VGA显示的开关if(vga_on_off)vga_on_off=0;elsevga_on_off=1;out_put=out_put&ox3bfff(vga_on_off<<14);while(key_scan()==result);break; case1://调节水平显示的时间单位 ++h_scale; if(h_scale==3) h_scale=0; out_put=out_put&0x3cfff|(h_scale<<12); while(key_scan()==result); xil_printf("h_scale%d\r\n",h_scale); break; case2://调节垂直显示幅度单位++v_scale; if(v_scale==3)v_scale=0; out_put=out_put&0x3f xil_printf("v_scale%d\r\n",v_scale); while(key_scan()==result); break; case3://增加数字信号的频率 ++freq; if(freq==11)freq=0; out_put=out_put&0x3fc3f|(freq<<6);s xil_printf("frequp%d\r\n",freq); while(key_scan()==result); break; case4://减小数字信号的频率 if(freq==0)freq=11; --freq; out_put=out_put&0x3fc3f|(freq<<6); xil_printf("freqdown%d\r\n",freq); while(key_scan()==result); break; case5://存储波形trig=1; out_put=out_put&0x3ffdf|(trig<<5); xil_printf("storage\r\n"); while(key_scan()==result); break;case6://回放波形 disp=1; out_put=out_put&0x3ffef|(disp<<4); xil_printf("storagedisplay\r\n"); while(key_scan()==result); break; case7://通道选择 ++channel; if(channel==3) channel=0; out_put=out_put&0x3fff3|(channel<<2); xil_printf("channelchoose%d\r\n",channel); while(key_scan()==result); break;case8://左移m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论