




免费预览已结束,剩余36页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要本设计是一个采样率高达100MSPS、模拟带宽10MHz的便携式数字示波器,采用XILINX的FPGA器件来作为系统核心器件来设计。 系统使用可编程逻辑实现部分数字电路功能,使用内嵌Microblaze软核CPU执行系统的运算与控制功能。示波器的模数转换器采用AD9283-80实现。整个系统的设计由两部分完成,一是完成硬件电路的设计;二是采用ise10.0开发套件设计系统的软件功能。本便携式数字示波器具有体积小、重量轻、成本低及低功耗的优点。 关键词: Microblaze;A/D转换器;示波器;FIFO;VHDLAbstractThis design is a sampling rate as high as 80MSPS, simulation of portable digital oscilloscopes bandwidth 10MHz XILINX FPGA device, the core device as a system design. Systems use the FPGA internal programmable logic realize part of digital circuit function, use inline Microblaze soft nuclear CPU execution system operation and control function, oscilloscope by AD9283-80 adc. The whole system design consists of two parts, protel99se finish EDA software finish printed circuit board design, use ise10.0 development kit to design the system of FPGA part. This portable digital oscilloscopes has volume is small and exquisite, low cost, low power consumption advantages.Keywords: Microblaze A/Dconverter Oscilloscope FIFO VHDL3目 录绪论11 便携式数字示波器的组成21.1设计原理及思路21.2便携式数字示波器的结构21.3便携式数字示波器的性能32 方案论证32.1任务分析与实现32.2硬件方案论证42.2.1整体方案选择42.2.2显示器件选择52.2.3A/D转换器选择52.2.4可编程增益放大器方案论证62.2.5模拟电压输出方案论证72.3软件代码量估算73 便携式数字示波器硬件设计83.1 电源电路设计93.2 耦合和衰减电路设计103.3 增益可变放大电路设计103.4 A/D转换电路设计113.5PWM电路设计123.6显示设计133.7整体电路144 便携式数字示波器FPGA设计154.1设计思路154.2顶层设计154.3CPU设计174.4时钟分配模块设计184.5采样率设置模块设计194.6FIFO模块设计194.7触发设置204.8pwm模块设计215 microblaze软件设计215.1软件总体概述215.2文字显示设计225.3波形显示函数设计225.3波形读取225.4采样率设置235.5参数刷新236 调试与分析236.1调试中遇到的问题简述236.2热转印制作电路板的问题现象以及解决方法236.3microblaze程序中定义长数组后程序不能在rom中运行246.4lcd刷新缓慢的解决方法246.5A/D转换器的调试246.6调试过程24结论27参考文献28致 谢28IIII北京城市学院2011届毕业设计绪论示波器作为在电子技术领域中重要的测量工具有着无可取代的地位,它能将探测到的电压波形显示到屏幕上,为电路设计者提供了一种直观的电路状态反映。示波器不仅仅是一种重要的测量仪器,他更是电子技术飞速发展的结晶。早期的示波器是一种模拟电子仪器,输入的电压利用电磁偏转控制电子束移动,这样电子束在移动的过程中激发屏幕上的荧光粉发光从而留下轨迹,此轨迹被称之为“波形”,这是一种实时的波形。随着电子技术的发展,这种实时的波形难以满足人们的需要,于是数字存储示波器诞生了,数字示波器采用“存储回放”的思想将模拟的电压信号转换为数字信号进行存储并显示到屏幕上,这中方法使得各种瞬间的信号捕捉变得更加容易。设计一台性价比高的示波器成了现代厂商们追求的目标,这些示波器往往具有较全面的功能和优异的性能,但是他们的体积往往比较大且操作繁琐,在实际应用的过程中大多数情况下不需要那么全面的功能,因此设计一个精简的便携式示波器非常有必要,就像现在的精简指令计算机一样,不常用的指令就给去掉,那些复杂的指令虽然方便,但是占用资源。本便携式数字示波器主要优点是:1体积小巧;2成本低廉;3方便易用;4系统集成度高,稳定性好;5硬件可编程;6系统升级方便。1 便携式数字示波器的组成1.1设计原理及思路数字示波器的基本原理就是将模拟信号转换为数字信号显示到屏幕上,其核心部分就是控制电路和模数转换电路。控制电路为模数转换电路提供时钟以及控制信号并负责数据的处理。本设计采用CPU配合高速A/D、模拟调理电路、液晶显示屏、探头等基本单元完成数字存储示波器。系统的模拟部分包含了耦合电路、衰减电路、增益控制、基准控制、模数转换器等。系统人机交换系统由一块320240彩色液晶显示屏和键盘组成,使用CPU来控制显示屏显示波形以及菜单,CPU通过读取按键状态来判断用户的操作从而执行相应的操作原理示意如图1.1所示。图1.1 数字示波器原理示意图1.2便携式数字示波器的结构便携式数字示波器的结构如图1.2所示:控制器数据采集模块显示模块按键电源图1.2 便携式数字示波器设计框图1.3便携式数字示波器的性能便携式数字示波器具有很高的性能,其具体参数:屏幕分辨率:320240;最高采样率:80MSPS;时基范围:250ns-5s,以1、2、5的方式变化;x轴灵敏度:从1mv到50v;存储深度:256字节;模数转换器位数:8位。2 方案论证2.1任务分析与实现分析任务书,本设计主要的任务就是采集模拟信号的幅值将其处理后显示到lcd屏幕上。数据转换的工作将由A/D转换器来完成,数据转换完成后将由CPU进行处理,由于A/D转换器的采样速率较高,而一般的CPU的速度相对比较慢,这就需要在A/D转换器与CPU之间加上数据缓存,在一定的时钟配合下可以精确的采集并再现数据。当然,这个采集的过程中并不是将数据完整的捕捉保存的,根据实际的应用,示波器并不需要每时每刻都更新数据,仅仅是在触发条件满足的时刻需要将波形采集并保存。对于示波器,还有一些其他的辅助功能,如频率测量、峰峰值检测这些功能将会在扩展部分完成。2.2硬件方案论证2.2.1整体方案选择本电路需要用到大量数字逻辑电路,如时钟分配、pwm、触发控制、频率计数等,这些电路可以通过使用74系列电路来实现,也可以通过可编程逻辑器件来实现,主要有如下两种方案供选择:方案一:对电路逻辑进行分析后得出逻辑表达式以及真值表,使用74系列芯片搭建,这样做成本比较低,但是印刷线路板设计要求比较高,电路的稳定性比较差。方案二:采用专用的芯片进行设计,比如可以使用专门的PWM芯片或数模转换实现模拟电压的输出,这类电路往往成本较高,且通用性不强。但是这些电路都是经过专门的设计、测试得出的产品,稳定性非常高。方案三:采用可编程逻辑器件来实现这部分电路,可以选择的可编程逻辑恰见有GAL、CPLA、FPGA等,这类芯片成本往往介于以上两种方案之间。如上的可编程逻辑器件中GAL已经不常用了,它是早期的可编程逻辑,内部逻辑两很小,不适合作为本设计的方案。本设计中的CPU起着系统核心的作用,负责整个系统的运作,对于CPU的选型有如下方案:方案一:采用单片机,早期的单片机性能非常弱,比如51系列的单片机的rom只有4K,对于本设计力不从心,还有一些精简指令的单片机如:avr、pic这些单片机性能比51稍强,内存也有不同的等级,基本可以满足本设计的要求。最近新出的一些32位单片机是一个不错的选择,如STM32可以运行在最高72MHZ的时钟频率下,内部集成了单周期硬件乘法器,运算性能很高,价格不超过20元,非常适合本系统的应用。方案二:采用嵌入式微处理器,这些器件往往具有几百MHZ的运行频率,运算能力非常强大。嵌入式操作系统要求系统存储资源很大一般处理器内置存储往往不能满足要求,这些处理器的嵌入式微处理器的存储器往往是外置的,这样硬件成本比方案一增加了数倍。方案三:某些可编程逻辑器件(FPGA)可以内建微处理器软核,这样做大大增加了系统的稳定性且性价比非常高。综合以上两个部分的电路的要求,本设计将采用fpga作为和核心器件,因为有现成的spartan3E的开发板,所以本设计将使用开发板加电路的形式,对于系统的逻辑数量在设计之前还没有办法估算,基本采用先设计后调整的方式。具体方式为把能用VHDL实现的部分用VHDL实现,当逻辑数量不够了再将一些部件使用cpu来实现,这样达到一个动态的平衡使得系统的资源最佳利用。2.2.2显示器件选择电路最主要的功能是为人类服务,有了服务就得有人机对话的设备,最通常的电子设备都装有显示器件或发声器件来告知人们电路的运行状态。本设计中,需要的交互设备是显示器件,还有键盘。目前电子系统中常用的显示设备是发光二极管、数码管、lcd,显然发光二极管和数码管不适合本系统的额要求,对于lcd有两种方案可以选择。方案一:使用单色lcd,这种方案操作简单对CPU要求不高,但是单色lcd一般都是工业设备上使用,由于出货量不是很大,所以价格往往较贵。方案二:采用tft彩色lcd,此方案最大的优点是成本低廉,tft彩色lcd一般为消费类电子产品必备,这类产品出货量很大,这样价格就会非常低廉,但是彩色液晶一般为一个像素需要16位的数据,对于CPU的要求较高。考虑到成本问题,本设计将采用tft彩色液晶,且显示波形色彩多样,内容更加丰富,提高系统的美观。2.2.3A/D转换器选择A/D转换器是整个示波器的核心器件之一,A/D转换器的性能决定了数字示波器的性能,目前A/D转换器成了限制数字示波器带宽提高的主要瓶颈。A/D转换器的主要参数有分辨率和速度,而对于数字示波器来说速度这个指标相对分辨率显得更加重要。目前高速A/D产品比较完善的厂家都来自国外,由于某些限制,一些高速A/D是不进入中国大陆销售的,但是对于本市合计要求这样速度的A/D在市场上很容易买到,且有多数场上可以选择,下面是AD公司的选型过程,首先进入高速A/D的性能选择=9bit、50-100Mhz,如图2.1所示:图2.1 AD公司网站器件类型选择进入器件选型,如图2.2所示:图2.2 AD公司高速模数转换器列表选择了一款性价比高的A/D转换器AD92可编程增益放大器方案论证示波器是用来分析信号用的,所以X轴的灵敏度应该是可调的,表现在电路上即是电路的增益是可变的,可以选用可编程增益的放大器来解决这个问题,在可编程增益模块的设计上有三种方案可以选择:方案一:使用受控于模拟电压的可编程增益放大器,这类电路的增益需要一个模拟电压来控制,这样的电路控制精度较高,且噪声低。方案二:使用受控于数字信号的可编程增益放大器,这类电路的增益需要对其输入一个数字量来控制,这样的电路控制精度较低,且因为引入了数字电路所以噪声很大。方案三:使用运放加模拟开关来控制,具体做法是使用模拟开关对运放引入不同等级的负反馈。这样的方案相对于以上两种方案先得体积庞大,不适合本设计。考虑了本设计便携的理念舍弃了方案三,因为示波器是分析信号的,应该尽量减少噪声,本设计选用了方案二。对于模拟集成电路,AD(analog devices)公司在业内享誉盛名,下一步的期间选型工作是在AD公司网站上进行的,如图2.3所示,本设计选用了一款性价比较高的可变增益放大器ad603,ad603的最高工作频率为90Mhz,满足系统要求。图2.3 增益可编程放大器选型图2.2.5模拟电压输出方案论证系统需要输出两路模拟电压信号分别对可编程增益放大器和信号直流电平的控制,可以有两种方案设计:方案一:使用专门的数模转换器将cpu输出的数字信号转换为模拟电压,此方案为专用ic一般的价格较贵;方案二:使用pwm进行DA转换。此方案优点是节省成本,但是其精准度不是太高。综合以上两种方案,对比AD转换器的分辨率可以得知,方案二的精度已经足够了。2.3软件代码量估算3 便携式数字示波器硬件设计便携式数字示波器的各个模块以及连接如图3.1所示:探头耦合电路衰减器增益控制电路基准控制模数转换FIFOCPU触发控制时钟FLASHSRAM按键LCD指令总线数据总线PWMFPGA图3.1 系统具体实现框图主要模块说明:1探头,探头在示波器系统中起着将电信号引入到系统的作用,同时还起着改善信号质量以及抗干扰的功能,在本设计中将会采用现成的商品探头。2耦合电路,负责交直流信号的切换。3衰减器,有时候示波器输入探头获得的电压会远远大于电路能承受的范围,这就需要衰减器将输入信号减弱至合适的范围。4基准控制,本模块负责采集到的信号的基准点的控制,采用的是模拟电压来控制此模块。5模数转换,这里采用的是AD9283这块转换速率为80MSPS的8位模数转换器,对于320240的液晶来说足够了。6FIFO,由于采样率最高设计到80MHZ,但是CPU还要干好多事,不能将所有的时间都用来采集信号,所以将信号先自动的存到一个存储器里,等存满了通知cpu来读取并显示,这样的存储器就是FIFO先入先出存储器。7PWM,此模块负责将数字信号转换为模拟信号来控制增益和基准。8触发控制,本模块根据用户设定对输入信号进行检测,当达到触发条件的时候通知CPU可以进行数据采集。3.1 电源电路设计电源模块负责整个系统的供电,为系统提供能量。电源模块的好坏直接影响系统的性能,电源的主要参数有噪声水平、动态响应,噪声问题一直人们关注的焦点。电源的噪声有来自于电网的,有来自于负载的,也有来自于环境干扰的,也有来自于器件的,还有因为某些电路设计不合理导致震荡的。在电子设备中最大的噪声就是各个负载所产生的噪声特别是数字电路。为了减小电路中的噪声,提高系统稳定性,本示波器的模拟电路跟数字电路分别使用两套不同的电源,这样就减少了数字电路对模拟电路的干扰。同时为了防止各个器件之间的相互干扰,在靠近器件的电源和低之间加入两人高频旁路电容。电源电路的设计如图3.2:图3.2电源电路设计其中电源的输入为正负5V稳压电源,分别接滤波电容和高频旁路电容来抑制电网中的波纹以及高频干扰,+5V电压经过LM117-3.3变换为3.3伏的电压为模数转换器的模拟端供电,其他的模拟器件采用正负5伏双电源供电。整个系统模拟电源的地跟数字电源的地是分开的。3.2 耦合和衰减电路设计示波器的输入端应该具有输入直流和交流的功能,为了介入幅值比较大的信号还应该配备衰减电路,这部分电路如图3.3所示:图3.3耦合衰减电路图中的p1是探头插座,C1是交流耦合电容,当需要直流耦合的时候控制电路通过控制AC/DC_CTR端来闭合继电器使得信号直接进入衰减电路。衰减电路由电阻分压电路构成,由于阻值很大的电阻在高频会呈现出一定的电容特性,在电路中为了减少电容对信号的影响增加了三个并联在电阻端的补偿电容。本设计通过手动控制开关S1来选择电路衰减。3.3 增益可变放大电路设计调增益的电路主要是由ad603来实现的,AD603是低噪、90MHz带宽增益可调的集成运放,如增益用分贝表示,则增益与控制电压成线性关系。管脚间的连接方式决定了可编程的增益范围,增益在-11+30dB时的带宽为90MHz,增益在+9+41dB时具有9MHz带宽,改变管脚间的连接电阻,可使增益处在上述范围内。增益调节电路如图3.4所示:图3.4增益调节电路图中D1和D2是组成限幅器,防止U1的输入电压超出范围,模拟信号经过限幅器后进入有U1构成的跟随器,其主要目的就是匹配阻抗,前一级是祖荣网络输出电阻非常大,不适合后即电路处理。电路的增益受控于ad603第一引脚的电压,第一引脚的电压将由pwm模块控制。3.4 A/D转换电路设计本设计使用的是AD公司的AD9283系列模数转换器。AD9283是一款8位单芯片采样模数转换器(ADC),内置一个片内采样保持电路,专门针对低成本、低功耗、小尺寸和易用性进行了优化。AD9283采用50-100 MSPS转换速率工作,在整个工作范围内都具有出色的动态性能。 AD9283只需一个3.0 V(2.7 V至3.6 V)单电源和一个编码时钟就能充分发挥工作性能。对于大多数应用来说,无需外部基准电压源或驱动器件。根据AD9283的数据资料,设计如图3.5所示:图3.5模数转换器电路设计3.5PWM电路设计脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。 在本系统中应用到的PWM电路如图3.6所示:图3.6pwm电路设计3.6显示设计便携式数字示波器使用的是一块分辨率为320*240的tft彩色lcd,此lcd内部集成了ILI9235控制器,这是一款常用的液晶屏控制器,用户只需要对其内部RAM写入数据即可显示。设计时只需要将其连接到FPGA引脚上,在FPGA设计时将控制接口配置与内部逻辑口上,其接口如图3.7:图3.7 液晶接口电路3.7整体电路每个模块设计完成后,需要设计PCB版图,最后送至印刷线路板厂商的如图3.8所示:图3.8最终完成的PCB版图4 便携式数字示波器FPGA设计4.1设计思路对FPGA的设计在ISE10.0环境中进行开发。ISE环境是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA开发的全部流程,包括ISE(数字逻辑设计)、ChipScope(在线逻辑分析仪)、XPS(CPU软核开发)、SDK(CPU软件开发调试)、DSPTOOLS(数字信号处理开发)等,功能非常强大。本设计的总体是在ISE中进行的,通过内嵌CPU进行控制。设计方案是,首先在ISE中设计好整体框架,这个框架用于连接各个模块,建立好CPU模块之后打开XPS,在XPS中进行CPU的配置,主要包括一些端口、外设、总线连接、地址分配的一些工作。配置完成CPU之后在ISE中进行综合生成比特文件下载。本设计中还包含一些IP核,这些部分将在ISE中调用核生成器完成,完成之后用顶层VHDL文件进行连接。对于CPU的编程在SDK中设计,将会在下一章中讨论。4.2顶层设计顶层主要是内部各个模块与外部电路的接口,框图见图4.1,接口分别是:fpga_0_RS232_PORT_RX_pin : 串口数据接收fpga_0_Push_Buttons_4Bit_GPIO_in_pin : 按键接口fpga_0_Switches_8Bit_GPIO_in_pin : 拨码开关接口sys_clk_pin :系统时钟sys_rst_pin : 系统复位信号 fpga_0_Micron_SRAM_FLASH_Mem_DQ_pin :存储器控制引脚fpga_0_RS232_PORT_TX_pin : 串口数据发送fpga_0_LEDs_8Bit_GPIO_d_out_pin :led灯接口fpga_0_Micron_SRAM_FLASH_Mem_A_pin : 存储器控制引脚fpga_0_Micron_SRAM_FLASH_Mem_BEN_pin : 存储器控制引脚fpga_0_Micron_SRAM_FLASH_Mem_CEN_pin : 存储器控制引脚fpga_0_Micron_SRAM_FLASH_Mem_WEN_pin : 存储器控制引脚fpga_0_FLASH_BYTE_GPIO_d_out_pin : 存储器控制引脚tft_bl_GPIO_d_out_pin : lcd背光tft_rs_GPIO_d_out_pin : lcd数据命令选择tft_rst_GPIO_d_out_pin :lcd复位tft_wr_GPIO_d_out_pin : lcd写时钟tft_rd_GPIO_d_out_pin : lcd读时钟tft_data_GPIO_IO_pin :lcd数据接口ad_data : 模数转换器接口ad_clk : 模数转换器时钟接口gain_pwm : 增益控制pwm输出div_pwm : 灵敏度控制pwm输出led : 状态指示 图4.1 FPGA内部逻辑电路图FPGA设计包括时钟分配、cpu、采样频率控制、pwm、触发控制、fifo等这些部分,这些模块采用VHDL语言进行包含.4.3CPU设计Cpu逻辑的设计是在xps套件中进行的,xilinx厂家会为每一款芯片设计评估板以及开发实例,利用xilinx厂家设计好的板级支持包建立基本的CPU模块,在根据需要添加自己的模块。在本设计中主要的是添加一些端口、中断控制器、连接端口,这些外设都是通过IP核生成器添加的。各个端口、连接线将会在顶层VHDL中跟其他模块相连。Edk中的设计如图4.2所示:图4.2XPS环境中cpu的设计图4.4时钟分配模块设计Spartan3E器件中内置了dcm(数字时钟处理)模块,需要时钟管理的时候只需要条用响应的ip核即可,对dcm配置为输入50Mhz,输出100Mhz:如图4.3:图4.3数字时钟处理模块4.5采样率设置模块设计设计中的采样率是通过对fifo时钟的改变控制的,改变采样率由两部分组成,一部分是数字逻辑部分,另一部分是通过CPU控制数字逻辑产生不同的频率,其中CLK是系统时钟,fre_set是CPU对模块的设置引脚,fre_out采样率输出,如图4.4所示:图4.4采样率设置模块4.6 FIFO模块设计FIFO是通过ip核生成器生成的,FIFO模块的工作原理是当写时能的时候在写时钟的上升沿采集DIN的数据存入内部存储器,当采集到指定的深度full引脚变为高电平,指示FIFO写满,FIFO写时钟由采样率控制模块给出。当FULL标志置位后即可对数据进行读取,读取的过程是将读时能置位,在读时钟的上升沿输出数据,最先写入的数据最先读出,读时钟有CPU引脚给出,这样即可配合CPU的速度来存储波形了。FIFO模块如图4.5所示:4.5FIFO模块4.7触发设置本示波器的触发控制由硬件实现,通过软件配合实现高速FIFO与低速CPU之间的数据传输。触发设置的具体设计思路是将A/D转换器输出的数字量进行整形成为方波,这个方波将会在频率计数器和触发器中用到。由一个频率计数器将方波信号进行计数,计数值由fre_out输出供CPU读取。当检测到这个方波上升沿到来的瞬间如果FIFO为空,即打开写使能进行数据存储,这个动作持续到fifo写满标志置位。这一系列过程有VHDL语言实现,这样做大大减轻了CPU的工作量,此条件下CPU只需要在空闲时刻检测FULL标志置位了才读取数据,读完之后EMPTY标志置位,再准备下一次触发。框图见图4.6:图4.6触发控制模块4.8pwm模块设计 图4.7pwm波形产生模块Clk:系统时钟Data_in:CPU控制数据输入端Pwm_out:pwm波形输出5 microblaze软件设计5.1软件总体概述Cpu软件设计包括文字显示、数据读取、波形显示、参数刷新、参数设置等重要部分。示波器的软件代码由如下几个程序文件组成:Main.c:主程序,负责中断、端口的初始化以及主要函数的调用;ili932x.h:液晶驱动代码的底层封装;ili932x_io.c:实现lcd基本功能的函数,如写数据、写命令等;ili932x.c:实现lcd高级功能函数集合,有固定点写文字、画直线、刷屏,这些函数是建立在lcd底层驱动基础之上的;globle.h:全局变量的定义,包括示波器运行时的一些主要参数,这些参数在不同的文件不同的函数中均有用到,考虑到便捷性没有采用参数传递的方式,而是直接定义全局变量;includes.h:这是一个包含头文件的集合,将所有用到的头文件统统包含进去,不管是系统头文件还是自定义的,这样可以让代码简洁明了,思路清晰。my_type.h:定义了一些自己的数据形式,比如颜色数据、数据类型宏定义等;display.c:显示函数,显示波形、示波器参数等函数在此文件中实现;trg.c:本文件实现了触发控制、数据采集的一些功能函数,需要时将会被调用。 5.2文字显示设计示波器是需要显示信号参数的,本设计使用的lcd是不带字库的,需要在程序当中自行加入字库。为了节约存储空间本示波器仅仅设计了英文和数字显示部分,字符编码由一个数组实现,显示字符的原理是根据字符的ASIC码查表找到字符点阵编码,将点阵编码显示到lcd上。代码见附录disp_asic(u16 x,u16 y,u8 str);函数。其中WORD_BK_COLOR是一个全局变量,定义了字符的颜色。5.3波形显示函数设计波形显示函数采用了参数传递的方式,传递的是两个250点的数组,其中“clr_wave”是上一次要显示的波形“clr_wave”是本次要显示的波形。由于每一次显示波形之前都需要将上一次屏幕上的波形擦除,所以设置了一个数组用于存放上次的波形。代码见附录“disp_wave(u8 *clr_wave,u8 *wave_buf)”函数。5.3波形读取波形的读取分为高速和慢速两个部分,当采集高速信号的时候cpu从FIFO读取数据,当采集低速信号的时候CPU直接从A/D转换器读取数据。程序每次执行一遍循环检测一次FIFO的FULL引脚,如果FULL置位,则从FIFO读取波形,一直读取到EMPTY置位,此时将由硬件准备下一次触发。程序中设置了一个全局变量time_bas用来指示系统使用的时基,当时基大于50毫秒的时候从A/D转换器直接读取数据。5.4采样率设置对于采样率的设置主要是控制FIFO的时钟,时钟的设置是根据参数time_bas来设定的,time_bas作为系统时基分别为250ns/格、500ns/格、1ms/格、2ms/格、5ms/格(以1、2、5的方式递增)。分别对应采样率100MHZ、50MHZ、25MHZ、12.5MHZ。采样率的设置由端口“XPAR_FRE_GEN_SET_BASEADDR”的值来决定。5.5参数刷新参数的刷新是在程序每次执行一个循环的时候,当按键或是频率计导致参数发生变化的时候需要将参数即是的显示到屏幕上。本段程序设计的思想是给每个参数赋值,不同的值代表不同的含义,当在别的函数当中改变值之后再刷新函数中使用switch语句判断对应的值设置对应的参数。程序见附录“refresh_parameter()”函数部分。6 调试与分析6.1调试中遇到的问题简述1热转印法制作电路板问题;2microblaze在flash中运行问题;3lcd刷新速度慢;4A/D转换器问题;6.2热转印制作电路板的问题现象以及解决方法所谓热转印,即是将印刷线路板图打印到转印纸上,通过加热的方式将墨粉转印到覆铜板上。将印有线路图的覆铜板通过三氯化铁溶液腐蚀掉多余的铜,剩下线路。在实际制作的过程中由于加热的问题导致部分线路没有被墨粉覆盖,这样第一遍做出的线路板有很多处信号线被腐蚀掉。改进的方法是转印之后使用记号笔进行修补,将转印脱落的部分补上。6.3microblaze程序中定义长数组后程序不能在rom中运行程序调试完成之后,拟将程序烧写至rom,由bootloader将rom中的程序载入ram运行,实际结果是程序根本不运行。在排查了所有原因、仔细调试发现是因为程序中的字库是用数组的形式定义的,删去字库数组后程序正常在rom中运行,此问题至今没有解决。6.4lcd刷新缓慢的解决方法本示波器的调试是从lcd开始的,首先编写lcd的驱动程序,完成后采用刷屏的方式测试。实验后发现cpu刷满整个屏幕需要大约0.5秒,这样每秒钟波形只能更新2次,这样的显示速度是不适合用作示波器的。通过查阅资料,得知可以将液晶屏的片选端口取消,直接接地,这样就节约一个机器周期的时间,将刷屏速度提高到每秒三次。为了使速度更加快,在向lcd显示波形的时候仅仅是擦除上次的波形,而不是擦出整个屏幕重新绘图。同时优化了传输的驱动,将一些不必要的操作取消,这样波形更新的速度达到每秒10次。6.5A/D转换器的调试A/D转换器在整个项目中是调试最耗时的部分,由于对其特性不了解,调试过程中烧毁了一片AD9283,重新更换AD9283后发现转换后的数值仅仅在0到31之间变化,继续更换后达到了理想的效果。6.6调试过程FPGA核心板如图6.1所示:图6.1FPGA核心板使用热转印法制作出的电路板如图6.2所示:图6.2电路板测试时采用的是100khz的方波作为信号源,输入到便携式数字示波器的探头,实际测量的效果如图6.3所示:图6.3波形测试整体测试图片如图6.4所示,连接一般示波器对比的结果:图6.4整体调试结论数字示波器是一个非常难的设计,完全没有想象的那么简单。首先是FPGA开发环境的熟悉,FPGA开发环境是一个繁杂的软件合集,里面包含了开发FPGA的所有工具,由于示波器的设计需要使用多个软件进行联合开发调试,整个环境的熟悉就花了近一个月时间,开发环境编译的速度也是非常缓慢的,往往更新一下就需要10多分钟。其次是lcd的调试,这是一项很耗时的工作,每次优化完程序都需要运行一遍,查看优化结果。最难的是软硬件联合调试,因为用的是热转印电路板,所以线路板出问题的几率较大,有时候除了问题都不知道是软件还是硬件的问题。这期间我体会到痛苦并快乐着的心情,设计这款示波器具有很大的挑战,我喜欢有挑战性的事物。设计示波器的过程实在很痛苦,一个人面对着庞大的设计往往有种全部掌控的欲望,但是事实往往相反,有时候设计好了一部分当我准备实现的时候却又忘记如何设计了。总体来说本示波器还是达到了预期的效果,包括基准调节、时基缩放、触发电平设置等等基本功能。参考文献1 魏坤.数字示波器DIY专题J. 无线电,2009,1:3963.2 魏坤. OURDSO_Winter_2010开源资料贴(已更新工程包)EB/OL/bbs/bbs_content.jsp?bbs_sn=4485107&bbs_page_no=1&search_mode=3&search_text=kunnsd&bbs_id=9999,22-23/2010-12-29. 3 何宾.数字与片上系统设计教程M. 北京:清华大学出版社,2010:1-275.4 何宾.EDA原理及应用M. 北京:清华大学出版社,2009:1-275.5 何宾.片上可编程系统原理及应用M. 北京:清华大学出版社,2009:1-312.6 孙德刚. 基于Protel的电子线路板设计M. 西安:西安电子科技大学出版社,2008:35-50.7 姜培安. 高速电路PCB设计方法与技巧M. 北京:中国电力出版社,2009:1-300.8 :(美)科特尔.运算放大器权威指南(第3版) M. 北京:人民邮电出版社,2010:200-212.9 兰吉昌. 数字集成电路应用260例M. 北京:化学工业出版社,2009:125-130.10 谭浩强. C程序设计(第三版)M. 北京:清华大学出版社,2005:1-378.致 谢设计便携式示波器的这段时间里,我得到了多位老师、网友的帮助。首先要感谢的是我的指导教师李爱兰老师,毕设期间,李老师给予我很多理论指导,教会我调试方法。其次感谢张曙光老师,他为我提供了实验室资源,包括FPGA开发板、烙铁、示波器等。再其次是感谢(中国电子开发网),这是一个很好的交流学习的平台,中国电子开发网上的资源可以免注册下载,在此对网站的创办者阿莫以及各位网友表示衷心的感谢。我还要感谢一位特别的网友魏坤,魏坤曾经在无线电杂志上发表过示波器制作的文章,我的毕设课题也是瘦魏坤自制示波器的启发。在我的示波器设计过程中曾经遇到了我力所不及的难题,当时我犹豫着拨通了魏坤的电话,当我说明了问题之后电话那头传来了一阵细心的解答。这样一位素未谋面的网友给予我细心的解答让我深受感动,魏坤网友,谢谢你!66附 录显示字符的函数:void disp_asic(u16 x,u16 y,u8 str)u8 i,j,a,b;u16 offset;offset=(str-33)*11;for(i=0;i11;i+)b=asic_liboffset+i;a=0X80;for(j=0;j=1;波形显示函数:void disp_wave(u8 *clr_wave,u8 *wave_buf)u8 i,a;for(i=0;i250;i+) a=clr_wavei;DrawPixel(a,305-i,WAVE_BK_COLOR);if(i249)if(aclr_wavei+1)LCD_WR_CmdPar(0x20,a);LCD_WR_Cmd(0x22);RS_TFT_H();DataToWrite(WAVE_BK_COLOR);while(aclr_wavei+1)LCD_WR_CmdPar(0x20,clr_wavei+1);LCD_WR_Cmd(0x22);RS_TFT_H();DataToWrite(WAVE_BK_COLOR);while(aclr_wavei+1)a-;WR_TFT_H();WR_TFT_L();WR_TFT_H();WR_TFT_L();clr_wavei=wave_bufi;a=wave_bufi;DrawPixel(a,305-i,WAVE_COLOR);if(i249)if(awave_bufi+1)LCD_WR_CmdPar(0x20,a);LCD_WR_Cmd(0x22);RS_TFT_H();DataToWrite(WAVE_COLOR);while(awave_bufi+1)LCD_WR_CmdPar(0x20,wave_bufi+1);LCD_WR_Cmd(0x22);RS_TFT_H();DataToWrite(WAVE_COLOR);while(awave_bufi+1)a-;WR_TFT_H();WR_TFT_L();WR_TFT_H();WR_TFT_L();采样率设置函数:switch(time_bas)/?case 0:disp_num(225,310,0,250);disp_string(225,280,ns);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,0);break;case 1:disp_num(225,310,0,500);disp_string(225,280,ns);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,2);break;case 2:disp_num(225,310,0,1);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,4);break;case 3:disp_num(225,310,0,2);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,8);break;case 4:disp_num(225,310,0,5);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,20);break;case 5:disp_num(225,310,0,10);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,40);break;case 6:disp_num(225,310,0,20);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,80);break;case 7:disp_num(225,310,0,50);disp_string(225,280,us);XGpio_mSetDataReg(XPAR_FRE_GEN_SET_BASEADDR,1,200);break;case 8:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心肌梗死试题及答案
- 技术知识培训交底课件
- 扫描仪的安装和使用课件
- 扩大安全培训课件
- 人工智能基础与应用-“新小职”AI技能提升教程 习题及答案汇 第1-8章
- 2025年矿工安全考试试题及答案
- 2025年杭州数学职称考试试题及答案
- 2025年色彩实践考试题目及答案
- 情景双师课件
- 人民调解实务考试及答案
- 2025年职业指导师(中级)考试试卷:职业指导师考试备考策略
- 2025年度辅警招聘考试题(含答案)
- 初三心理健康教育开学第一课
- 初一新生入学教育
- 卫生院健康检查管理制度
- 高二秋季开学第一课班会课件:启航高二把握未来
- 坐席岗位笔试题目及答案
- 2025年吉林省高考物理试卷(含答案解析)
- 2024陆上风电项目造价指标
- 生命教育 课件 .第一章 生命诞生
- 2025年安徽省农业职业技能大赛(水生物病害防治员)备赛试题库(含答案)
评论
0/150
提交评论