FPGA为系统控制核心方案设计书的VGA显示的数字示波器_第1页
FPGA为系统控制核心方案设计书的VGA显示的数字示波器_第2页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、封面作者:PanHongliang仅供个人学习【摘要 】本系统是以 EXCD-1 可编程片上系统开发板为基 础,采用 FPGA 为系统控制核心设计的 VGA 显示的数字示波器。利用 VHDL 语言编程,辅以边缘触发电路和 A/D 转换电路,实现了任意波形的单次触发、 连续触发和存储回放功能,并按要求进行了垂直灵敏度和扫描速度的档位设 置。 采集外部输入信号时, 信号经 A/D 转换后的数字信息送入 FPGA 内部的 SRAM 进行高速缓存,并将结果送给 VGA 示波器进行显示,完成了对中、低频信号的实时采样和数据存储回放。经测试,系统整体指标良好,垂直灵敏度 和扫描速度等各项指标均达到设计要求

2、。【关键字】FPGAADS931E 触发电路 VGA 显示Abstract:The sysytemwhich adopts the VGA display, takes the EXCD-1 programmablepiece on the system development board as the base and uses FPGA as the controlsystem nucleus is a digital oscillograph adopting the VGA display. Use the VHDLlanguage programming,auxiliarying b

3、yedge trigger circuit and A/D Converting circuit,torealize single triggering of random profile, continuous triggering and the memoryplaybacking function. In addition to, it has carried on position establishment of the verticalsensitivity and the scanning velocity according to the request. When gathe

4、ring theexternal signal, it carries on the high speed buffer through transforming after A/D sendingin FPGA the external input signal the interior pair of mouth RAM, and gives the resultthrough the VHDL programmingto the VGA oscilloscope to carry on thedemonstration.Therefore, it has completed to the

5、 middle and low-frequency signalreal-time sampling and data storage playbacking. After the test, the overall target of thesystem is good. Each target, such as the vertical sensitivity and the scanning velocity,achieves the design requirements.Key words:FPGA A/D conversion Trigger circuitVGA display目

6、录1.方案论证与比较41.1控制器部分41.2 A/D模数转换模块41.3 VGA显示器52.理论分析与计算52.1采样方式52.2垂直灵敏度分析52.3扫描速率分析53.电路与程序设计63.1系统总体框图63.2硬件设计63. 2. 1触发电路63. 2. 2A/D转换电路63.3软件设计73. 3. 1系统软件流程设计73. 3. 2触发器设计73. 3. 3 VGA显示部分设计73. 3. 4键盘设计74.测试方案与测试结果74.1测试仪器与设备74.2测试结果84. 2. 1触发功能测试84. 2. 2垂直灵敏度及扫描速度的测试84. 2. 3存储/调用测试85.总结9参考文献91.

7、方案论证与比较1. 1 控制器部分方案一:采用 80C51 单片机为控制核心。将输入信号通过外接触发电路产 生触发信号, 通过 A/D 转换将模拟信号转换成数字信号, 再通过单片机将数据 锁存至外部 RAM ,然后由单片机控制将数据送至 D/A 输出。方案二:用 FPGA 可编程逻辑器件作为控制及数据处理的核心,外接触发 电路实现触发功能,利用 FPGA 的层次化存储器系统结构,使用 FPGA 内部集 成的基本逻辑功能块配置 SRAM 对采集信号进行存储,完成设计指标。方案一的结构较为简洁,但在满足题目的实时采样频率的要求下, A/D 的 最高采样速度达 10MHz ,由普通单片机直接处理这样

8、速率的数据难以胜任,采 用高档单片机甚至采用 DSP 芯片,将大大增加开发的成本。而且目前常用的外 接 RAM 芯片时钟周期一般为 40MHz50MHz , FPGA 更能满足高速数据存储 的要求。方案二由于 FPGA 可在线编程,大大加快了开发速度。电路中的大部 分逻辑控制功能都由单片 FPGA 完成,多个功能模块如采样频率控制模块、数 据存储模块都集中在单个芯片上,大大简化了外围硬件电路设计,增加了系统 的稳定性和可靠性。 FPGA 的高速性能比其他控制芯片更适合于高速数据采集 和处理,而且使用 FPGA 内部存储模块完成输入信号的量化存储,在存储速度 上有着外接 RAM 无法比拟的优势。

