基于FPGA的示波器设计

article/2025/3/10 21:28:25

目录

一、设计要求

二、系统架构设计


一、设计要求

        本次基于FPGA的示波器设计主要技术要求包含以下内容:

  1. 系统能够实现模数转换功能,即包含ADC驱动模块;
  2. 系统能够实现ADC采集数据的缓存功能;
  3. 系统包含辅助测试模块,DAC数模转换模块;
  4. 系统能够实现ADC数据和LCD液晶显示数据的转换功能;
  5. 系统具备LCD液晶显示功能;
  6. 附加项:系统具备波形的调频和调幅功能;
  7. 具备波形数据信息的显示功能,幅值、频率等;

二、系统架构设计

        根据项目设计要求,将功能要求进行模块化,系统结构设计如图1所示。主要功能模块包括:

  1. AD_DA模块:主要功能驱动ADC9280模数转换模块,将模拟信号转换为数字信号,完成示波器的模拟信号的采集工作;驱动DAC9708数模转换模块,利用DDS技术实现简易信号发生器功能,此处添加该功能的目的主要是为了在没有模拟数据源的条件下进行示波器功能的辅助测试;
  2. 按键处理模块:该模块主要对物理按键进行边沿检测处理,完成按键消抖处理,正确获取按键信息;同时获取液晶触摸屏的触摸按键信息;
  3. 数据缓存&量化处理模块:该模块功能主要对AD采集的数据进行缓存,然后结合LCD液晶工作原理将AD数据进行转换,将ADC采集的模拟信号量在液晶屏上通过以波形的方式显示。
    同时,模块包含频率计功能,将ADC采集信号的频率、幅值等信息进行计算,输出给LCD液晶驱动模块进行显示;除此之外,还可以根据液晶触摸按键信息将完成液晶波形显示的横纵坐标的缩放功能。
  4. LCD液晶驱动模块 :主要功能驱动液晶显示;

图1

三、模块设计

3.1 AD_DA模块设计

        模块内部主要包含ADC9280驱动程序,以及DAC9708驱动程序,这两个模块较为常见,驱动程序简单。设计中ADC部分主要正确产生ad_clk,然后通过ad_clk对ad_data进行采样即可。有关DA驱动程序,设计中加入例如DDS内容,在ROM内部存储了正弦、三角、方波三种波形,波形可通过按键进行切换,频率、幅值均可调节。RTL级视图如图2所示。

图2

3.2 按键处理模块

         模块主要功能:主要分为两部分,第一部分将物理按键利用边沿检测技术,完成对按键信息的处理,准确的获取按键的上升沿或者下降沿脉冲。RTL级视图如图3所示。

图3

             第二部分主要对液晶触摸按键信息进行正确的采集,如图4所示。

图4

3.3 数据缓存&数据量化模块

        模块主要将ADC采集的信号进行缓存处理,然后结合LCD液晶显示的工作原理,完成量化处理,模块内部添加频率计,将采集信号的频率信息进行提取。同时还有采集信号的峰峰值、幅度等信息进行提取,输出给LCD液晶驱动模块。

图5

3.4 LCD液晶驱动模块

        该液晶模块为RGB565格式的显示模块,驱动程序RTL级视图如图6所示。模块主要将ADC采集的数据完成画波形操作,将采集的数据映射到LCD液晶上完成显示,例如采集正弦波信号,在液晶显示屏上要能够直观的看见正弦波波形。

        同时,结合液晶触摸按键,完成频率、幅值的刻度的增、减工作,实现波形的X\Y轴的调节工作。

图6

四、方案验证

        本次设计使用黑金的开发板AX515,如图7,以及黑金配套的ADC/DAC模块AN108模块如图8,还有LCD液晶模块(液晶要求:RGB888/RGB565,4.3寸,分辨率:480*272,含触摸屏按键功能)。此处开发板和液晶模块不做硬性要求,只要开发板外设能够链接ADC模块和液晶模块即可。

 图7

