FPGA
数字
电子技术
实验
中的
应用
ISSN1672-4305CN12-1352/N实 验 室 科 学LABORATORY SCIENCE第 26 卷 第 3 期 2023 年 6 月Vol.26 No.3 Jun.2023 FPGA 在数字电子技术实验中的应用于德硕,孙 敏,金印彬(西安交通大学 电气工程学院,陕西 西安 710049)摘 要:以项目为导向的本科生数字电子技术实验,以 FPGA(Field Programmable Gate Array)对数字信号的处理为基础,设计并实现了输入模拟信号的模数转换、串口通信、采样分析、波形显示等功能,并进一步拓展实现了心电图的特征识别及心率的测量,为临床诊断提供了参考。实验激发了学生兴趣,提高了学生对数字电路的认知水平和综合应用能力,是本科生教学研究中有意义的一次探索实践。关键词:数字电子技术实验;现场可编程门阵列;心电信号;QRS 间期中图分类号:G642.1 文献标识码:B doi:10.3969/j.issn.1672-4305.2023.03.011Application of FPGA in digital electronic technology experimentsYU Deshuo,SUN Min,JIN Yinbin(School of Electrical Engineering,Xian Jiaotong University,Xian 710049,China)Abstract:Based on the digital signal processing of FPGA(Field Programmable Gate Array),the project-oriented undergraduate digital electronic technology experiment designed and implemented ana-log-to-digital conversion,serial communication,sampling analysis,waveform display and other func-tions of input analog signal,and further expanded the realization of ECG feature recognition and heart rate measurement,which provides a reference for clinical diagnosis.The experiment stimulates students interest and improves their cognitive level and comprehensive application ability of digital cir-cuit.It is a meaningful exploration and practice in undergraduate teaching and research.Key words:digital electronic technology experiment;FPGA;ECG;QRS interval 收稿日期:2021-03-11 修改日期:2021-12-21作者简介:于德硕,在读本科生,主要研究方向并网变流器建模与控制。E-mail:xjtuyudeshuo 通讯作者:孙敏,硕士,工程师,主要研究方向为测试计量技术及仪器、实验教学。E-mail:sunmin 基金项目:西安交通大学本科实践教学改革研究专项项目(项目编号:18SJZX28)。西安交通大学电气工程学院“数字电子技术实验”课程采用以项目为导向的教学模式,每学期以一个完整的数字系统设计题目为基础,设计各次实验 1。实验平台采用 FPGA(Field Programmable Gate Array)开发板,本次实验题目为基于 FPGA 的简易示波器设计,实现了模拟信号的实时采集,并在上位机对信号进行综合处理,实现了波形的显示及测量等功能。此外,在基本实验要求的基础上,引导学生进行实验拓展,开发了心电图的参数测量与显示端口,可以自动识别心电图中的 QRS 波并计算心率,为心电图仪的 PC 化提供了一种思路。本案例成功的实现了教学与工程实践的有机结合,使学生了解了基于 FPGA 的波形采集与显示系统在实际中的应用,有效激发了学生的学习兴趣和积极探索的欲望,进一步拓展了实验的广度和深度,取得了良好的教学效果。1 实验原理在标准的工作时序下,FPGA 与 ADC(模数转换)模块共同完成电信号的采样与转换,这是整个装置的起始端。FPGA 发送时钟、使能信号等驱动信号给 ADC 模块,ADC 模块在驱动信号的驱动下,将信号发生器产生的模拟信号转换成数字信号,并发送给 FPGA。FPGA 与上位机的通信采用 UART 串行通信协议。FPGA 和上位机设定相同的波特率,按照固定的速率进行信号传输。在接收数据时,为了保证每一位的数据稳定可靠,对引脚电平不断进行采样,采样频率是位传输频率的 16 倍 2。取第 7、8、9 个时钟周期内对引脚电平的采样值,并取至少两个相同的值作为实际的检测值,这种做法可以有效地抑制噪声。上位机利用 MATLAB 读取串口数据并进行进制转换,采用波峰识别等一系列算法统计收集信号的参数值,并将得到的信号特征以及信号波形在APP 界面显示。APP 界面由 MATLAB 中的 App Designer 生成 3。界面的接口可以直接在属性窗口更改,代码会自动更新。通过添加和调用回调函数来实现按钮功能。2 硬件电路在信号采集和通信电路中,ADC 模块采用基于AD7476 的 Pmod 模块板,FPGA 采用 EGO1 实验板。在 FPGA 产生的时序输入信号的驱动下,将采集到的十二位并行电压数据实时传送到 FPGA 的数据输入引脚。由于 UART 串行通信传输的是 8 位数据,故取数据信号的前 8 位传送给上位机。硬件电路信号传递流图如图 1 所示。图 1 硬件电路信号传递流图FPGA 主要实现两个功能:一是驱动 ADC 模块完成模数转换,并定时读取 AD7476 产生的数字信号;二是将数字信号通过串行通信,以一定的波特率发送给上位机。FPGA 电路设计的顶层 RTL 逻辑图如图 2所示。图 2 RTL 顶层逻辑图从顶层 RTL 逻辑视图中可以看出,该程序由两个子模块组成,共有 3 个输入信号和 3 个输出信号。其中:ad 子模块为 ADC 模块驱动,rst_n 是复位信号输入,clk 是系统时钟输入,该时钟经过分频后产生输出信号 sclk,为 AD7476 提供时钟输入,输出信号cs 是 ADC 模块的使能控制信号。AD7476 在 sclk和 cs 信号的驱动下,将模拟信号实时转化成数字信号,然后通过 sdata 信号将 16 位转换结果(高 4 位为先导 0,低 12 位为转换数据)串行传输到系统中。din17:0为 ad 模块输出的 8 位转换结果,将串行输入的数据转换为 8 位并行数据。在串行通信子模块 uart_tx 中,rst_n 是复位信号输入,clk 是系统时钟输入,din17:0是待传输的数据,dout 是串行通信的数据输出端。系统的硬件连接图如图 3 所示。硬件电路中将ADC 模块板通过转接板连接到 FPGA 开发板,开发板通过 Type-C 接口与上位机通讯。图 3 硬件连接图3 软件功能实现3.1 软件原理本实验的主要目的是将模拟信号的波形和一些值得关注的数字特征(如频率、直流偏移、电压参数等)直观地呈现出来。上位机软件采用 MATLAB 来完成数据的接收,并利用 MATLAB 中集成的 App Designer 实现数据的处理和显示功能。MATLAB 读取串口数据,并将数据存储在缓冲区内,再将缓冲区中的数据转换成十进制,进行一系列的处理和分析后,在 App Designer 窗口中进行显示。其中,电压波形通过将 MATLAB 读取到的整数信号乘显示精度,得到实际的电压值,然后利用电压取最新的一部分数据点进行 plot 绘图得到。频率计算采用循环比较和计数的方法,累计得到一定的时间段内电压信号穿越平均电压的次数,即可计算得出电压信号的频率。再通过对所取时间段内的电压数据取均值,即可得到电压信号的直流偏移。在示波器界面添加旋钮能实现对绘图界面的控制,来模拟示波器的时间及电压旋钮的功能,可以用于对显示图像进行调整,以便能很好地显示不同频率的波形。旋钮功能利用 App Designer 中的分档旋钮功能实现,在界面中添加分档旋钮后,在代码视图24 于德硕,等:FPGA 在数字电子技术实验中的应用中添加分档旋钮的回调函数,每次旋动旋钮便会触发回调函数,进而实现控制示波器波形界面的功能。MATLAB 集成了功能丰富的窗口接口,能够很简单地实现自定义的 APP 界面设计,并且 MATLAB具有别的软件所不具有的数据分析与处理的便利特性,这使得整个串口示波器功能的实现过程简化了很多。3.2 结果分析利用信号发生器产生正弦波信号,上位机的显示界面如图 4 所示。图 4 示波器界面运行情况该实验中,信号源产生频率为 100Hz,峰值为3.2V,直流偏移为 1.6V 的标准正弦波,示波器界面显示测得频率为 101.4Hz,最大电压 3.244V,最小值为 0.001V,测量误差小于 2%。本实验对不同频率的方波、正弦波、锯齿波等波形进行了测量,测量误差如表 1 所示。表 1 串口示波器频率测量误差表波形预设频率测量频率测量误差正弦波10Hz10.04Hz0.5%正弦波50Hz50.47Hz1%正弦波100Hz101.3Hz2%正弦波500Hz493.8Hz2%正弦波1000Hz1033Hz4%正弦波3000Hz3199Hz7%方波50Hz50.38Hz1%方波500Hz492.7Hz2%锯齿波50Hz49.88Hz1%锯齿波500Hz506.9Hz2%从表 1 中可以看出,随着被测波形频率的升高,测量精度逐渐下降,该装置对低频信号有较高的测量精度。4 实验拓展与应用4.1 心电图波形检测应用本实验基于串口通信,受到模数转换芯片采样率和串行通信波特率的限制,频率测量范围偏低,特别适合低频应用场合。从定量测试结果中可以得出,该套装置在低频段测量精度较高,不同信号识别度较高,且信号显示清晰。基于此,引导学生将课内实验进行拓展,应用到心电波形显示和测量中。传统的心电图信号的显示依靠心电图机,在便携性等诸多方面受到限制4。而本实验为心电图信号的检测与显示提供了一种通用 PC 化的思路。正常人的心电图如图 5 所示,QRS 波反应一个完整的左、右心室除极电位的变化过程,是临床诊断中的重要参考指标5。本实验实现了 QRS 波的识别、QRS 间期的自动计算和心率的计算。图 5 心电图周期过程心电图的测量与显示实验分为两部分:首先利用开源的心电图数据库调试 MATLAB 的图像显示和心电图识别功能;其次利用示波器产生的模拟心电图信号,对 FPGA 的采样效果及 MATLAB 的显示效果进行检验。4.2 心电图数据处理心电图数据选用美国麻省理工学院提供的开源心律失常数据库 MIT-BIH6。实验中将源数据作为 MATLAB 程序中采集串口数据模块的输入信号,以此来对 MATLAB 的数据处理算法和显示功能进行检验。在数据处理部分,首先通过滤波器对心电图信号进行滤波,滤除工频干扰和高次谐波7-9。之后利用带通滤波法,实现对 QRS 波群的检测10。根据 QRS 波群,可以计算出样本范围内的 QRS 间期时长,以及该段时间的心率,并在 APP 界面对波形和数据进行显示。除此之外,软件设计中也加入了旋钮的功能,可以通过操作旋钮来控制显示信号的时长和电压范围,实现局部电压信号的观察和分析。模拟心电图信号的检测结果如图 6 和图 7 所示。34图 6 心电图显示器界面运行情况(正常)图 7 心