​1、Verilog语法基础

在Verilog中,如何声明一个输入端口和一个输出端口?

在Verilog中,端口的声明通常位于模块的端口列表中。输入端口使用input关键字,输出端口使用output关键字。

例如:


module my_module(
    input wire clk,  // 时钟输入
    output wire rst  // 复位信号输出
);
endmodule

摘 要:

提出一种基于现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)的超转保护系统设计方案。该系统采用三余度采集、控制架构,通过软件及逻辑表决控制单元及BIT检测单元,进一步提升了超转保护系统的可靠性。相较于传统的基于CPU的转速采集系统,其具备并行处理、运算速度快、功耗低、实时性强等特点,同时能释放大量CPU资源。该设计具备较强的通用性和实用性,对应急动力装置电子控制单元的超转保护系统设计具有一定的参考借鉴意义。

关键词:

应急动力装置;超转保护逻辑;BIT设计

0 引言

应急动力装置是以燃料分解产生的热燃气或发动机引气为动力源的涡轮动力装置[1],由涡轮、燃烧分解室、燃料箱、齿轮箱及控制部件组成,可以在发动机故障、主电源故障或主液压源故障时,通过开关指令快速启动,为飞机提供应急电源和液压源[2]。为了保证涡轮动力装置及其负载的安全可靠运转,必须可靠地监测涡轮轴转速,并据此快速、准确地控制相应执行机构的开关时机或开度大小,以保证涡轮轴转速稳定在允许范围内[3-4]。

超转保护功能作为应急动力装置必要的安全功能之一,是实现转速稳定控制的前提保证。本文提出了一种基于现场可编程逻辑门阵列的超转保护系统,通过设计多通道并行采集、软件与逻辑独立、并行控制及BIT测试功能,具备高可靠性、强实时性等特点,可保证在超转故障初期进行有效的隔离保护,从而降低单点故障和共模故障造成的应急动力装置转速控制失效的风险,避免造成涡轮装置结构损伤及飞行安全[5]。

Difference Between CPLD and FPGA

本文主要介绍CPLD和FPGA的区别。

CPLD和FPGA都是由逻辑阵列模块构成的,但是CPLD的LAB基于乘积和宏单元,而FPGA的LAB使用基于LUT的逻辑单元。CPLD的LAB围绕中心全局互连排列,随着器件中逻辑数量的增加,呈指数增长。FPGA的LAB以网格阵列排列,随器件密度线性增长。CPLD互连包括LAB本地可编程阵列及中心可编程互连。FPGA器件除了包括本地互连,用于各个LAB,但是和LAB逻辑分开,器件还包括行列互连,这些互连跨过阵列中的多个LAB,以及整个芯片的长宽。

CPU和GPU都属于冯·诺依曼结构,指令译码执行,共享内存。FPGA之所以比CPU、GPU更快,本质上是因为其无指令,无共享内存的体系结构所决定的。

冯氏结构中,由于执行单元可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。而FPGA的每个逻辑单元的功能在重编程时就已经确定,不需要指令。

冯氏结构中使用内存有两种作用:①保存状态。②执行单元间的通信。

  1. 保存状态:FPGA中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,无需不必要的仲裁和缓存。
  2. 通信需求:FPGA每个逻辑单元与周围逻辑单元的连接在重编程时就已经确定了,并不需要通过共享内存来通信。

计算密集型任务中:

在 FPGA 广泛应用的今天,康奈尔大学计算机科学助理教授 Adrian Sampson 思考它是否走在正确的路上,如何能够实现通用 FPGA 等问题。

计算 FPGA

什么是 FPGA?

我认为架构社区对这个概念没有一致的定义。我们来看三个可能的答案:

定义 1:FPGA 是一堆晶体管,你可以把它们连接(wire up)起来做出任何你想要的电路。它就像一个纳米级面包板。使用 FPGA 就像芯片流片,但是你只需要买这一张芯片就可以搭建不一样的设计,作为交换,你需要付出一些效率上的代价。

我不喜欢这个答案。因为它既没有从字面上解释清楚人们是如何使用 FPGA 的,也不是一个贴切的比喻。