9、综上所述比较可知,方案二既可满足题设基本要求又能充分发挥扩展部 分,电路简单,易于控制,所以采用该方案。1.2 A/D 模数转换模块根据题目要求,A/D 转换精度为 8bits,所以对 A/D 的选择有以下两个方 案。方案一:ADC0809 是 8 位逐次逼近型 A/D 转换器。ADC0809 对输入模拟 量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增 加采样保持电路。方案二:ADS931E 是一个高度级联采样、转换频率为 33MHz 的 8 位数模 转换器。ADS931E 内部含有时钟电路,其工作时钟可

10、由外部产生,也可以由主 控芯片给出,方便灵活。ADS931E 采用了电压跟随,保证了信号不会有很大衰 减,输入模拟量的电压范围为2.75.25V,对于小信号,带有可调节的直流偏。由于 ADC0809 对输入信号的要求较高,并且其内部没有时钟电路,如果要保证得到标准的波形信号,则必须要搭建必要的外围电路,增加了难度。而ADS931 吶部的芯片可以直接解决问题,方便灵活。综上所述,方案二更适合本设计的采用。1.3VGA 显示器方案一:CRT 显示器画面清晰、色彩真实,图像无扭曲、视角更广阔。由 于CRT 显示器的基本工作原理是依靠高电压激发的游离电子轰击显示屏而产生 各种各样的图像,技术已经十分成

11、熟,没有太多的发展余地。受限于此,传统 CRT显示器在体积、重量、功耗等方面露出自己的劣势【3】。方案二:液晶显示器以其体积小、厚度薄、重量轻、耗能少、无电磁辐 射、画面无闪烁、避免几何失真、抗干扰等诸多优点被业界和用户一致看好。经过比较,本设计采用方案二。2. 理论分析与计算2.1 采样方式实时采样是利用 A/D 时钟对信号直接采样,按照采样定理,采样速率必须 高于信号中最高频率的两倍 【。题目要求输入信号的最大频率为 500KHZ,而 实时米样的频率为 5MHz,所以本设计的米样方式选用实时米样即可。实时米 样中采取每周期采 20 个点的方法,以保证取到一个完整的信号波形。2.2 垂直灵敏

12、度分析设计要求垂直灵敏度为 1 V/div 、 100mV/div 两档,垂直刻度为 8div。ADS931E 输入信号电压通常指定 3V,当示波器满刻度显示时,被测信号的幅 度将分别为:VII=1V/div 8div=8V,Vi2=100mV/div 8div=0.8V。A/D 转换器的 满刻度输入值为VMAX=4V,放大电路的增益 AN=VMAX/ VIN,( N = 1、2)对应于 2 挡不同垂直灵敏度的增益分别为:3V/8V = 0.375; A2= 3V/0.8V =3.75。本系统通过软件编程实现增益,很好的解决了这个问题,具体分析见软件 详细设计部分。2.3 扫描速率分析A/D

13、的转换速率取决于被测信号的频率范围,设计要求扫描速度含1 卩 s/div、1ms/div、100ms/div 三挡,并且水平显示分辨率等于 20 点/div,因此 对应的采样速率是 0.05 卩 s /点、0.05ms/点、5ms/点,则要求 A/D 的等效采样 的最高转换速率为20MSa/s。3. 电路与程序设计3.1 系统总体框图整个系统的结构如下图 1 所示。 FPGA 的最小系统板采用的是 Xilinx 公司 的 EXCD-1可编程片上系统开发板。由信号发生器设定输出的波形信号,经由 触发电路触发的同时由 AD 转换电路将波形模拟信号转换为数字信号,该数字 信号在 FPGA 的编程控制

