C甲VGA显示的多通道数字示波器Word格式文档下载.docx
- 文档编号:21145367
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:27
- 大小:344.29KB
C甲VGA显示的多通道数字示波器Word格式文档下载.docx
《C甲VGA显示的多通道数字示波器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C甲VGA显示的多通道数字示波器Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
通过OPB总线上挂接外设接口连接并进行驱动。
VGA显示部分采用双缓冲机制工作,在FPGA内建GRAM,按照一定时序将将RAM内缓存数据映射到VGA显示器上。
通过这种机制,我们可以灵活地
另外大跨度增益自动调节是程控增益放大电路设计的一个难点,本系统通过4级级联放大器,并合理地由软件控制继电器实现增益的步进,达到了要求的带宽。
2理论分析和计算
2.1垂直灵敏度分析
设计要求垂直灵敏度分为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.2扫描速率分析
A/D的转换速率取决于被测信号的频率范围,或DSO对扫描速度的要求,设计要求扫描速度含1ms/div、1μs/div、1s/div三挡,我们通过FPGA内建分频电路实现了最高采样率16MSa/s,每10倍频步进,共六档,增加了该示波器的实用性。
水平显示分辨率为64点/div,以保证显示波形清晰稳定。
3电路设计
3.1FPGA部分硬件设计
顶层模块包括例化的8个子模块(RTL级结构图见附录1)。
1.AD采样时钟产生模块Modulead_clk_gen。
2.AD与fifo控制模块Modulefifo_control(核心控制模块,作用为AD与fifo读写控制和Uart发送控制)。
3.VGA显示模块vga_drv与GRAM模块。
4.键盘输入模块。
5.锁相环倍频模块。
6.缓存采样数据的双口RAM模块。
下面对关键的部分进行说明:
3.1.1VGA显示部分
该模块使用双缓冲机制,软核MicroBlaze通过读写显存来控制VGA显示。
考虑VGA显示部分要求至少有三种颜色,我们使用2bit数据表示一个点,可以完成4色显示,可以对不同通道使用不同颜色加以区分。
网格与水平标度轴由硬件实现,CPU通过接口方便地进行访问,充分利用了SOPC的优势。
GRAM位宽32bit,大大提高了FPGA刷屏的速度。
vga_drv与GRAM对内嵌的MCU设计成为BlackBox,MCU只需向相应地址发送合适数据即可显示想要的波形。
经实践证明该方案可稳定地显示多种颜色和中文信息。
3.1.2AD时钟产生模块与采样控制模块
这是整个设计的核心模块,ad_clk_gen译码指令产生ad采样时钟信号,这个信号决定了示波器的水平分辨率。
最大16M,最小32HZ,可以观测出带宽2M以下的信号。
该部分也负责存储和显示存储正负延时功能。
存储空间支持4屏数据,达到发挥部分要求。
另外可以通过PS2键盘设置显示存储延时功能,负640至正320点连续可调。
可观测到前后共1280点数据,最大存储时间20s。
3.1.3数字信号的产生模块
在FPGA内建比较器,使用一个表示信号平均值的数据与AD采样得来的数据进行比较得到同频同相的A路信号,再经由A信号触发计数器,经过合理设置计数脉冲,得到有45°
延时,占空比25%的B路信号。
表示信号平均值的数据由MicroBlaze测量信号提供。
3.1.4键盘模块
键盘采用PS2键盘,,用FPGA作PS2键盘的控制器,在FPGA中嵌入相应的功能模块,充分利用了FPGA的内部资源,增加了系统的可靠性和灵活性。
键盘功能表如附录2所示。
3.2模拟通道与AD采样电路设计
图2信号调理部分电路图
此部分由于贴片元件多,抗干扰等要求苛刻,因而自己绘制了PCB。
模拟部分由AD采样部分,程控放大部分,电源部分等构成。
程控放大器的作用是对输入信号进行衰减或放大调整,使输出信号电压在AD转换器输入电压要求范围内。
信号从探头输入,进入程控放大(衰减)电路进行放大(衰减),再对被放大(衰减)的信号进行电平抬高后送入高速AD转换器对信号进行采样,采样所得的数据存入FPGA内建的存储器中。
时钟引出插针。
由FPGA为高速AD转换器提供从32Hz-16MHz的6种不同的频率信号作为不同水平扫速时的采样时钟频率。
从程控放大器输出的信号送入AD转换器。
在本电路中选用的是精密运算放大器OPA4727和高速AD8012,合理的搭配两种运放来设计电路,互补优劣,使系统既达到了高精度和高带宽,又大大节约了设计成本。
我们选用10bit,65MSa/s,的ADC10065.达到了采样率和精度的要求。
AD采样电路原理图见附录3。
3.3存储介质
存储显示使用FPGA内建的BlockRAM,手动存储使用存储容量为8K的EEPROM芯片24C64作为非易失性存储介质,实现手动存储的波形掉电不丢失。
3.4电源电路
为避免相互干扰,所以将数字部分的供电与模拟部分分别用独立的稳压电路,并用滤波器隔离。
4软件部分设计
4.1软件组成
本系统的软件部分包括AD采集控制,水平分辨率控制,垂直分辨率设置,多个颜色的波形画线函数,测量功能,自动功能,存储与回放,存储显示状态控制,通道选择控制,用户界面实现等。
由于系统充分利用了SOPC的优势,将大部分工作交由硬件完成,从而大大简化了系统的软件设计。
4.2软件流程图
图3系统程序流程图
5系统测试与结果分析
5.1测试仪器
DS1102E数字示波器1台,EE1641D函数信号发生器1台,数字万用表1
5.2测试方法
用标准数字示波器和本设计示波器并联测量同一信号的幅度和周期,测量所得数据分别记为Vi/Vo,T1/T2。
5.3测试数据
表1.垂直灵敏度测试
档位
输入Vi/V
输出Vo/V
误差=|Vo-Vi|/Vi×
100%
1V/div
2.50V
2.47V
1.25%
1.00V
0.97V
3.0%
100mv/div
300mV
297mV
1.0%
100mV
98mV
2.0%
10mv/div
30.0mV
31.0mV
3.3%
10.0mV
10.3mV
表2扫描速率测试
输入f1
输出f2
误差=|f1-f2|/f1×
1s/div
5.00Hz
5.09Hz
4.5%
15.00Hz
15.33Hz
1.2%
1ms/div
220Hz
218Hz
660Hz
663Hz
0.45%
1us/div
220KHz
224KHz
1.8%
660KHz
643KHz
2.6%
表3数字通道测试
5.00Hz
5.04Hz
0.8%
15.30Hz
216Hz
665Hz
0.75%
217KHz
1.3%
664KHz
0.6%
由表中数据知,测量结果都在测量误差允许范围内,满足题目要求的误差≤5%。
5.4实际效果
图4实际显示效果图
5.5结果分析
本设计完成了题目所要求的各项基本指标,并达到了全部的发挥部分要求。
实现了实时显示和存储多通道显示,自行产生两路数字信号,且A路数字信号与输入模拟信号同频同相,中文提示时间、幅度刻度和通道颜色,图像左右平移,存储显示的正负延时。
很好地完成了设计任务。
6结束语
本设计以EXCD-1开发板为控制核心,实现了多通道VGA显示的数字存储示波器。
通过测试,系统不但完成了基本要求,也完成了发挥部分的要求。
在设计制作过程中遇到了不少难题,但经过几天的不懈努力,经过一次次的测试和改,最终圆满完成了设计任务。
[参考文献]
[1]李辉.基于FPGA的数字系统设计.[M]西安电子科技大学出版社
[2]黄智伟.全国大学生电子设计竞赛技能训练.[M]北京航空航天大学出版社
[3]何宾.xilinx可编程逻辑器件技术详解.[M]清华大学出版社
附录1:
RTL级结构图
附录2:
键盘功能表
功能
按键
触发电平调节
[T]/[G]
切换通道
[1]/[2]
波形上下平移
[方向上]/[方向下]
波形左右平移
[方向左]/[方向右]
测量
[M]
垂直分辨率
[I]/[K]
水平分辨率
[J]/[L]
AUTO
[Q]
RUN/STOP
[R]
上升/下降沿触发切换
[P]
触发源选择
[O]
存储显示
[H]
设置正负延时
[C]
回放
[B]
存储
[V]
附录3:
AD采样电路
附录4:
Verilog顶层设计文件
`timescale1ns/1ps
modulevga_top_moudule(
clk,
//VGA的IO
h_sync,v_sync,red,green,blue,
//MicroBlaze核用IO
fpga_0_Micron_RAM_Mem_A_pin,fpga_0_Micron_RAM_Mem_CEN_pin,,fpga_0_Micron_RAM_Mem_OEN_pin,
fpga_0_Micron_RAM_Mem_WEN_pin,fpga_0_Micron_RAM_Mem_BEN_pin,fpga_0_Micron_RAM_Mem_DQ_pin,
fpga_0_rst_1_sys_rst_pin,
//外设
fpga_0_LEDs_8Bit_GPIO_IO_O_pin,
fpga_0_Push_Buttons_4Bit_GPIO_IO_I_pin,
fpga_0_Switches_8Bit_GPIO_IO_I_pin,
fpga_0_RS232_PORT_RX_pin,
fpga_0_RS232_PORT_TX_pin,
//键盘
ps2k_clk,ps2k_data,
//AD
max1242_sclk,max1241_cs,max1241_data,sam_clk,ad_data
);
inputclk;
//50MHz
//VGA
outputh_sync,v_sync;
output[2:
0]red;
0]green;
0]blue;
//AD
outputmax1242_sclk,max1241_cs;
inputmax1241_data;
//键盘
inputps2k_clk;
inputps2k_data;
//IP外设
output[7:
0]fpga_0_LEDs_8Bit_GPIO_IO_O_pin;
input[7:
0]fpga_0_Switches_8Bit_GPIO_IO_I_pin;
input[3:
0]fpga_0_Push_Buttons_4Bit_GPIO_IO_I_pin;
inputfpga_0_RS232_PORT_RX_pin;
outputfpga_0_RS232_PORT_TX_pin;
//CPU的RAM引脚
output[31:
13]fpga_0_Micron_RAM_Mem_A_pin;
outputfpga_0_Micron_RAM_Mem_CEN_pin;
outputfpga_0_Micron_RAM_Mem_OEN_pin;
outputfpga_0_Micron_RAM_Mem_WEN_pin;
output[1:
0]fpga_0_Micron_RAM_Mem_BEN_pin;
inout[15:
0]fpga_0_Micron_RAM_Mem_DQ_pin;
inputfpga_0_rst_1_sys_rst_pin;
//模块之间的互联信号
wireclkb;
wire[11:
0]addrb;
wire[31:
0]doutb;
wire[12:
0]addra;
wire[31:
0]dina;
wiremainclk;
wireclk100M;
wirewea=1;
wirekeyclr=1;
0]xps_gpio_2_GPIO_IO_I_pin;
0]xps_gpio_3_GPIO_IO_I_pin;
wirerst_n=fpga_0_rst_1_sys_rst_pin;
wire[7:
0]ps2_byte;
wireps2_state;
0]gpio4;
wire[29:
0]iobuf;
wire[23:
0]b_doutb;
wire[8:
0]markline;
//连续性赋值
assignclka=clk100M;
assignxps_gpio_2_GPIO_IO_I_pin[8]=ps2_state;
assignxps_gpio_2_GPIO_IO_I_pin[7:
0]=ps2_byte[7:
0];
assignxps_gpio_2_GPIO_IO_I_pin[31:
9]=0;
assigniobuf=gpio4[31:
26];
//6位
assignmarkline=gpio4[10:
2];
//assignxps_gpio_3_GPIO_IO_I_pin[16]=max1241_data;
//接到了gpio3上
assignmax1241_cs=gpio4[1];
assignmax1242_sclk=gpio4[0];
wiresam_start,sam_done;
wire[10:
0]ad_addra;
0]ad_doutb;
//MCU,in
0]ad_addrb;
//MCUuse,o
wire[2:
0]clkdivid;
//MCU,o
assignad_addrb[10:
0]=gpio4[21:
11];
assignsam_start=gpio4[22];
assignclkdivid[2:
0]=gpio4[25:
23];
assignxps_gpio_3_GPIO_IO_I_pin[11:
0]=ad_doutb[7:
assignxps_gpio_3_GPIO_IO_I_pin[22:
12]=ad_addra[10:
////////////////////////////////////////////////////例化各个模块
vgavgadrv(
.mainclk(mainclk),
.h_sync(h_sync),
.v_sync(v_sync),
.red(red),
.green(green),
.blue(blue),
.clkb(clkb),
.addrb(addrb),
.doutb(doutb),
.b_doutb(b_doutb),
.markline(markline),
.addrb_b(addrb_b),
.clk(b_wave_clk)
);
b_GRam_waveb_GRam_wave(
.clka(clka),
.wea(wea),
.addra(b_addra),
.dina(b_dina),
.clkb(b_wave_clk),
.addrb(addrb_b),
.doutb(b_doutb));
GRamGRam(
.wea(wea),
.addra(r_addra),
.dina(r_dina),
.clkb(clkb),
.doutb(doutb)
MicroBlazeMicroBlaze(
.fpga_0_LEDs_8Bit_GPIO_IO_O_pin(fpga_0_LEDs_8Bit_GPIO_IO_O_pin),
.fpga_0_Push_Buttons_4Bit_GPIO_IO_I_pin(fpga_0_Push_Buttons_4Bit_GPIO_IO_I_pin),
.fpga_0_Switches_8Bit_GPIO_IO_I_pin(fpga_0_Switches_8Bit_GPIO_IO_I_pin),
.fpga_0_RS232_PORT_RX_pin(fpga_0_RS232_PORT_RX_pin),
.fpga_0_RS232_PORT_TX_pin(fpga_0_RS232_PORT_TX_pin),
.fpga_0_Micron_RAM_Mem_A_pin(fpga_0_Micron_RAM_Mem_A_pin),
.fpga_0_Micron_RAM_Mem_CEN_pin(fpga_0_Micron_RAM_Mem_CEN_pin),
.fpga_0_Micron_RAM_Mem_OEN_pin(fpga_0_Micron_RAM_Mem_OEN_pin),
.fpga_0_Micron_RAM_Mem_WEN_pin(fpga_0_Micron_RAM_Mem_WEN_pin),
.fpga_0_Micron_RAM_Mem_BEN_pin(fpga_0_Micron_RAM_Mem_BEN_pin),
.fpga_0_Micron_RAM_Mem_DQ_pin(fpga_0_Micron_RAM_Mem_DQ_pin),
.fpga_0_clk_1_sys_clk_pin(clk100M),
.fpga_0_rst_1_sys_rst_pin(fpga_0_rst_1_sys_rst_pin),
.xps_gpio_0_GPIO_IO_O_pin(dina),
.xps_gpio_1_GPIO_IO_O_pin(addra),
.xps_gpio_2_GPIO_IO_I_pin(xps_gpio_2_GPIO_IO_I_pin),
.xps_gpio_3_GPIO_IO_I_pin(xps_gpio_3_GPIO_IO_I_pin),
.xps_gpio_4_GPIO_IO_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VGA 显示 通道 数字 示波器