FPGA 设计文件的结构关系和主要模块名如图 4.2 所示,模块 1 为顶层文件 ,
用来调用各功能模块和各功能模块之间的连接以及和外部的接口。模块 2 、 3 、
4 、 5 为第二级文件,负责各功能的实现。其中模块 2 为 PLL 锁相环控制模块,
为系统提供需要的时钟信号;模块 3 为 FIFO 控制模块,用于控制 FIFO 的读写
以及 SPI 接口的传输时序;模块 4 为时域监测指标的实时计算模块,用于采集信
号的时域特征实时计算;模块 5 为时域特征阈值监测模块,用于设定监测时域阈
值设定。模块 6-9 为模块 3 的下一级子模块,模块 6 为 FIFO 的写控制;模块 7
负责调用系统 FIFO 模块的 IP 核;模块 8 为 FIFO 的读控制;模块 9 负责数据传
输 SPI 接口的数据接收。模块 10-13 为模块 4 的下一级子模块,模块 10 为采集
数据 RAM 缓存模块;模块 11 为峭度指标计算模块;模块 12 为脉冲指标计算模
块;模块 13 为裕度指标计算模块。
数字系统的内部结构如图 4.3 所示,整体电路可为三个模块。其中模块 1 为
PLL 分频模块,用来产生采样时钟,控制采样频率。其输入为外部时钟 CLK ,
经过 PLL 锁相环分频,由 FC 控制选择使用的时钟频率。模块 2 为时域特征计
算模块,外部输入数据 DATA 经过 RAM 缓存,经过设计的数字计算电路得到采
样信号的峭度指标、脉冲指标和裕度指标,将计算得到结果分别设定阈值相比较,
如果大于等于阈值,输出信号控制 FIFO 缓存。模块 3 为 FIFO 数据缓存和 SPI
读写接口,由一个异步 FIFO 来实现数据的缓存,可以以不同的速率进行读和写,
SPI 读写模块负责与外部支持 SPI 协议的设备进行数据传输。
4.1.5 实时计算模块设计
使用 FPGA 芯片进行计算具有计算速度快、实时性高的优点,而且 FPGA 芯
片的特性可以使各计算之间并行计算,就算进行多指标计算也不会影响整体的
实时性。
计算之前需要将采样数据缓存,使用 RAM 进行数据缓存。 RAM 为随机存
取存储器,可以随时把数据写入任意指定地址,或随时从任意指定地址读取数据。
使用 Quartus II 软件的 RAM IP 核可以将 FPGA 的内部嵌入式存储器进行配置,
实现 RAM 存储器的功能。将 RAM 位宽配置为 16 位,存储深度为 2048 。如图
4.11 所示,为 RAM 模块的连接图。 wren 为 RAM 模块的写使能信号,写入数据
之前需要将 wren 置为高电平。 clk 为 RAM 的读写时钟信号,控制 RAM 的读写
速度,每一个 clk 周期读取或者写入一个数据。 RAM 读写数据需要提供数据和
读写地址, data[15:0] 为 RAM 的写数据接口, wraddress[10:0] 为 RAM 的写数据
地址。 RAM 的深度为 2048 ,可以存储 2 11 个数据,所以取 11 位地址线即可满足
使用需求。读取数据时, q[15:0] 为读取数据总线, rdaddress[10:0] 为读取地址总
线。在使用过程中需要多次读取数据,读数据总线和地址总线可以同时连接多个
模块,各模块的读数据地址总线不能同时输出地址,在需要读取数据时输出地址,
取完数据要将读地址总线置为高阻态。
通过 RAM 缓存数据为后面的时域特征实时计算模块提供数据,实时计算模
块共分为峭度指标计算、脉冲指标计算和裕度指标计算三部分。在 FPGA 中进行
浮点运算时,会消耗更多的片上资源。采用定点运算可以节省 FPGA 片上的逻辑
资源消耗,因此实时计算模块采用定点计算。
峭度指标计算的计算公式如式 10 所示,峭度指标计算结构如图 4.12 所示。
采样点数据 为从 RAM 缓存中读取的数据, 2048 个数据依次从 RAM 中取出,
经过加法电路求出 2048 个采样点的总和。然后需要除以 2048 求出 2048 个采样
点的平均值
̅ ,在 FPGA 设计中,除法器要占用不少的逻辑资源,对于除数为整
数的可以通过移位和加法来实现除法,若除数为 2 ,则可以通过将数据右移舍去
最低位实现除法运算。将数据求和结果整体右移 11 位,舍去低 11 位,相当于除
以 2048 ,得到采样点的平均值
̅ 。经过延时等待平均值计算完成后,再次取出
RAM 中的采样点数据与平均值相减。相减后的差值经过平方计算模块,求和移
位再平方得到峭度指标计算公式的分母值。另一路电路将平方计算模块的结果
引出进行再次平方并求和,得到峭度指标计算公式的分子值。最后分子分母经过
除法模块得到峭度值。
如果采用组合电路实现计算功能的完成,从输入到输出会有较长的延时,系
统很难较高的频率运行。流水线设计可以有效的提高所设计系统运行速度,提高
系统的吞吐量。将整个计算模块分割成多个逻辑功能块,在逻辑功能块之间插入
寄存器缓存,这样计算模块最大延时变成各小功能块中的最大延时时长,可使整
个系统的最高工作频率得到成倍的提高。因此在峭度指标计算模块中将整个计
算流程分成多个部分,在各部分之间添加寄存器缓存,以减少系统时延,提高系
统运行频率。
脉冲指标的计算公式如式 11 所示,脉冲指标计算结构如图 4.13 所示。采样
点数据 经过分子和分母两路逻辑计算。分子部分由 MAX 模块求出 2048 个点
中的最大值,该模块由一个比较器组成,比较两个采样点的数值大小,将其中较
大值保留与下一个采样点作比较,最终找出 2048 个采样点中的最大值。分母部
分对 2048 个采样点求平均值,最终将分子分母相除得到脉冲指标。脉冲指标的
计算模块也同样加入了流水线设计。
裕度指标的计算公式如式 11 所示,裕度指标的计算结构如图 4.14 所示。裕
度指标计算公式的分子和裕度指标一样需要求最大值,分母部分需要对采样点
进行开方运算,然后对结果求和,右移 11 位,然后进入平方运算得到分母结果。
最后对分子分母作除法运算得到裕度指标。再对整个计算模块采用流水线设计,
为各部分加入寄存器缓存。
通过实时计算得到的时域特征需要与设定的监测阈值比较来判断监测设备
的运行状态。如图 4.15 所示,为阈值比较模块的结构图。 TH[11:0] 为阈值大小输
入,一共有 12 位,其中 TH[11:8] 为峭度指标阈值, TH[7:4] 为脉冲指标阈值,
TH[3:0] 为裕度指标阈值。通过实时计算模块计算得出的峭度指标、脉冲指标和
裕度指标输入到阈值比较模块,与阈值 TH[11:8] 、 TH[7:4] 和 TH[3:0] 相比较,若
大于等于阈值,比较器输出高电平。三个比较结果作为输入连接到或门,若有一
个指标超标则或门输出为高电平,控制 FIFO 模块缓存故障数据。