14、下在液晶显示器上显示出相应的波形。通过键盘电路 控制 FPGA 俞出数据的变化。图 1 系统总体框图3.2 硬件设计 3.2.1 触发电路采用 FPGA 内部软件触发方式,通过软件设置触发电平,所设置的施密特 触发器参数易于修改,从而抑制比较器产生的毛刺。当采样值大于触发电平, 则产生一次触发。该方式充分利用了FPGA 的资源,减少外围电路,消除硬件毛刺产生的干扰,易于调整触发电压。触发电路如图 2 所示。高速比较器选用响应时间为 20ns 的高速低功率快速 采样保持放大器 LM360。电阻 R2、R3 用于调节或选择触发电平,分别为 3K1和 2K,后者为可调电位器,可以在 02V 范围内任

15、意选择触发电平。图 2 触发电路3.2.2A/D 转换电路设计中采用 Texas Instruments 公司的 ADS931,它是一款 8 位的,具有最高 33M采样频率的高性能 AD 转换芯片。ADS931E 为 SSOP-28 封装的模/数转换 器;内部采用闪烁式 AD 及多级流水线式结构,因而不失码,使用方便、准确 度高;在+3.3v 电压下,它的功耗仅有 69mW。ADS931E 采用了电压跟随,保 证信号不会有很大衰减,完全满足设计要求。ADS931E 的内部结构图见附录2。3.3 软件设计3.3.1 系统软件流程设计如下图 4 所示,在信号示波器上调出要输入的波形,当信号输入时,

16、系统 对输入信号的频率进行测量进行实时采样,并利用键盘设置输入来选择液晶显 示器的显示功能和实现对扫描速度的选择。图 4 系统软件总体流程图3.3.2 触发器设计连续触发时,按照要求一旦产生触发,就采集、存储一个界面的数据。在 未存满一个之前即使再次满足触发条件也不会产生触发作用【2】;但是在存满 个界面后,如果再次产生触发则开始一个新的页面的采集、存储过程,并以新 的数据取代已经存储的数据,依此规律随着触发信号的出现不断重复上述过 程。3.3.3 VGA 显示部分设计本设计采用 FPGA 设计 VGA 接口将要显示的数据直接送到显示器。 VGA 空 制电路时序产生原理框图见附录 3。在分频模

17、块中对 50M 系统时钟进行分频产 生 50M/7Hz 的像素时钟。 VGA 显示控制模块在像素时钟的驱动下首先产生行 频信号,行频信号进行分频产生 58Hz 场频信号【1】。由于场频信号与行频信号 有严格的时序匹配,本设计利用对行频信号进行计数分频来产生场频信号。3.3.4 键盘设计PS/2 键盘的功能各项功能如下:调频键: 3 个,可按题目要求的三个频率档位调节所显示波形的频率。调幅键: 2 个,可按题目要求的两个幅度档位调节所显示波形的幅度。 存储键:按动“存储”键,仪器即可存储当前波形到 RAM 。 调用键:按下“调用”键,仪器可以调出存储的波形予以显示。 暂停键:按下“暂停键”,显示

18、器上固定当前显示的波形。4. 测试方案与测试结果4.1 测试仪器与设备本设计对波形测试所选用的相应仪器与设备的相关信息如表 1 所示表 1 测试仪器与设备列表仪器名称型号技术指标用途示波器ADS1024C0Hz 100MHz检测输出波形函数信号发生器TFG20300Hz 20MHz输入信号信号源4.2 测试结果4.2.1 触发功能测试通过键盘上相应触发功能键的输入,液晶显示屏上波形产生的相应变化如 下所述:(1) 触发电平连续可调测试:调节触发电路电位器,输出波形起始点可以连续 变化。(2) 上升沿、下降沿测试:任意调节触发电平的高低,输出波形的起始点相应 处于上升沿或下降沿。4.2.2 垂直

19、灵敏度及扫描速度的测试本设计的输入信号选取正弦波,对输出波形垂直灵敏度和扫描速度的测试结果分别如表 2、表 3 所示。表 2 垂直灵敏度测试数据表1v/div100mv/div幅度1v5v8v100mv500mv800mv频率10hz1.0v4.8v7.6v90mv480mv770mv1Khz0.9v4.9v7.8v110mv470mv760mv100Khz0.8v4.4v7.7v110mv460mv770mv误差10%6%3.75%10%6%4.2%表 3 扫描速度测试数据表w1us/div1ms/div100ms/div周期20us10us2us2ms5ms10ms100ms25ms12.