图8

 4.1 DA功能调试验证

        功能测试过程中ADC采集的信号源是由板卡自身的DDS信号发生器提供,即DAC输出信号源直接介入ADC信号输入接口,DAC在线示波器SignalTap波形显示如图9所示,可以看见例化的三种波形工作均正常,输出选择可通过按键来进行选择。

图9

        如下图10,为ADC不接任何信号时的噪声采集展示图,

图10

        图11为ADC 接入DAC正弦波信号时的系统功能展示图,图中各种信息显示均正常。     

图11

        通过按键调节DAC输出波形幅值,ADC采集数据均有对应变化,系统功能初步验证完成,如图12所示。

图12

本文章只对设计架构和功能做简单的说明,程序具体实现内容较多,可自行下载对应程序进行深入学习理解,另外7寸液晶、VGA接口的配套例程均已调试通过,可私信进行具体问题具体交流。


http://chatgpt.dhexx.cn/article/p73Ps2nG.shtml

相关文章

FPGA实现 贪吃蛇

一. 硬件 黑金AX4010AN430显示屏(480*272)蓝牙模块安卓手机 采用app通过蓝牙模块来操作蛇的移动情况 二. 数据的存储 reg[18:0] Snake[0:7]; //蛇 18:10 x 9:1 y 0 :flag 是否是蛇身 reg[17:0] Food; // 食物三. 蛇的移动的方向 通过上下左右来…

黑金全部开发板资料(FPGA+ZYNQ)分享

黑金开发板 能找到的所有黑金开发板的资料,足够学习使用。 ALTERA CYCLONE 10 黑金开发板ZYNQ7020_2019 黑金zynq7015_2017 黑金zynq7010_2017 …

FPAG—UART串口实现与解析-黑金fpga资料解析

UART实现-黑金fpga开发板案例解析 uart 异步串口通讯 无需时钟线,俩根线一跟复制发数据一根负责收数据。 具体的时序如下图1: 图1:UART时序图 可以看到 当数据线由高位变为地位时,即遇到一个下降沿时刻,表示开始这一…

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十四:SD卡模块

驱动SD卡是件容易让人抓狂的事情,驱动SD卡好比SDRAM执行页读写,SD卡虽然不及SDRAM的麻烦要求(时序参数),但是驱动过程却有猥琐操作。除此此外,描述语言只要稍微比较一下C语言,描述语言一定会泪流满面,因为嵌套循环,嵌套判断,或者嵌套函数等都是它的痛。. 史莱姆模块是…

黑金AX7Z100 FPGA开发板移植LWIP库(二)PL端

前言 上一篇博文中实验了PS端移植LwIP库的演示程序。本篇接下来基于Vivado17.4整理比较详细的PL端移植过程。 一、Vivado 工程建立 1、新建一个空工程,名称为net_lwip_pl。 2、FPGA芯片选择xc7z100ffg900-2。 二、配置PS&PL系统硬件 1、工程建好以后&…

【FPGA从0开始系列】黑金EP4CE10F17C8开发板按键实验(二)

项目目录 1.实验目的2.准备阶段3.实验原理4.编写Verilog HDL程序5.配置引脚6.查看和分析RTL7.下载程序8.总结 1.实验目的 查阅AX4010黑金系列用户手册,编写按键程序,实验简单的按键控制LED的功能,同时学习 Quartus RTL Viewer 的使用 2.准备…

汉诺塔(C语言实现)

目录 汉诺塔的游戏规则: 当A只有一个环的时候: 当A只有两个环的时候: 当A只有三个环的时候: 思路: 当n1时: 当n2时: 当n3时: 当n4时: 见代码 运行截图 汉诺塔的游戏…

【C语言】汉诺塔问题

汉诺塔是一个非常经典的问题,其背后是一个传说故事: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的6…

汉诺塔C语言步骤解析

汉诺塔问题在C语言中一般采用递归法来写,假设有A、B、C三根棒,A棒放着若干个圆盘,将其移动到C棒上,中途可在B棒中暂时放置圆盘。 分析: (1) 如果只有一个圆盘,则把该圆盘从A棒移动到C棒 (2) 如果圆盘数量…

