本帖最后由 linwei_jinan_fpga 于 2014-11-16 09:22 编辑
以FPGA为核心实现继电保护装置:算法实现--从DSP到FPGA、从FPGA到DSP
林伟
摘要:借用经典的电流保护流程图,介绍了如何在FPGA系统架构中实现电流保护的各种基本算法;以设计目标的变化为索引,对FPGA中的硬件特征模块进行反向归纳,从硬件结构、底层算法上回归到DSP。以此帮助读者理解“以FPGA为核心实现继电保护装置”这一技术思想,理解FPGA、DSP在软-硬件维度上的统一性。
关键词:继电保护 FPGA DSP 算法
0 引言
笔者近期在网上发布了几篇论文,主旨是介绍“以FPGA为核心实现继电保护装置”这一技术思想,以期促进更多资源投入到这一充满创新机会的领域。其后虽然点击量不少,也有过一些讨论,但总体上感觉大家参与的积极性不高。
几天前,思仿继电保护(微信号:sfjdbh)的一位朋友向我提出建议:写一篇关于FPGA应用于继电保护的综述性介绍,方便继电保护专业、不搞硬件研发的朋友们阅读。
感谢这位朋友!这个建议真的很好,于是笔者写了这篇文字。本文试图从学保护的朋友们都熟悉的一个经典流程图入手,首先分析其在FPGA架构中的实现方式,然后对FPGA中的硬件特征模块进行反向归纳,从硬件结构、底层算法上回归到DSP。希望能帮助大家理解“以FPGA为核心实现继电保护装置”这一技术思想,理解FPGA、DSP在软-硬件维度上的统一性。
1
从DSP到FPGA
请大家先看三幅图。
图1直接拷贝自参考文献[1]的图5-2:电流保护流程图,保护专业的读者应该都比较熟悉。
图1 电流保护流程图(拷贝自参考文献[1]P137)
(a)
系统程序 (b)中断服务程序
图2为参考文献[2]的图1“主FPGA片内系统架构”,是一个以FPGA为核心实现继电保护装置实例的顶层设计。
图2主FPGA片内系统架构
图3为参考文献[2]的图2:保护算法模块的基本架构,也就是图2“主FPGA片内系统架构”中的“保护算法模块”的基本架构。
图3 保护算法模块的基本架构
以下说明图1中完成的各项任务如何由图2、图3中的子模块完成。请大家留意其中体现的并行处理思想。
1.1
由DSP、FPGA实现电流保护流程时各自的特征
如参考文献[1]中所述,图1中的“系统程序”、“中断服务程序”在DSP中是交替运行的:后者的执行由采样脉冲触发,首先中断前者的执行、保护现场,然后执行后者,执行完毕后恢复现场、继续执行前者。
在图2、图3的FPGA架构中,图1中的“系统程序”、“中断服务程序”中的功能由各自独立的硬件模块执行。在追求最高运行速度的情况下,各硬件模块之间除了必要的时序、逻辑关联之外,互不干涉、并行运行。
1.2
从DSP到FPGA:系统程序
图1中系统程序中的修改定值、发送报告功能属于慢速功能,在图2中由“嵌入片内的软核CPU模块”完成。具体工作流程类似于图1,区别在于这个CPU不需要运行中断服务程序,负荷小得多。
图1中由DSP执行的系统程序中的自检功能是在相对固定的时刻进行的。在图2的FPGA架构中,可以由“嵌入片内的软核CPU模块”以与DSP相似的方式完成;也可以在每个需要自检的模块中添加独立的自检逻辑电路,定时进行自检。
在后一种方案下,由于自检功能由独立的硬件执行、不受其他任务干扰,所以自检逻辑可以不局限于“定时执行”的模式,而是设计成“只要被检对象允许被检测就执行检测”,从而大幅度增加自检操作的频度、提高装置的可靠性。这样做的代价是会产生额外的功耗。
1.3
从DSP到FPGA:中断服务程序
图1中由DSP执行的中断服务程序是由定时中断(即采样脉冲)触发启动的,之后按照流程执行各种运算。在图2的FPGA架构中,中断服务程序由分布于各模块中的独立的硬件子模块并行执行,FPGA芯片一旦收到采样脉冲,就会触发这些子模块进行联动,完成各项功能。
中断服务程序
中的“控制数据采集系统,存储采样值”程序段完成的任务在图2中由“本地模拟量、开关量采集、预处理板”、“SV接收、解帧、过滤模块”、“SV插值同步模块”、“数据、信号调度模块”共同完成,采集到的采样值序列存储在图3中的“特征量计算子模块”的输入数据缓冲区(FPGA片内独立的RAM块)中。
中断服务程序
中的“计算Ia、Ic、Im、Im3”程序段完成的任务由图2中的“特征量计算子模块”完成。在追求最高运行速度的情况下,可以为这4个特征量的计算分别设计独立的硬件计算单元。得到的结果由图2中的“保护算法数据源调度子模块”送入“保护特征算法实现子模块”。
中断服务程序
中以“发跳闸指令、报告I(II、III)段动作”结束的三个顺序执行的程序段完成的任务在图2中由“保护特征算法实现子模块”完成。在追求最高运行速度的情况下,可以分别由独立的硬件计算单元对三部分功能并行进行计算,在各计算单元中为每一个加法器、比较器设计专用的硬件单元,以使各运算操作在彼此关联的、由独立硬件单元实现的三个有限状态机的控制下尽可能并行执行。
2
从FPGA到DSP
2.1
从“追求最高运行速度”到“寻求速度与成本的平衡”
请注意,前面一再强调了“在追求最高运行速度的情况下”这一前提条件。如果设计目标改为“寻求运行速度与资源占用(即成本)的合理平衡”,则需要考虑在各个硬件运算单元内部、各个硬件运算单元之间进行底层硬件模块的共享,比如,对乘法器、加法器进行时分复用。
这样做的代价是:使执行运算过程控制的各有限状态机变得复杂。
2.2
从FPGA到DSP
如果在设计目标中使速度--成本之间的平衡点继续右移,将导致运算单元个数越来越少,执行运算过程控制的各有限状态机越来越复杂 -- 极端情况下,整个FPGA将变成一个对少数运算单元进行复杂时分复用的逻辑模块。
如果设计目标进一步修改为“实现硬件结构、软件开发方式的通用化”,则需要对各运算单元进行合并、改写,使其具备“通用运算器”的形式;对各有限状态机的功能进行合并、改写,使其成为可以由外部加载的“标准化二进制指令序列”(也就是程序源代码经编译、链接后得到的机器码)驱动的、支持流水线运行模式的通用控制器。
同时,将原本由简单、专用的硬件逻辑级联实现的功能改为由通用化的复杂硬件对标准化的二进制指令进行译码来实现,必将导致额外的地址解析、读指令、译码、执行指令等操作,相应的运算级数、每级运算的规模也将急剧扩大,从而必将导致运算速度的急剧下降。
此时,这片FPGA事实上已经蜕变成为另一种形式:一片由可编程硬件资源实现的、简化版的DSP 。
长度受限,待续......



全部回复(1 )
只看楼主 我来说两句 抢板凳