20、5ms幅度3v18.7us 9.5us2.10us1.9ms 4.7ms9.6ms96ms24ms12.2ms0.3v18.8us 9.6us2.09us1.8ms 4.8ms9.7ms97ms22ms12.1ms5mv18.5us 9.7us2.10us1.9ms 4.6ms9.5ms96ms24ms12.2ms误差6.7%4%4.8%6.7%6%4%3.3%4%2.7%由表 2、 表 3 中数据知, 测量结果都在测量误差允许范围内, 满足题目要 求的误差W10%,很好地完成了设计任务4.2.3 存储/调用测试通过键盘上相应功能键的输入,可得连续触发模式下,按“存储”键,存 储当前波形,波形

21、稳定;去掉输入信号,按“调用”键,显示存储的波形。5. 总 结设计采用 FPGA 最小系统为控制核心,实现了一款具有特色的 VGA 显示 数字示波器。通过测试,系统不但完成了基本要求,也完成了发挥部分的要 求。经过几天的努力实践,不断的测试,不断的改进电路和程序,我们最终圆 满完成了设计任务。用 EXCD-1可编程片上系统开发板实现了该系统不可比拟 的优越性,集中体现在能耗低、实现功能齐全、外围电路简单、时间计算精确 以及可维护性强。在设计过程中,我们不仅仅使自身水平得到了检验,更重要的是学到很多课本上没有 的知识,使自己得到了进一步的提高。同时也特别感谢各位老师和同学的帮助和支持,使 我们这

22、次设计能够顺利完成。参考文献 1 潘松,黄继业 EDA 技术实用教程科学出版社, 2002 年第一版 2 邢建平,曾繁泰著 . VHDL 程序设计教程,清华大学出版社, 2005.11 3 全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品汇 编,北京:北京理工大学出版社, 2004.8附录附录 1、PS/2 键盘接口原理图 附录 2、 ADS931E 的内部结构图附录 3、VGA 控制电路时序产生原理框图附录 4、 FPGA 最小系统框图附录5、 ADS931 的应用电路 附录6顶层源程序library IEEE 。use IEEE.STD_LOGIC_1164.ALL。use I

23、EEE.STD_LOGIC_ARITH.ALLuse IEEE.STD_LOGIC_UNSIGNED.ALL- Uncomment the following library declaration if instantiatingany Xilinx primitives inthis code.-library UNISIM 。-use UNISIM.VComponents.all 。entity top_vga isport(clk : in std_logic。 -50mhz-reset : in std_logic。hsy : out std_logic。vsy : out std_

24、logic。r,g,b : out std_logic。ads931 : in std_logic_vector(7 downto 0) ad_clk_out : outSTD_LOGIC 。ads931_out : out std_logic_vector(7 downto 0) oe :out STD_LOGIC) 。end top_vga 。architecture Behavioral of top_vga is signal xaddr,yaddr : std_logic_vector(9 downto 0)。signal clk25 : std_logic。signal rom_a