汉诺塔递归的c语言实现(递归)

对于递归来讲, 汉诺塔实际是经典到不能再经典的例子了, 每个数据结构的教材对会提到. 但是到最后只给出一段类似下面的一段代码: #include<stdio.h>void move(int n,char a,char b,char c) {if(n1)printf("\t%c->%c\n",a,c); //当n只有1个的时候直接从…

C语言编程实现汉诺塔问题

C语言编程实现汉诺塔问题 1.首先解释一下&#xff0c;汉诺塔问题&#xff1a;古代梵塔内有A、B、C3个座&#xff0c;开始时A座上面有64个盘子&#xff0c;盘子大小不等&#xff0c;大的在下&#xff0c;小的在上。一个老和尚想把64个盘子从A移到C&#xff0c;规定移动过程中3个…

汉诺塔C语言实现(纯代码)

a、b、c三座塔&#xff0c;将n个从小到大&#xff08;自上而下&#xff09;的圆盘从a移动到c&#xff0c;移动期间小圆盘必须在大圆盘上面&#xff0c;问移动步骤。 #include<stdio.h>int main() {void hanoi(int n,char one,char two,char three);int m;printf("…

【汉诺塔】C语言递归解法,深层次地带你理解汉诺塔公式

目录 汉诺塔公式 汉诺塔问题在数学层面的公式&#xff1a; C语言递归公式 两层汉诺塔 三层汉诺塔 递归问题可谓是学习C语言以来的第一个拦路虎&#xff0c;而汉诺塔问题更是递归中对新手很不友好的一道经典题&#xff0c;我们接下来从公式角度和更深层的图解角度来让你理解…

汉诺塔c语言代码实现

汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重…

【C语言】汉诺塔超详解(脑把脑解释)

文章目录 一、前言二、准备工作关于递归函数 三、汉诺塔步数计算详解&#xff1a;函数的设计符合递归函数的两个基本条件&#xff1a; 四、汉诺塔步骤打印&#xff08;绝对详细&#xff0c;仔细看就能看懂 &#xff09;铺垫换个思路&#xff1a;柱子竟然是可以移动的&#xff0…

汉诺塔C语言实现

汉诺塔背景 文章目录 汉诺塔背景前言一、什么是汉诺塔&#xff1f;二、汉诺塔问题的背景三、汉诺塔问题的代码实现1.代码原理2.代码实现 前言 汉诺塔问题&#xff0c;是心理学实验研究常用的任务之一。该问题的主要材料包括三根高度相同的柱子和一些大小及颜色不同的圆盘&…

C语言汉诺塔详解

问题概述&#xff1a;在A柱子上从下往上按照大小顺序摞着N片黄金圆盘。要求把圆盘从下面开始按大小顺序重新摆放在另一根(B or C)柱子上。并且规定&#xff0c;在小圆盘上不能放大圆盘&#xff0c;在三根柱子之间一次只能移动一个圆盘。 如图所示&#xff1a; (ps&#xff1a;…

C语言实现汉诺塔详细步骤(递归与非递归)及代码

前言 C语言汉诺塔问题是一个经典的问题&#xff0c;在学习编程的初学者中非常流行。它涉及到了递归的思想&#xff0c;能够帮助我们理解递归的基本原理。 首先&#xff0c;我们来了解一下汉诺塔的问题。汉诺塔问题是指&#xff1a;有三根柱子A,B,C&#xff0c;A柱子上有n个盘…

汉诺塔(C语言)

文章目录 一、什么是汉诺塔问题&#xff1f; 二、实现步骤 三、代码实现 四、代码分析 一、什么是汉诺塔问题&#xff1f; 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金…

图文详解汉诺塔(附C语言实现代码)

关注、星标公众号&#xff0c;直达精彩内容 来源&#xff1a;http://a.nxw.so/1iDyQD 一、前言 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根…