




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA的数字示波器的设计龙岩学院毕业设计 题目: 基于FPGA的数字示波器的设计 专业: 电子信息工程 学号: 2014041816 作者: 姜清波 指导教师(职称):赖义汉 副教授 二一六年 五月 二十八日基于FPGA的数字示波器的设计【摘要】本设计采用FPGA为主控核心,由衰减电路和程控放大电路作为输入信号的处理前端,经过ADC把模拟信号转换成数字信号,通过FPGA进行实时采样和数据的存储,STM32做为辅助控制进行按键的扫描处理和控制TFT液晶显示器进行波形及其参数的显示。本设计的输入信号频率范围为,输入电压范围为。经实验测试达到设计要求。【关键字】 FPGA ADS830E STM32 示波器FPGA-based design of digital oscilloscope【Abstract】 This design uses FPGA as the main core, the attenuation circuit and programmable amplifier as the front-end processing of the input signal through ADC converts the analog signal into a digital signal by the FPGA for real-time sampling and data storage, STM32 as a secondary control buttons scan processing and control TFT LCD display waveform and its parameters. The design of the input signal frequency range is , input voltage range of . The experimental test to meet the design requirements. 【Key Words】 FPGA ADS830E STM32 oscilloscope1目录第1章 引言1第2章 系统方案选择22.1 系统方案22.2方案论证2第3章 硬件电路的设计43.1 FPGA和STM32电路43.2 前端信号处理电路设计43.2.1 AC/DC耦合电路的设计43.2.2 衰减电路的设计53.2.3 程控放大电路的设计73.3 AD转换电路的设计83.4电源电路的设计9第4章 软件系统设计114.1 FPGA的程序设计114.1.1 分频器的设计114.1.2 ADC、FIFO时钟选择电路的设计124.1.2 FIFO电路设计134.1.3程控放大器和AC/DC耦合驱动电路的设计134.2 STM32的程序设计154.2.1 按键程序的设计164.2.2 液晶显示程序的设计164.2.3 同步触发程序的设计17第5章 系统的调试185.1硬件的调试185.2软件的调试195.2.1 FPGA程序的调试195.2.2 STM32程序的调试195.3整体的调试19第6章 结论21致谢22参考文献23附录一:原理图24附录二:FPGA程序27附录三:STM32程序33第1章 引言在电子行业飞速发展的今天,示波器已成为电子工程师必不可少的工具,它可以帮助电子工程师观察和分析电路的各个部分的状态并转化为波形,能有效的帮助电子工程师完成电子电路的设计。从第一台数字示波器诞生以来很长一段时间里发展一直很缓慢,直到80年代中期半导体技术和计算机技术的发展,极大地促进了数字示波器发展,使其在功能上慢慢赶上了模拟示波器。在90年代初期,高速AD转换器得到了长足的发展,使示波器的实时采样率提高到了8GSa/s。使数字示波器的性能得到了大大的提升。到了近现代数字示波器以其集测量、显示、运算、分析记录等功能于一体而到了各大厂商的大力发展1。如美国的TEK公司的DPS77004SX数字示波器其带宽高达70GHz,双通道可达到200GSa/s的采样率,可以记录62.5M到1G个点。不过在大多数的设计中并不需要如此高的带宽和采样率,500MHz及其以下带宽的示波器基本可以满足大部分的需求,而我们大学生在学习的时候接触的信号往往在1MHz以下,于是我想趁着毕业之际制作一款适合大学生学习的入门级的数字示波器。本设计采用FPGA为核心制作一款数字示波器,其性能指标如下:(1) 带宽为1MHz。(2) 采样率:50MSa/s(3) 垂直分辨率:8位(4) 垂直灵敏度:100mV-5V/div(5) 水平灵敏度:500ns-50ms/div(6) 存储深度:1K(7) 输入阻抗:(8) 显示:TFT液晶(9) 通道:单通道第2章 系统方案选择2.1 系统方案衰减电路程控放大电路AC/DC耦合AD转换FPGA按键STM32液晶显示器图2- 1 系统方框图本系统由前级信号处理电路、AD转换电路、FPGA、STM32、按键输入电路和液晶显示器组成,系统方框图如图2-1所示。其中前级信号处理电路由AC/DC耦合电路、衰减电路和程控放大电路组成2。当信号输入时经过前级信号处理电路处理后输入由FPGA控制的AD转换电路把模拟信号转换为数字信号,由STM32处理后在液晶显示器上还原出信号的波形。2.2方案论证方案一:采用STM32为主控芯片,对处理输入信号的模拟前端进行控制,ADC采用STM32自带的ADC对信号进行采样,用DMA进行数据的搬运,并采用TFT液晶作为显示器显波形及其参数。本方案电路较简单,外围电路较少,但是STM32的ADC最大转换速率为1MHz,否则会导致转换结果不准确。而本设计的上限是1MHz,根据奈奎斯特采样定理,要采样1MHz的信号最低需要2MHz的采样率,而要对信号进行较准确的还原采样率要比信号频率要高5到10倍以上。方案二:采用STM32为主控芯片,对处理输入信号的模拟前端进行控制,ADC采用BB公司的ADS830E,采用FIFO芯片IDT7204作为高速缓存,时钟对50M的有源晶振进行分频后通过74F151提供。采用TFT液晶作为显示器显波形及其参数。本方案电路较复杂,外围电路较多,特别是时钟电路,要对50M的时钟进行500Hz到50MHz的分频需要多个分频电路,这样比较容易引入干扰。方案三:采用FPGA为主控,对处理输入信号的模拟前端进行控制,ADC采用BB公司的ADS830E,FIFO使用FPGA中的IP核。STM32负责对外部按键进行扫描把相关的控制信号传递给FPGA和对FIFO中的数据进行处理后在TFT液晶上进行波形和其参数的显示。本方案电路较简单,除模拟前端外不需要复杂的电路,而且时钟的分频电路、FIFO都可以用FPGA来实现,而且使用集成电路能有效的减少干扰。综上所述采用方案三。第3章 硬件电路的设计3.1 FPGA和STM32电路由于FPGA和STM32的管脚较多且密级,手工制板的成功率低,所以FPGA和STM32采用成品的开发板。FPGA采用了睿智的助学板,采用的是Altera公司的Cyclone IV代的EPC4E6E22C8N,这款芯片的拥有6272个逻辑单元,270KB的嵌入式存储器,15个1818的嵌入式乘法器,2个通用PLL,10个全局时钟网络,8个用户IO块高达179个用户IO,资源十分的丰富,完全满足本次设计的要求3。STM32采用了原子的mini开发板,STM32芯片采用的是Cortex-M3 内核拥有强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。本设计使用的型号为STM32F103RCT6,这款芯片具有TIMER、SPI、IIC、ADC、DAC、RTC、DMA 等众多外设及功能,完全满足本次设计的要求。3.2 前端信号处理电路设计前端信号处理电路主要的功能是对输入的信号进行调理,对小信号进行放大,对大信号进行衰减,使之在ADC的采样电压范围之内4。由于采用了BB公司的ADS830E这个芯片,其采样的电压区间是。前端信号处理电路包括了AC/DC耦合电路、衰减电路、程控放大电路。3.2.1 AC/DC耦合电路的设计图3-1 AC/DC耦合电路AC/DC耦合电路如图3-1所示,输入信号通过BNC接口进入系统,当继电器吸合的时候信号通过继电器的开关进入后级系统,继电器没有吸合时信号进过C1进入后级系统。当我们需要分析交流信号时只要让信号经过C1到后级系统,这样就可以隔离掉直流信号的影响。3.2.2 衰减电路的设计衰减电路是对大幅度的输入信号进行衰减,便于后级电路对信号进行处理,而且起到了保护后级电路的作用,使信号的幅度在后级电路的承受范围之内5。最简单的衰减电路为电阻分压如图3-2所示。图3-2 电阻分压电路其衰减的倍数为:(3-1)同时要满足输入阻抗为,既。简单的电阻分压电路工作在低频的时候能很好的实现衰减的效果,但是在高频的时候会失效,因为通过高频信号是电阻器件的寄生电感和寄生电容的影响就不可忽略,它们会导致高频信号输入的时候,导致高频信号的上升时间变大,波形发生畸变,其前沿变坏,失真6。所以我们需要对电路进行补偿,使其工作在高频的时候也能正常的实现衰减。电路如图3-3所示。图3-3 补偿后的衰减电路在R1和R2的两端分别并上一个补偿电容C1、C2。当满足时衰减的倍数与频率无关,在整个频带内达到最佳的补偿。实际的电路如下图3-4所示。图3-4 实际的RC衰减电路图3-4所示的衰减电路实现了10倍和100倍的衰减。图中的电阻R1和R2 和R3、R4和R5串联构成了分压电路实现了电阻分压,电容则是对电阻分压电路进行高频补偿。设R1、R2的串联等效电阻为R12,R3、R4的串联等效电阻为R34。当进行10倍的衰减时,R12与R34和R5串联的电阻构成了分压电路,C2为R12的高频补偿电容,为R34和R5串联而成的电阻的高频补偿电容。因为要进行频率补偿要满足,所以:(3-2)当进行100倍的衰减时,R12和R34串联的电阻和R5构成了分压电路,为R12和R34串联的电阻的高频补偿电容,为R5的高频补偿电容。因为要进行频率补偿要满足,所以:(3-3)因为本设计的数字示波器的输入阻抗为,再综合上述的考虑取,。再由(3-2)和(3-3)两式可得:(3-4)取C1=28pF,C4=280pF,C6=2720pF。由于没有280pF和2720pF的电容所以取了较接近的220pF和2500pF,再给C4并上了120pF的可变电容C3,给C6并上了C5。通过调整C3和C5使其接近280pF和2720pF。3.2.3 程控放大电路的设计图3-5 程控放大电路本设计的程控放大器由5个运算放大器组成,并且采用了供电,电路中对信号进行处理的采用的是NSC公司生产的高速运算放大器 LM6172 ,它的带宽为100MHz,其SR高达3000v/s7。完全可以满足本设计的要求,还对以后的改进留下了足够的空间。其中U2A接成了同相的跟随器,对输入的信号进行阻抗的变换8。U2B构成了一个反相的放大器,通过继电器K3和K4可以控制放大倍数,再通过继电器K5可以控制U2B输出的信号是否再放大10倍再传输给后级。U3B则构成了一个单位增益的加法器,通过R14加入了2.5V的中位基线的信号。该信号由电压基准TL431来产生,通过NE5532构成的单位增益的反相放大器来传递。信号经过衰减电路之后通过U2A后,U2B对信号进行放大,当K3未吸合是放大倍数为:(3-5)当K3吸合K4未吸合时的放大倍数为:(3-6)当K3和K4都吸合的时候放大倍数为:(3-7)当K5吸合的时候,则对U2B放大后的信号再放大10倍。(3-8)表3-1 程控放大器放大倍数K3K4K5放大倍数AK3K4K5放大倍数ALLL2LLH20HLL5HLH50HHL10HHH100“H”表示继电器吸合,“L”表示继电器未吸合。程控放大器的放大倍数是由继电器控制的,驱动继电器本设计采用了ULN2003,ULN2003是达林顿管驱动能力强,再驱动多个继电器的情况下电路结构简单。其电路如图3-6、图3-7所示。图3-6 ULN2003电路图3-7 继电器线圈3.3 AD转换电路的设计本设计的ADC是采用BB公司的ADS830E,ADS830E是8 位高速 AD 转换器,其采样率为7。实验发现其在1K的采样率的时候也可以正常工作,本设计的采样率为,这个ADC完全能满足本次设计。其电路原理图如图3-8所示。图3-8 ADS830E电路ADC830E的20脚是控制输出数据的逻辑电平的,由于FPGA是3.3V的,所以此脚也要接3.3V。 ADS830E 的输入信号幅度是可以编程控制的, 通过对11 脚( RSEL)的控制可以设置为1Vpp和2Vpp,当 11 脚置高电平时, ADS830E 的输入电压范围是 ,即 2Vpp。当 11 脚置低电平时,输入电压范围是,即 1Vpp。本设计是设置为2Vpp,其中点的电压为2.5V,所以程控放大器的中位基线设置为2.5V。3.4电源电路的设计本设计的电源是由外部输入的5V电源如图3-9所示。为了尽可能的降低输入电源的纹波,在电源的输入端加入了由电感和两个电容组成的型滤波电路。以滤除由继电器动作引起的电源波动。因为运算放大器要对一些微小的信号进行放大,如果电源有很大的纹波的话产生的噪声就会把信号给覆盖掉。图3-9 电源输入电路由于ADC中的20脚需要3.3V的电源,于是采用了低压差稳压芯片XC6206来进行5V到3.3V的转换。电路如图3-10所示。图3-10 5V转3.3V电路由于运放是双电源供电,所以我选择了TI公司的TPS60403进行+5V到-5V的转换。TPS60403具有60mA的输出电流,外围电路只需要三个电容,十分简单。由于要同时给5个运放供电,所以用两片TPS60403。电路如图3-11所示。图3-11 +5V转-5V电路第4章 软件系统设计4.1 FPGA的程序设计FPGA作为本次设计的核心器件之一,它实现了采样时钟的输出和FIFO,对程控放大电路和AC/DC耦合电路的控制,最后还有和STM32的数据传输。FPGA的设计采用了QuartusII软件平台,Verilog HDL硬件描述语言来设计,用ModelSim进行时序仿真9。4.1.1 分频器的设计分频器的实际上就是计数器,通过对高频时钟的计数来达到分频的目的。图4-1 10分频流程图如图4-1所示的是10分频的流程图,其中由一个计数器和一个控制输出的寄存器组成,初始化时计数器的初值为0,输出低电平。当分频器开始工作的时候对外部输入的50MHz的时钟信号进行计数,因为是10分频,所以每计数5个脉冲就让输出翻转一次。这样当经过一个周期翻转两次就是10个脉冲,就完成了对输入时钟信号的10分频10。另一个2分频的分频器也是类似的设计,只不过它是对输入时钟的上升或下降沿进行检测,每当遇到上升或下降沿的时候就对输出翻转一次。还有一个5分频的分频的设计与上述的由所区别,产生奇数分频的原理为:对于任一个奇数2*N+1(N=1、2、3)分频器,分别利用时钟上升沿、下降沿生成占空比为N:2N+1的波形,生成的两个波形错开了半个周期,然后将这两个波形相或,即可得出2N+1分频电路。具体代码详见附录。图4-2 10分频仿真波形图4-2为10分频的仿真波形,从仿真波形来看设计的分频器都达到了预期的效果。为后面的时钟选择电路的设计打下了良好的基础。4.1.2 ADC、FIFO时钟选择电路的设计由于本设计ADC的采样率为1.25K到50M,所以FPGA要输出1.25KHz到50MHz的时钟。因为FPGA的输入时钟为50MHz,所以1.25KHz到50MHz的时钟信号就需要用分频器来产生了。 根据需要要产生1.25KHz、2.5KHz、5KHz、12.5KHz、25KHz、50KHz、125KHz、250KHz、500KHz、1.25MHz、2.5MHz、5MHz、12.5MHz、25MHz、50MHz这15个时钟频率。为示波器提供了20ms/Div到500ns/div按1-2-5模式递增的灵敏度。其中25MHz的信号由50MHz输入信号2分频得到,12.5MHz的信号由25MHz的信号二分频得到,5MHz的信号由50MHz的输入信号10分频得到,其他频率都按此方法由上一级信号分频得到。具体的程序祥见附录。图4-3 时钟选择电路仿真波形图4-3是根据上述的分频方法得到各个频率的仿真波形,由仿真结果可知各个频率的信号都能准确的产生。在此结果的基础上设计了一个16选一的数据选择器,就产生能输出15种不同频率波形的时钟电路。4.1.2 FIFO电路设计本设计的FIFO采用了QuartusII软件中提供的IP核,采用IP核是因为这个程序是经过了厂家的验证的,稳定性好,减少了调试时的不确定因素。本设计采用的是8位数据,1024字节存储深度,读写双时钟的FIFO11。由于采用了IP核,因此这里仅对该FIFO进行仿真。结果如下图所示。图4- 4 FIFO仿真时序图从图4-4可以看出要对FIFO进行写要先使wrreq端为高,然后在写时钟的上升沿写入数据,当rdreq端为低电平时是无法对FIFO进行读的。当FIFO被写满了后,wrfull端输出高电平,此端可以用来通知外部设备来读FIFO。当rdreq端置为高电平后FIFO的数据在每个读时钟的上升沿被输出,当数据被读出后,FIFO的满标志wrfull端会被置为低电平。测试的testbench文件祥见附录。4.1.3程控放大器和AC/DC耦合驱动电路的设计此电路的设计是因为STM32控制的IO不够而仿74HC595设计的10位的串入并出的电路。其由一个移位寄存器和一个输出寄存器组成。输入端为一个数据端,一个输入时钟端和一个锁存端。移位寄存器把外部输入的串型数据转化为并行数据进行暂存,通过锁存端把数据放入输出寄存器来进行输出数据的更新。图4-5 10位串入并出防真时序图图4-5为该电路的仿真波形,从波形中可知数据在输入时钟的上升沿被移入以为寄存器,在锁存信号的上升沿的时候数据传入输出寄存器,数据从q5.0和ch0到ch3输出。传入的数据为1010110011,q5.0输出了高位的101011,ch3和ch2输出0,ch1和ch0输出1。其中q5.0输出的是驱动继电器的信号,ch0到ch3输出的信号是ADC和FIFO的时钟信号的选择信号。仿真结果符合预期。4.2 STM32的程序设计本设计中STM32主要起波形的显示和对按键输入的处理,并且把处理结果传输给FPGA。主程序流程图如图4-6(a)所示,定时器3按键处理流程图如图4-6(b)所示,定时器2测频流程图4-6(c)所示。a. STM32主程序流程图b. 定时器3中断程序流程图c. 定时器2测频程序流程图图4-6 主程序和中断程序流程图4.2.1 按键程序的设计本设计有6个输入的按键,其功能分别为控制AC/DC耦合,采样率加,采样率减,触发方式,程控放大电路放大倍数加和减。按键处理的流程如下:图4-7 按键处理流程图按键处理的程序流程图如图4-7所示,在进入按键处理流程时,先读取按键的键值,再根据按键的键值去调用相应的处理函数去实现相应的功能。4.2.2 液晶显示程序的设计显示的液晶是采用ILI9341控制器的分辨率为320x240的2.8寸TFT液晶显示器。其采用的是80并口与其通讯。示波器的主要功能是显示波形,所以主要对液晶进行的操作就是画点和画线。而画线的基础操作还是画点,所以画点是整个波形显示的基础。图4-8 液晶画点流程图如图4-8所示为画点的流程图,通过不断的改变连续的地址进行画点,这样这些点就组成了一条线。本设计上主要用到的是画垂直的线,既x轴的地址不变,连续的改变y轴的地址进行画点。示波器的波形的更新是采用先擦除上一次的一个片段,再画上新的波形的片段来实现波形图像的更新12。当处理的速度足够快的时候看起来就像是整个波形是一起更新的。4.2.3 同步触发程序的设计图4-9同步触发程序流程图本设计的触发方式采用的是软件同步触发的方式,程序流程图如图4-9所示。既当读完FIFO的数据的时候,对每个数据与一个触发的阀值进行比较。当为上升沿触发的时候,前一个数据小于阀值,后一个数据大于阀值表示此处产生了上升沿,然后从此处开显示波形。当为下降沿触发的时候,前一个数据大于阀值,后一个数据小与阀值表示此处产生了下降沿,然后从此处开显示波形。当比较到剩余的数据不足以显示一屏时,则放弃本组数据,重新从FIFO中读取数据再重复这个过程,直到产生触发为止。第5章 系统的调试5.1硬件的调试图5- 1 系统实物图在前端信号处理电路焊接完成后,先用万用表检测电源两端看有无短路,检查通过后根据原理图检测各个芯片的引脚有无短路,检查通过后进行上电检查。观察各个芯片的电源电压是否正常。上述检查都完成后接入信号发生器和示波器调试电路的工作性能。在实验中发现输出的波形噪声非常大,输出的信号中带有很大的锯齿波,经过排查是电源和电压基准的噪声引起的,在各个运放的电源端和电压基准TL431的输出端并入10uf的电容后改善效果十分明显,电源的纹波降到了30mv左右。波形输出后无明显噪声。ADC的测试,用FPGA输出1KHz的时钟信号,前端不接入信号,使用FPGA读取ADC的输出数据,在数码管上进行显示。前端不接信号ADC采样到的是2.5V的中位基线电压,显示的AD值应为120左右。测试中实际采样的数据为118会有正负两个字的跳动,表明ADC是正常工作的。5.2软件的调试5.2.1 FPGA程序的调试首先进行的是时钟选择电路的调试,采用FPGA开发板上的四个拨码开关做为输出通道的选择,经过测试能准确的输出1.25KHz到50MHz的时钟信号。然后要进行的是FIFO的测试,这部分的测试要用到STM32跟FPGA一起来调试,先让STM32向FIFO写入数据,在从其中读出数据跟写入的进行比较,如果相同则表明FIFO正常。经测试FIFO能正常的工作。最后调试的是串入并出的程序,这部分的测试也要用到STM32跟FPGA一起来调试,先让STM32根据设计的时序向FPGA写入数据然后再观察输出的数据接到LED上,观察LED的亮灭来判断输出的是否正常。经测试这部分功能正常。5.2.2 STM32程序的调试STM32程序的调试主要为波形的显示程序和同步触发程序的调试,由于液晶的驱动程序和按键的扫描程序都是以前写好的模块,这里就不在写调试过程。波形显示程序的调试的过程为先用MTALAB生成几个频率不同正弦波的数据,再用让STM32去显示这几组波形,每个波形保持1S,就切换另一个波形,看显示是否正常。在测试的过程中也有遇到了一些问题,比如说最开始我没有让波形保持一定的时间,这个有时会有波形显示非常的暗,后来发现是刷新过快的原因,在增加了波形保持后,问题得到解决。在完成了波形显示的调试后就可以进行同步触发的调试了。调试过程中要先设置一定的触发电平,我设置的是过零点触发。还是使用那几组数据去测试,观察波形显示的稳定程度。在实际中发现触发不够稳定,经排查发现时触发电平的原因,在触发的判断中不能直接判断这个设置的阀值,应该在这个阀值的基础上再设置一个窗口,即以阀值为基础设置一个判断的区间,这样判断上升或下降沿会更稳定,不会有误触发。经过改善后触发稳定性得到很大的提升。5.3整体的调试测试仪器:信号发生器UTG9020D 示波器UTD2052CEL。1、测试信号为幅值5V的方波信号。表5- 1 幅值为5V的信号频率的测量信号频率10Hz100Hz1000Hz10000Hz100000Hz1000000Hz测量值9Hz98Hz999Hz9990Hz99990Hz999950Hz误差10%2%0.1%0.1%0.01%0.005%由表5-1可知在测量小于1KHz的低频信号时误差较大,这是由于采用计数法测频,导致在测低频信号时由于门闸信号的原因会导致有较大的误差。2、测试信号为频率100KHz的方波。表5- 2 100KHz频率下信号幅值的测量信号幅值1V2V3V4V5V测量值1.05V2.10V3.02V3.93V4.95V误差5%5%0.6%1.75%1%信号幅值6V7V8V9V10V测量值5.83V6.86V7.77v8.729.65V误差2.8%2%2.9%3.1%3.5%由表5-2可知在测量3V到5V时的误差较小,在测量6V到10V的时候误差较大,在测量1V到2V的信号时的误差最大。经过排查是由于程控放大器的放大倍数与设定的存在差异和在信号输入的时候耦合的有一定的压降。图5- 2 测试显示波形 图5- 3 UTD2052CEL示波器显示波形如图5-2和图5-3为在输入幅值为5V频率100KHz的正弦波信号时本设计和UTD2052CEL示波器显示波形的对比。可以看出系统工作稳定,各项参数基本一致,验证了本设计的对信号的处理的正确性。第6章 结论本设计以FPGA为核心,STM32为辅助控制完成了数字示波器的设计,本设计在硬件部分完成了前端信号调理电路和AD转换电路,实现了的对输入模拟信号的处理。FPGA通过对采样时钟的控制实现了对ADC采样率的控制,通过STM32对采样到的数据进行处理后在液晶显示器上重构出信号波形。经过测试之后设计中对频率的测量,信号峰峰值得测量均达到了设计目标。不过本设计只是初步完成了一个示波器的基本功能,还有许多有用的功能如对信号进行单次的捕获,对信号如上升时间的测量等功能都还没有实现,需要以后进一步的完善。本设计中由于采用了软件同步触发所以触发的效果不如硬件触发的好,在长时间的测试过程中会出现触发不稳定的情况,这在以后也需要改进。最后经过了本次设计的制作,我对大学期间所学的知识有了更直观的了解,在模拟电路的设计制作过程中我了解了电源的噪声对放大电路的影响,也对电源对电路的影响有了更加深刻的了解。本设计中的程控放大电路由运放和继电器组成,控制简单,十分适合在一些低成本的场合应用。致谢在一做毕业设计的一个多月中,我学到了很多,对自己的大学所学的知识做了一次梳理。在制作的过程中遇到了很多的困难,但是在同学和老师的帮助下一个个的被解决了。在此特别感谢我的指导老师赖义汉老师,他在此过程中给了我悉心的指导,让我感受到了他的学识渊博,视野广阔。同时还要感谢一下阿莫电子论坛的魏坤同学和其他坛友,要不是有魏坤同学的开源示波器项目和坛友们的各种讨论。我也不可能在设计的初期规避了很多的错误,也在后期的制作工程中发现的一些问题也可以在他们的帖子中找到解决的办法。最后,我再一次的感谢在本次设计中给予我帮助的师长和朋友们,没有你们的帮助我不可能顺利的完成此次设计。参考文献1孙建风.数字存储示波器的原理,特点及发展动态J.宇航计测量,1996,(6):52-61.2肖晓萍.电子测量仪器M.电子工业出版社,2005.3褚振勇.翁木云.FPGA设计及应用M.西安:西安电子科技大学出版社,2002.4龚世耀.单片机数字信息采集系统J.南京邮电学院报,1994,(4):81-86.5苏建加,廖聪裕,鲁锦涛.基于FPGA的数字存储式示波器设计J.河北农机,2012,(3):G2-G3.6周金刚,左超,崔长生.基于FPGA的数字存储示波器J.电子工程师,2008,34(5):15-17.7魏坤.DIY数字示波器J.无线电,2009,(1):41-43.8E.A.Parr.怎样使用运算放大器M.人民邮电出版社,1983.8.9夏宇闻.Verilog数字系统设计教程M.北京:北京 航空航天大学出版社,200310潘松,黄继业EDA技术实用教程M.第三版.北京:科学出版社,2009.11杜生海.FPGA设计实战M.人民邮电大学出版社,2009.6.12叶梵,周建明,张沁川.高速数字存储示波器实现技术J.电子测量与仪器学报,2005,19(3):42-45.附录一前端信号处理原理图STM32原理图FPGA原理图附录二FPGA程序二分频Verilog程序module DIV_2(clk,rst,clk_out);input clk;/输入时钟input rst;/复位信号output clk_out;/输出时钟reg clk_out;/二分频always(posedge clk or negedge rst)if(!rst)clk_out = 1b0;elseclk_out = clk_out;endmodule五分频Verilog程序module DIV_5(clk,rst,clk_out);input clk,rst;output clk_out;reg p_clk;/上升沿分频时钟reg n_clk;/下降沿分频时钟reg2:0 p_cnt;/上升沿计数器reg2:0 n_cnt;/下降沿计数器always(posedge clk or negedge rst) /上升沿计数beginif(!rst)p_cnt = 3d0;else if(p_cnt = 3d4)p_cnt = 3d0;elsep_cnt = p_cnt+3d1;endalways(posedge clk or negedge rst) /上升沿分频时钟输出beginif(!rst)p_clk = 1b0;else if(p_cnt 2)p_clk = 1b1;elsep_clk = 1b0;endalways(negedge clk or negedge rst) /下降沿计数beginif(!rst)n_cnt = 3d0;else if(n_cnt = 3d4)n_cnt = 3d0;elsen_cnt = n_cnt+3d1;end/下降沿分频时钟输出always(negedge clk or negedge rst)beginif(!rst)n_clk = 1b0;else if(n_cnt 2)n_clk = 1b1;elsen_clk = 1b0;endassign clk_out = p_clk | n_clk;endmodule十分频Verilog程序module DIV_10(clk,rst,clk_out);input clk,rst;output clk_out;reg clk_out;reg2:0 cnt;always(posedge clk or negedge rst)beginif(!rst)begincnt = 3d0;clk_out = 1b0;endelse if(cnt = 3d4)beginclk_out = clk_out;cnt = 3d0;endelse cnt = cnt+3d1;endendmodule时钟选择模块Verilog程序module DIV_MUX(ch0,ch1,ch2,ch3,clk_out,clk50M,clk25M,clk12_5M,clk5M,clk2_5M,clk1_25M,clk500k,clk250k,clk125k,clk50k,clk25k,clk12_5k,clk5k,clk2_5k,clk1_25k,clk500);input ch0,ch1,ch2,ch3;/时钟输出通道选择/输入时钟信号input clk50M,clk25M,clk12_5M,clk5M,clk2_5M,clk1_25M,clk500k;input clk250k,clk125k,clk50k,clk25k,clk12_5k,clk5k,clk2_5k,clk1_25k,clk500;/输出时钟output clk_out;reg clk_out;always(*)begincase(ch3,ch2,ch1,ch0)5d15:clk_out = clk50M;5d14:clk_out = clk25M;5d13:clk_out = clk12_5M;5d12:clk_out = clk5M;5d11:clk_out = clk2_5M;5d10:clk_out = clk1_25M;5d9:clk_out = clk500k;5d8:clk_out = clk250k;5d7:clk_out = clk125k;5d6:clk_out = clk50k;5d5:clk_out = clk25k;5d4:clk_out = clk12_5k;5d3:clk_out = clk5k;5d2:clk_out = clk2_5k;5d1:clk_out = clk1_25k;5d0:clk_out = clk500;default:clk_out = 1b0;endcaseendendmoduleADC_FIFO时钟输出模块Verilog程序module ADC_FIFO_CLK(clk_50M,rst,ch0,ch1,ch2,ch3,clk_out);input clk_50M,rst, ch0,ch1,ch2,ch3;output clk_out;wire clk_50M,clk25M,clk12_5M,clk5M,clk2_5M,clk1_25M,clk500k;wire clk250k,clk125k,clk50k,clk25k,clk12_5k,clk5k,clk2_5k;wire clk1_25k,clk500, clk_out;DIV_MUX u0(.ch0(ch0),.ch1(ch1),.ch2(ch2),.ch3(ch3),.clk_out(clk_out),.clk50M(clk_50M),.clk25M(clk25M),.clk12_5M(clk12_5M),.clk5M(clk5M),.clk2_5M(clk2_5M),.clk1_25M(clk1_25M),.clk500k(clk500k),.clk250k(clk250k),.clk125k(clk125k),.clk50k(clk50k),.clk25k(clk25k),.clk12_5k(clk12_5k),.clk5k(clk5k),.clk2_5k(clk2_5k),.clk1_25k(clk1_25k),.clk500(clk500);DIV_2 u1(.clk(clk_50M),.rst(rst),.clk_out(clk25M);DIV_2 u2(.clk(clk25M),.rst(rst),.clk_out(clk12_5M);DIV_10 u3(.clk(clk_50M),.rst(rst),.clk_out(clk5M);DIV_10 u4(.clk(clk25M),.rst(rst),.clk_out(clk2_5M);DIV_10 u5(.clk(clk12_5M),.rst(rst),.clk_out(clk1_25M);DIV_10 u6(.clk(clk5M),.rst(rst),.clk_out(clk500k);DIV_2 u7(.clk(clk500k),.rst(rst),.clk_out(clk250k);DIV_10 u8(.clk(clk1_25M),.rst(rst),.clk_out(clk125k);DIV_10 u9(.clk(clk500k),.rst(rst),.clk_out(clk50k);DIV_2 u10(.clk(clk50k),.rst(rst),.clk_out(clk25k);DIV_10 u11(.clk(clk125k),.rst(rst),.clk_out(clk12_5k);DIV_10 u12(.clk(clk50k),.rst(rst),.clk_out(clk5k);DIV_10 u13(.clk(clk25k),.rst(rst),.clk_out(clk2_5k);DIV_10 u14(.clk(clk12_5k),.rst(rst),.clk_out(clk1_25k);DIV_10 u15(.clk(clk5k),.rst(rst),.clk_out(clk500);Endmodule串入并出模块Verilog程序module Reg595(clk,lck,rst,din,ch0,ch1,ch2,ch3,q);input clk;/数据输入时钟input lck;/锁存信号input rst;/复位信号input din;output ch0,ch1,ch2,ch3;output5:0 q;reg ch0,ch1,ch2,ch3;reg5:0 q;reg9:0 qt;always(posedge clk or negedge rst)beginif(!rst)beginqt = 10d0;endelse beginqt = qt8:0,din;endendalways(posedge lck or negedge rst)beginif(!rst)beginq5:0,ch3,ch2,ch1,ch0 = 10d0;endelse beginq5:0,ch3,ch2,ch1,ch0 = qt;endendendmoduleFIFO Testbench文件Verilog程序timescale 1ns/1nsdefine W_CLK 20define R_CLK 40module fifo_tb;reg7:0 data;reg rdclk,rdreq,wrclk,wrreq;wire7:0 q;wire wrf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业业务转让合同样本
- 企业出租土地合同样本
- 关于托管转让合同样本
- 2025借款转让合同律师拟定版本
- 介绍学员提成居间合同标准文本
- 个人签合同范例
- 企业总部跳槽合同标准文本
- 供水材料供货合同标准文本
- 公司多人股合同样本
- 个人出国务工合同样本
- 《中国传统民居建筑特点》课件
- 顶板管理知识培训课件
- 盘扣式支架现浇箱梁安全专项施工方案
- 2025年合肥市建投集团春季招聘89人笔试参考题库附带答案详解
- 2025年上海兼职劳动条件和福利待遇协议
- (二调)武汉市2025届高中毕业生二月调研考试 生物试卷
- 肝门部胆管癌诊断和治疗指南(2025版)解读
- 新加坡可变资本公司VCC指南 -BBCG出版
- 2025年春季学期学校德育工作计划安排表(完整版)
- 石油化工项目监理总结报告
- 三类人员B证考试题库及答案集合
评论
0/150
提交评论