25、ddr :std_logic_vector(3 downto 0) 。 signal rom_data : std_logic_vector(15downto 0) 。 signal r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4: std_logic 。 signal we : std_logic。-signal ram_addr :std_logic_vector(9 downto 0)。signal ram_data : std_logic_vector(7 downto 0)。signal addr_ram : std_logic_vector(9 downto

26、 0)。signal q1,q2,q3,q4,q5,q6 : std_logic_vector(3 downto 0) 。 signal reset: std_logic:=1 。component pin- 定制的 ROMport (addr: IN std_logic_VECTOR(3 downto 0) clk: IN std_logic 。dout: OUT std_logic_VECTOR(15 downto 0) end component 。component textvga - 用于显示汉字port(datain: in std_logic_vector(15 downto 0

27、)clk25: in std_logic。-25mhzhcnt : in std_logic_vector(9 downto 0)vcnt : in std_logic_vector(9 downto 0)rom_addr: out std_logic_vector(3 downto 0)r,g,b : out std_logic) 。end component 。component cont2port(clk: in std_logic。-50mhzreset : in std_logic 。clk25mhz:hcnt : in std_logic_vector(9 downto 0) vc

28、nt : in std_logic_vector(9downto 0) ram_addr: in std_logic_vector(9 downto 0) r,g,b : outstd_logic )。end component 。component ads931eport(clk : in STD_LOGIC 。 ad_clk_out : out STD_LOGIC 。 oe : out STD_LOGIC。addr_ram: out std_logic_vector(9 downto 0)end component 。 component num_vgaPort ( q1 : in STD

29、_LOGIC_VECTOR (3 downto 0) q2 : in STD_LOGIC_VECTOR (3downto 0) q3 : in STD_LOGIC_VECTOR (3 downto 0) q4 : inSTD_LOGIC_VECTOR (3 downto 0) q5 : in STD_LOGIC_VECTOR (3 downto 0)q6 : in STD_LOGIC_VECTOR (3 downto 0)component vgaPort( clock:in std_logic。 -25mhzreset:in std_logic 。 hsyncb:outstd_logic 。

30、 vsyncb:out std_logic 。Xaddr:out std_logic_vector(9 downto 0)Yaddr:out std_logic_vector(9 downto 0)end component 。 component xyrgb port( hcnt,vcnt: instd_logic_vector(9 downto 0) r,g,b: out std_logic) 。end component 。 component wave_ram port (addr: IN std_logic_VECTOR(9 downto 0)clk: IN std_logic。di

31、n: IN std_logic_VECTOR(7 downto 0)dout: OUT std_logic_VECTOR(7 downto 0)we: IN std_logic) 。end component 。component wavevgaport(datain: in std_logic_vector(7 downto 0)clk25: in std_logic。-25mhzhcnt : in STD_LOGIC_VECTOR (9 downto 0) vcnt : in STD_LOGIC_VECTOR (9downto 0) clk25 : in STD_LOGIC 。r : ou

32、t STD_LOGIC。g : out STD_LOGIC。b : out STD_LOGIC) 。end component 。 component top_jipin port(ads_931 : in STD_LOGIC_VECTOR (7 downto 0) 。 q1,q2,q3,q4,q5,q6 :out std_logic_vector(3 downto 0)ram_en : out std_logic) end component 。beginreset=1 。ads931_out=ads931。r=r1 or r2 or r3 or r4。g=g1 or g2 or g3 or

33、 g4 。b=b1 or b2 or b3 or b4 。-weclk, reset=reset,clk25mhz=clk25)。u2:vga port map(clock=clk25,reset=reset,hsyncb=hsy,vsyncb=vsy,xaddr=xaddr,yaddr =yaddr) 。u3:xyrgb port map (hcnt=xaddr,vcnt=yaddr,r=r1,g=g1,b=b1)。u4:pin port map (addr=rom_addr,clk=clk25,dout=rom_data)。u5:textvga port map(datain=rom_da

34、ta,clk25=clk25,hcnt=xaddr,vcnt=yaddr,rom_addr=rom_addr,r=r2,g=g2,b=b2) 。u6: wave_ram port map (addr = addr_ram,clk = clk25,din = ads931,dout =ram_data,we = we) 。u7:wavevga port map(datain=ram_data,clk25=clk25,hcnt=xaddr,vcnt=yaddr,ram_addr=addr_ram,r=r3,g=g3,b=b3) 。u8:ads931e port map(clk=clk,ad_clk

35、_out=ad_clk_out,oe=oe,addr_ram=addr_ram) 。 u9:num_vgaPort map( q1=q1, q2=q2, q3=q3, q4=q4, q5=q5, q6=q6,hcnt=xaddr,vcnt=yaddr, clk25=clk25,r=r4, g=g4, b=b4) 。u10:top_jipinport map(clk=clk, ads_931= ads931, q1= q1, q2=q2, q3=q3, q4=q4,q5=q5, q6=q6, ram_en=we)。end Behavioral 。clk : in std_logic。 -50mhz版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮

温馨提示

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

评论

0/150

提交评论