FPGA

2024-06-12

FPGA(精选12篇)

FPGA 篇1

1 产生

高密度现场可编程逻辑器件,包括CPLD和FPGA,能够将大量逻辑功能集成于一个单片IC之中。虽然半定制和全定制的专用集成电路(AISC)能够实现将大量数字逻辑功能集成于单片之中,但CPLD和FPGA具有更多的灵活性:既适用于短研制周期、小批量产品开发,也可用于大批量产品的样品研制。同时因其项目开发所需前期工程开发费用低的特点,更有着诱人的应用前景。

VHDL非常适用于可编程逻辑器件的应用设计,并正在得以普及。在500-20万门的大容量CPLD和FPGA的应用设计中,工程师若采用以往的布尔方程和门级描述的方式,难以快速和有效地完成设计。而VHDL却能够支持高级语言结构使工程师根方便地描述大型电路,促进产品的快速上市。它能够支持设计单元库的创建,以存储在附属子设计中重复使用的元件。因为VHDL是一种标准语言,在综合和模拟工具之间,VHDL代码具有可移植能力,即设计可用不同的器件来实现。同样,采用VHDL实现一个设计从可编程器件向ASIC的转换也是便利的。

对于采用CPLD、FPGA或者ASIC大型系统,传统的设计方式是行不通的,传统技术逻辑方程的方式既费时、又易出错,且在方程式中查找错误也很困难。而图形输入方式在有许多优点,例如:可以提供设计的图形观察,具有支持图形阶层结构的软件工具,使设计构成模块化形式。但是,对于大型复杂的设计,纯图形输入方式也有其弊端。

一个优先设计方式应该能够提高设计的工作效率。较详细地来概括,它应该能促进设计输入、设计理解、设计维护的便利和快捷。它即便不依赖于解释,也应该较方便于定义,它应该是开放的、非专用的、工业界能够接受的标准。它允许设计在不同的EDA工具环境之间移植。其模块可以封装成独立单元,重复使用。它支持阶层结构的复杂设计和从门级到系统级的设计,而且可以用于逻辑电路的描述、综合,并可以支持多层次的设计描述。

仅仅有VHDL和Verlog两种语言能够满足数字逻辑设计的这些需求。Verlog似乎比VHDL更为简练,但在论述设计问题时就未必便利。无论是文本的组合利用,还是综合,以及对器件和系统的模拟方面,VHDL都是一个较好的选择。

VHDL是在70年代到80年代中,由美国国防部资助的VHSIC项目开发的产品。在这个语言首次开发出来时,其目标仅是一个使电路文本化的一种标准,为了使人们采用文本方式描述的设计,能够被其他人所理解。同时,也被用来作为模型语言,用于采用软件进行模拟。VHDL于1987年由IEEE制定的1076标准所确认。

今天,VHDL已成为一个数字电路和系统的描述、建模、综合的工业标准。在电子产业界,无论是ASIC设计人员,还是系统及设计人员,都需要学习VHDL来提高他们的工作效率。由于VHDL所具有的通用性,它已成为可支持不同层次设计需求的标准语言。

2 采用VHDL的原因

2.1 功能与灵活性

VHDL具有功能强大的语言结构,可用简洁明确的代码描述进行复杂控制逻辑的设计。为了有效控制设计的实现,它还具有多层次的设置描述功能,支持设计库和可重复使用的元件,它支持阶层设计,且提供模块设计的创建。VHDL是一种设计、模拟、综合的标准硬件描述语言。

2.2 非依赖器件的设计

允许设计者生成一个设计而并不需要首先选择一个用来实现设计的器件。对于同一个设计描述,可以采用多种不同器件组合来实现其功能。若需对设计进行资源利用和性能方面的优化,也并不是要求设计者非常熟悉器件的结构才行。相反,可以集中精力从事设计构思。

2.3 可移植性

VHDL可移植能力是允许设计者对需要综合的设计描述进行模拟,在综合之前对一个数千门的设计描述进行模拟可以节约设计者可观的时间,在这时发现设计上的错误就能够在设计实现之前给予纠正。因为VHDL是一种标准语言,故VHDL的设计描述可以为不同的工具所支持。从一个模拟工具移植到另一个模拟工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。这意味着同一个VHDL设计描述可以在不同的设计项目中采用。

2.4 性能评估能力

非依赖器件的设计和可移植能力允许设计者可采用不同的器件结构和不同的综合工具来评估设计。在设计者开始设计之前,无需了解将采用何种器件,是CPLD还是FPGA。设计者可以进行一个完整的设计描述,并且对其进行综合。生成选定的器件结构的逻辑功能,然后再评估结果,选用最适合自己设计需求的器件。为了衡量综合的质量,同样可用不同的综合工具所进行的综合结果,来进行分析、评估。

2.5 ASIC移植

VHDL语言的效率体现之一,就是如果你的设计是被综合到一个CPLD或FPGA的话,则可使你设计的产品以最快速度上市。当产品的产量达到相当的数量时,采用VHDL能很容易地帮助实现转成ASIC的设计。有时,用于PLD的代码可以直接用于ASIC。由于VHDL是一个成熟的定义型语言,用VHDL设计可以确保ASIC厂商交付优良品质的器件产品。

2.6 上市时间快、成本低

VHDL语言和可编程逻辑很好地结合,将大大提高数字单片化设计实现速度。VHDL语言使设计描述快捷、方便,可编程逻辑应用则将产品设计的前期风险投资降到最低,并促使设计的快速复制简单易行。同时,多种综合工具支持这种形式的设计。VHDL和可编程逻辑的组合作为一类强有力的设计方式,将为设计者的产品上市带来创纪录的速度。

3 采用VHDL设计过程

通常设计过程可划分为下述的6个步骤:

(1)设计要求的定义:在从事设计进行编写代码工作之前,必须先对设计目的和要求有一个明确的认识。对所需的信号建立时间、时钟输出时间、最大系统工作频率、关键的路径等这些要求需求,只要有一个明确的定义,这将有助于设计,然后再选择适当的设计方式和相应的器件结构,进行设计的综合。

(2)用VHDL语言进行设计描述:有了设计要求的定义后,可以尝试去编写设计代码。但是,建议首先应决定设计方式。只有对如何描述设计有了一个最佳的认识,才能更为有效地编写设计代码,然后再通过综合,进行所需要的逻辑实现。通常的设计方式有3种:自顶向下设计、自底向上设计、平坦式设计。前两种方式包括设计阶层的生成,而后一种是将描述的电路当作单模块来进行的。决定了设计方式以后,根据具体的语法和语义结构,可以参照已设定的功能块、数据流状态图等,来进行设计代码的编写。编写一个优化代码的关键在于要依照硬件的内在要求去思考,特别是要能向综合软件运行时的思考方式那样去体验如何实现设计。

(3)原代码模拟:对于大型设计,采用语言模拟器进行设计的原代码模拟可以节省时间。并行工作程序导致电路模拟提前至设计的早期阶段。采用原代码模拟,可以在设计的早期阶段检测到设计中的错误,从而进行修正,以便尽可能地减少对设计日程计划的影响。但对于小型设计,则往往不需要先做原代码模拟,即使做了,意义并不太。因为对于大型设计,其综合、布局、布线往往要花费好几个小时,在综合之前进行原代码模拟,就可以大大减少设计重复和修正错误的次数和时间。当然,大型设计往往是阶层结构的序列设计和模块的组合。

(4)设计综合:设计优化和设计布局布线:综合是把设计描述转换到网表或方程生成的过程。这个过程也可以被解释为设计描述作为输入,而设计网表和逻辑方程作为输出。优化处理依赖于3个因素:布尔表达方式、有效资源类型,以及自动的或用户定义的综合指引。装配是指把通过综合和优化过程所得到的逻辑,安放到一个逻辑器件之中的过程。布局布线工具的好坏对于FPGA设计的性能有着很大的影响,传导延时基本上取决于布线延时。一个优化的布局布线可将电路的关键部分紧密的配置在一起,以消除布线延时。布局布线工具采用一定的算法,指引用户约束和性能估价来选择最佳的布局方式,以逐步实现符合性能要求的优化的布局结果。

(5)布局、布线后的设计模块模拟:即使在设计综合之前进行了设计模拟,在设计被装配之后,还是需要对设计再进行模拟。布局后的模拟不仅具有能够再一次检测设计的功能,而且还有检查时序功能,诸如信号建立时间、时钟到输出、寄存器到寄存器的时延。如果实验模拟结果不能满足设计的要求,就需要重新综合并将设计重新装配于新的器件之中,其间不乏反复尝试各种综合过程和装配过程,或选择不同速度的器件。同时,也可以重新观察和分析VHDL原代码,以确认描述使正确有效的。只有这样,取得的综合和装配结果才会符合设计要求。

(6)器件编程:在成功地完成设计描述、综合、优化、装配和设计模拟之后,则可以对器件进行编程和继续进行系统设计的其他工作。综合、优化和装配软件将生成一个器件编程所用的数据文件。

参考文献

[1]徐志军,等.CPLD/FPGA的开发与运用.电子工业出版社.

[2]褚振勇,翁木云.FPGA设计及应用.西安电子科技大学出版社.

FPGA 篇2

2010-05-13 11:16:29

FPGA常用术语

1:LCA(Logic Cell Array):逻辑单元阵列,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

2: IOB(Input Output Block):可编程输入输出单元,为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。

3:CLB(Configurable Logic Block):可配置逻辑模块,是FPGA内的基本逻辑单元,每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。在赛灵思公司公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成。

4:Slice:是赛灵思公司公司定义的基本逻辑单位,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。

5:LUT(Look-Up-Table):查找表。本质上就是一个RAM,目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的 的RAM。

6:DCM(数字时钟管理模块):提供数字时钟管理和相位环路锁定。

基于EDA技术的FPGA设计 篇3

集成电路技术和计算机技术的蓬勃发展,让电子产品设计有了更好的应用市场,实现方法也有了更多的选择。传统电子产品设计方案是一种基于电路板的设计方法,该方法需要选用大量的固定功能器件,然后通过这些器件的配合设计从而模拟电子产品的功能,其工作集中在器件的选用及电路板的设计上。

随着计算机性价比的提高及可编程逻辑器件的出现,对传统的数字电子系统设计方法进行了解放性的革命,现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。从20世纪90年代初开始,电子产品设计系统日趋数字化、复杂化和大规模集成化,各种电子系统的设计软件应运而生。

在这些专业化软件中,EDA(Electronic Design Automation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。它的优势主要集中在能用HDL语言进行输入、进行PLD(可编程器件)的设计与仿真等系统设计自动化上;20世纪90年末,可编程器件又出现了模拟可编程器件,由于受技术、可操作性及性价比的影响,今后EDA技术会向模拟可编程器件的设计与仿真方向发展,并占据市场的一定份额。

EDA技术主要包括大规模可编程逻辑器件、硬件描述语言、开发软件工具及实验开发系统4个方面。其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体硬件,描述语言是利用EDA技术进行电子系统设计的主要表达手段,开发软件工具是利用EDA技术进行电子系统设计的智能化与自动化设计工具,实验开发系统则是提供芯片下载电路及EDA实验、开发的外围资源。

FPGA结构概述

现场可编程门阵列FPGA作为集成度和复杂程度最高的可编程ASIC。是ASIC的一种新型门类,它建立在创新的发明构思和先进的EDA技术之上。运算器、乘法器、数字滤波器、二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计都可选用FPGA实现。以Xilinx的FPGA器件为例,它的结构可以分为3个部分:可编程逻辑块CLB(Configurable Logic Blocks)、可编程I/O模块IOB(Input/Output Block)和可编程内部连接PI (Programmable Interconnect)。CLB在器件中排列为阵列,周围环形内部连线,IOB分布在四周的管脚上。Xilinx的CLB功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式。

现场可编程门阵列FPGA是含有大规模数字电路的通用性器件。这些数字电路之间的互联网络是由用户使用更高级的软件来定义的。FPGA可以进行无限次的重复编程,从一个电路到另一个电路的变化是通过简单的卸载互联文件来实现的,极大地推动了复杂数字电路的设计,缩短了故障检查的时间。

传统的数字逻辑设计使用TTL电平和小规模的数字集成电路来完成逻辑电路图。使用这些标准的逻辑器件已经被证实是最便宜的手段,但是要求做一些布线和复杂的电路集成板(焊接调试)等工作,如果出现错误,改动起来特别麻烦。因此,采用传统电子设计方案人员的很大一部分工作主要集中在设备器件之间物理连接、调试以及故障解决方面。正是因为FPGA的EDA技术使用了更高级的计算机语言,电路的生成基本上是由计算机来完成,将使用户能较快地完成更复杂的数字电路设计,由于没有器件之间的物理连接,因此调试及故障排除更迅速、有效。

可编程特点有助复杂电路设计

FPGA能进行无限次的重复编程。因此能够在相同的器件上进行修改和卸载已经完成好的设计。在一个FPGA芯片上的基本部件数量增加了很多,这使得在FPGA上实现非常复杂的电子电路设计变成比较现实。由于采用FPGA的EDA技术所产生的性价比更高一些,从而使得最近有多家公司开始采用这项技术,并且这种增长趋势仍旧在继续。

FPGA中的逻辑块是CLB,逻辑块是指PLD(Programmable Logic Device)芯片中按结构划分的功能模块,它有相对独立的组合逻辑单元,块间靠互连系统联系。FPGA的逻辑块粒度小,输入变量为4~8,输出变量为1~2,每块芯片中有几十到上千个这样的单元,使用时非常灵活。FPGA内部互连结构是靠可编程互联P I实现逻辑块之间的联接。它的互联是分布式的,它的延时与系统布局有关,不同的布局,互联延时不同。根据FPGA的不同类型,可采用开关矩阵或反熔线丝技术将金属线断的端点连接起来,从而使信号可以交换于任意两逻辑单元之间。

采用FPGA技术集成设计数字电路产品最大的特点就是可以使设计和实现相统一,无须前期风险投资,而且设计实现均在实验室的EDA开发系统上进行,周期很短,大大有利于现代产品的市场竞争需求,所以,FPGA的应用设计,特别适应于电子新产品的小批量开发,科研项目的样机试制以及ASIC产品设计的验证,能够进行现场设计实现、现场仿真及现场修改。由此,受到电子产品设计工程师的广泛推崇和欢迎。

FPGA的应用领域

FPGA所具有的无限次可重复编程能力,灵活的体系结构,丰富的触发器及布线资源等一系列的特点使得它可以满足电子产品设计的多种需求。FPGA的应用领域主要集中在替换通用逻辑和复杂逻辑、重复编程使用、板极设计集成、高速计数器、加减法器、累加器和比较器的实现、总线接口逻辑等方面。

应用和开发FPGA必须对器件的性能有一个全面了解,例如对器件的容量、速度、功耗,接口要求和引脚数目等进行综合考虑,同时还要注意以下几个细节问题:

时序电路应用“上电”复位电路,保证开机加电后,置时序电路于初始状态;

器件的电源与地引脚必须并接一只0.1μF的无感电容,起滤波和去耦作用;

不能采用数目是偶数的反向器串联的方法构成“延时电路”,一则延时的时间不准确,二则自动编译时会作为冗余电路被简化掉;

主要的全局缓冲器必须由半专用的焊盘驱动,次要的全局缓冲器可以来源于半专用的焊盘或内部网线;

引脚之间严禁短路,忌用万用表直接测量器件引脚;

器件的I/ O口如被定义为输出端,忌对该端加信号,否则将损坏芯片;

低功耗的器件如接负载过大时,不仅会使所用器件的工作效率显著降低,甚至会损伤芯片。

结语

FPGA时钟设计 篇4

对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。在PLD/FPGA设计中最好的时钟方案是由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。只要可能就应尽量在设计项目中采用全局时钟。PLD/FPGA都具有专门的全局时钟引脚,它直接连到器件中的每一个寄存器。这种全局时钟提供器件中最短的时钟到输出的延时。

1 全局时钟

全局时钟的实例如图1所示。图1中定时波形示出触发器的数据输入D[1..3]应遵守建立时间和保持时间的约束条件。建立和保持时间的数值在PLD数据手册中给出,也可用软件的定时分析器计算出来。如果在应用中不能满足建立和保持时间的要求,则必须用时钟同步输入信号。

2 门控时钟

在许多应用中,整个设计项目都采用外部的全局时钟是不可能或不实际的。PLD具有乘积项逻辑阵列时钟(即时钟是由逻辑产生的),允许任意函数单独地钟控各个触发器。然而,当你用阵列时钟时,应仔细地分析时钟函数,以避免毛刺。

通常用阵列时钟构成门控时钟。门控时钟常常同微处理器接口有关,用地址线去控制写脉冲。然而,每当用组合函数钟控触发器时,通常都存在着门控时钟。如果符合下述条件,门控时钟可以象全局时钟一样可靠地工作,图2所示是一个可靠的门控时钟电路。

(1) 驱动时钟的逻辑必须只包含一个“与”门或一个“或”门。如果采用任何附加逻辑在某些工作状态下,会出现竞争产生的毛刺。

(2) 逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其他输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时间的约束。

在设计中可以将门控时钟转换成全局时钟以改善设计项目的可靠性。图3示出如何用全局时钟重新设计图2所示的电路。地址线在控制D触发器的使能输入,许多PLD设计软件,如Max+Plus Ⅱ软件都提供这种带使能端的D触发器。当ENA为高电平时,D输入端的值被钟控到触发器中:当ENA为低电平时,维持现在的状态。

3 多级逻辑时钟

当产生门控时钟的组合逻辑超过一级(即超过单个的“与”门或“或”门)时,验证设计项目的可靠性变得很困难。即使样机或仿真结果没有显示出静态险象,但实际上仍然可能存在着危险。通常,不应该用多级组合逻辑去钟控PLD设计中的触发器。

图4给出一个含有险象的多级时钟的例子。时钟是由SEL引脚控制的多路选择器输出的。多路选择器的输入是时钟(CLK)和该时钟的2分频(DIV2)。多级逻辑的险象可以去除。例如,可以插入“冗余逻辑”到设计项目中。然而,PLD/FPGA编译器在逻辑综合时会去掉这些冗余逻辑,使得验证险象是否真正被去除变得困难了。为此,必须应寻求其他方法来实现电路的功能。

图5给出图4电路的一种单级时钟的替代方案。图中SEL引脚和DIV2信号用于使能D触发器的使能输入端,而不是用于该触发器的时钟引脚。采用这个电路并不需要附加PLD的逻辑单元,工作却可靠多了。

4 行波时钟

另一种流行的时钟电路是采用行波时钟,即一个触发器的输出用作另一个触发器的时钟输入。如果仔细地设计,行波时钟可以像钟一样地可靠工作。然而,行波时钟使得与电路有关的定时计算变得很复杂。行波时钟在行波链上各触发器的时钟之间产生较大的时间偏移,并且会超出最坏情况下的建立时间、保持时间和电路中时钟到输出的延时,使系统的实际速度下降,如图6所示。

5 多时钟系统

许多系统要求在同一个PLD内采用多时钟。最常见的例子是两个异步微处理器之间的接口,或微处理器和异步通信通道的接口。由于两个时钟信号之间要求一定的建立和保持时间,所以,上述应用引进了附加的定时约束条件。它们也会要求将某些异步信号同步化。

图7给出一个多时钟系统的实例。CLK_A用以钟控REG_A,CLK_B用于钟控REG_B,由于REG_A驱动着进入REG_B的组合逻辑,故CLK_A的上升沿相对于CLK_B的上升沿有建立时间和保持时间的要求。由于REG_B不驱动馈到REG_A的逻辑,CLK_B的上升沿相对于CLK_A没有建立时间的要求。此外,由于时钟的下降沿不影响触发器的状态,所以CLK_A和CLK_B的下降沿之间没有时间上的要求。电路中有两个独立的时钟,可是,在它们之间的建立时间和保持时间的要求是不能保证的。在这种情况下,必须将电路同步化。图8给出REG_A的值(如何在使用前)同CLK_B同步化。新的触发器REG_C由GLK_B触控,保证REG_G的输出符合REG_B的建立时间。然而,这个方法使输出延时了一个时钟周期。

在许多应用中只将异步信号同步化还是不够的,当系统中有两个或两个以上非同源时钟的时候,数据的建立和保持时间很难得到保证,将面临复杂的时间问题。最好的方法是将所有非同源时钟同步化。使用PLD内部的锁项环(PLL或DLL)是一个效果很好的方法,但不是所有PLD都带有PLL,DLL,而且带有PLL功能的芯片大多价格昂贵,所以除非有特殊要求,一般场合可以不使用带PLL的PLD。 这时需要使用带使能端的D触发器,并引入一个高频时钟。

6 结 语

稳定可靠的时钟是系统稳定可靠的重要条件,所以不能将任何可能含有毛刺的输出作为时钟信号,并且尽可能只使用一个全局时钟,对多时钟系统要注意同步异步信号和非同源时钟。

摘要:在FPGA设计中,为了成功地操作,可靠的时钟是非常关键的。设计不良的时钟在极限的温度、电压下将导致错误的行为。在设计PLD/FPGA时通常采用如下四种类型时钟:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统包括上述四种时钟类型的任意组合。

关键词:FPGA,时钟,逻辑时钟,险象

参考文献

[1]Anon.The ten commandments of excellent design[M/OL].[2009-01-04].http://www.fpga.com.cn.

[2]吴继华,王诚.Altera FPGA/CPLD设计(基础篇)[M].北京:人民邮电出版社,2005.

[3]徐振林.Verilog HDL硬件描述语言[M].北京:电子工业出版社,2000.

[4]田耘,徐文波,胡彬,等.Xilinx ISE Suite Designer 10.X FP-GA开发指南:逻辑设计篇[M].北京:人民邮电出版社,2008.

[5][美]Clive Maxfield.FPGA设计指南:器件、工具和流程[M].杜生海,刑闻,译.北京:人民邮电出版社,2007.

[6]吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.

[7]阎石.数字电子技术基础[M].4版.北京:高等教育出版社,1998.

[8]周海斌.静态时序分析在高速FPGA设计中的应用[J].电子工程师,2005,31(11):42-44.

FPGA学习的一些误区 篇5

FPGA本身不算什么,一切皆在FPGA之外这一点恐怕也是很多学FPGA的菜鸟最难理解的地方。FPGA是给谁用的?很多学校解释为给学微电子专业或者集成电路设计专业的学生用的,其实这不过是很多学校受资金限制,卖不起专业的集成电路设计工具而用FPGA工具替代而已。其实FPGA是给设计电子系统的工程师使用的。这些工程师通常是使用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法满足系统的需求时,就需要用FPGA来快速的定义一个能用的芯片。前面说了,FPGA里面无法就是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑如何将这些以后资源组合起来实现一定的逻辑功能而已,而不必像IC设计工程师那样一直要关注到最后芯片是不是能够被制造出来。本质上和利用现有芯片组合成不同的电子系统没有区别,只是需要关注更底层的资源而已。要想把FPGA用起来还是简单的,因为无非就是那些资源,在理解了前面两点再搞个实验板,跑跑实验,做点简单的东西是可以的。而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功能才能满足系统的需要,那就需要懂得更多更广泛的知识。目前FPGA的应用主要是三个方向:第一个方向,也是传统方向主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求采用具备高速收发接口的 FPGA,同时要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。第二个方向,可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。例如早就在2006年就听说老美将FPGA用于金融数据分析,后来又见到有将FPGA用于医学数据分析的案例。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信号处理、信道编解码以及图像信号处理等领域,其它领域的研究正在开展中,之所以没有大量实用的主要原因还是因为学金融的、学医学的不了解这玩意。不过最近发现欧美有很多电子工程、计算机类的博士转入到金融行业,开展金融信号处理,相信随着转入的人增加,FPGA在其它领域的数学计算功能会更好的发挥出来,而我也有意做一些这些方面的研究。不过国内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他们完成数学_运算了,这个问题只有再议了。第三个方向就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第二个方向的知识,而如果需要设计专用的接口电路则需要用到第一个方向的知识。就目前SOPC方向发展其实远不如第一和第二个方向,其主要原因是因为SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机/嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。通常是在一些特种行业才会在这方面有非常迫切的需求。即使目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的情况不会有太大

改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。我曾经看好的是 cypress的Psoc这一想法。和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样其实可以满足嵌入式的那些微小的硬件接口差异,比如某个运用需要4个USB,而通常的处理器不会提供那么多,就可以用这么一块FPGA来提供多的USB接口。而另一种运用需要6个 UART,也可以用同样的方法完成。对于嵌入式设计公司来说他们只需要备货一种芯片,就可以满足这些设计中各种微小的差异变化。其主要的差异化仍然是通过软件来完成。但目前cypress过于封闭,如果其采用ARM作为处理器内核,借助其完整的工具链。同时开放IP合作,让大量的第三方为它提供IP设计,其实是很有希望的。但目前cypress的日子怕不太好过,Psoc的思想也不知道何时能够发光。

4、数字逻辑知识是根本。无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。而这,恰恰是很多菜鸟最不愿意去面对的问题。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。很多人无非是学习了,考个试,完了。如果不能将数字逻辑知识烂熟于心,养成良好的设计习惯,学FPGA到最后仍然是雾里看花水中望月,始终是一场空的。以上四条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。

FPGA 篇6

本文主要介绍采用高可靠性、低成本的Actel PPGA来实现正交解码系统,为大家提供一种正交解码的实现方案。传统MCU一般只支持一至两路正交解码,本方案是为了满足用户对多路正交解码以及特殊功能需求而设计,同时结合了Actel FPGA单芯片、上电即行、低成本、低功耗、高安全性和高可靠性的优点,使得正交解码系统在传统的MCU实现方式上得以衍生,可以应用在各种不同需求的场合。本文以单路功能介绍为主,多路仅是在单独基础上的重复。

1概述

(1)功能概述

·支持位置捕获和速度检测:

·支持正交相位模式和时钟/方向模式;

·根据需要可设计支持16、24、32位位置计数模式;

·支持正交错误、方向改变、索引检测等三种中断方式;

·根据需要可设计成对多路正交信号进行解码,实现多路正交解码;

·支持一路串口收发、地址管理、片选控制和AB相滤波处理等操作;

·系统频率为70MHz,超过一般MCU的采样频率;

·资源占用率低。单路24位模式、支持中断控制、支持正交相位和时钟/方向模式、支持位置捕获的正交解码可用Actel的A3P030实现,多路可用A3P060及以上器件实现,具体资源占用情况与实际功能需求有关;

·FPGA的可编程性使得功能设计非常灵活,可以根据用户需求定制特殊功能;

·真正完美的单芯片、低成本、低功耗解决方案;

·ActelFPGA的FlashLock和AES双重加密,保护您的设计;

·Actel FPGA的固件错误免疫使得系统可以工作于较恶劣的环境中,可靠性极高。

(2)系统框图

图1是基于Actel FPGA的正交解码系统结构图。该正交解码系统采用模块化设计,主要由方向识别、地址管理、位置捕获、速度捕获、中断控制和串口收发等模块构成。萁中,方向识别模块主要完成将外部输入的A、B相信号进行细分和辨向:地址管理模块用于管理系统内部的寄存器地址:位置捕获模块用于跟踪外部电机的旋转位置:速度捕获模块用于检测外部电机的旋转速度:中断控制模块用于管理正交错误中断、方向改变中断、索引检测中断的使能和触发:串口收发模块主要用于本系统与PC机、以及本系统与MCU之间的数据传输。

按照接口类别划分,可以把整个系统的接口分为:基本接口、地址接口、数据接口、控制接口、串口接口、正交接口等。详细的接口信息如表1所示。

2各功能模块介绍

(1)方向识别模块

方向识别模块只有在正交相位模式时才会用到,而在时钟/方向模式时不会用到,除此之外,两种模式完全一样。在正交相位模式中,编码器产生两个相位差为90度的时钟信号,它们的边沿关系被用来确定旋转的方向。设A相超前时为正向计数,则B相超前时为反向计数。由图2和图3两个正交信号时序网可以得出,正向时AB状态分别以01、00、10、11循环出现。我们人为对这几个状态编号使AB状态为0l时对应1:AB状态为00时对应2;AB状态为10时对应3;AB状态为11时对应4。不难得到正向计数时、对应自然数的变化规律为1、2、3、4、1、2、3、4……循环变化,下一状态减去前一状态所得到的值只有两种情况(1或是,3)。同理,反向计数时AB状态变化对应的自然数为3、2、1、4、3、2、1、4……循环变化,下一个状态减去前一个状态所得到的值也只有两种情况(-1或是3)。通过下一状态和前一状态的差值可以判断出正交信号的方向信息。

(2)位置捕获模块

位置捕获模块的核心部分是根据A、B相的边沿进行可逆计数。在正交相位模式下,A相的边沿超前B相的边沿时,位置计数器在每检测到一个边沿就加1;A相的边沿落后B相的边沿时,位置计数器在每检测到一个边沿就减1。

在时钟/方式模式下,编码器产生一个时钟信号和一个方向信号来分别表示步长和旋转方向,当方向信号为高电平时,位置计数器在每检测到一个边沿就加1;当方向信号为低电平时,位置计数器在每检测到一个边沿就减1。具体的时钟/方向信号如图4所示。

(3)地址管理模块

地址管理模块包括写寄存器地址管理和读寄存器地址管理。写寄存器地址管理主要是根据MCU发送的写寄存器地址来进行相应寄存器的更新。读寄存器地址管理主要是根据Mcu发送的读寄存器地址来把相应的寄存器值传送到数据接口。典型的读写操作时序如图5和图6所示。

(4)速度检测模块

在该正交解码系统中,速度检测采用定时一分钟,并在一分钟内检测A、B相的边沿个数,MCU通过读取速度寄存器的值就可以得知一分钟内的边沿数,从而变相测出速度值。实际定时时间可根据需要进行设定。

(5)中断控制模块

该正交解码系统支持正交错误、方向改变、索引检测三种中断方式。每个中断都有相应的中断使能位和中断标志位。只有在中断被使能时,中断条件满足时才会产生相应中断。当中断标志位为1时,通过向该中断标志位写1可清除中断标志位,否则中断标志位一直保持。

(6)串口收发模块

该正交解码系统中,串口发送模块的功能是:当MCU判断FPGA当前没有数据发送时,可以发送数据给FPGA的串口寄存器,FPGA再把相应的数据通过串口发送给PC机。串口接收模块的功能是:当PC机通过串口发送数据给FPGA时,FPGA接收数据并置数据标志位,并通知MCU把数据读走。由此看出,FPGA在PC机和MCU之间起数据链路的作用。

3市场应用

正交解码器在电机控制市场占有率较大,它主要用于一些需要电机控制的数控系统中,如机器人、测量仪器、数控机床、轨道控制、自动化生产线等领域。随着电子自动化和智能化的普及,电机的应用场合越来越多,这也使得正交解码器的应用越来越广泛。该正交解码系统的典型应用如图7所示。

4小结

FPGA进入硅片融合时代 篇7

据Altera公司资深副总裁兼首席技术官Misha Burich介绍, 通用处理器同样的芯片可以通过软件编写程序来实现不同的应用, 使用非常灵活但同时功效较低;ASSP和ASIC等专用芯片通过固化硬件针对专门应用, 不可编程, 功效高但灵活性差;硅片融合时代的FPGA在“微处理器+DSP+专用IP+可编程”的混合系统架构下, 可以解决这样的两难问题, 能够兼顾灵活性和效率。未来FPGA会占芯片面积不足50%, 将处理器放入FPGA会成为一种发展趋势。

Misha Burich表示, Altera作为FPGA厂商有天然的优势做硅片融合工作, 在FPGA的基础上引入一些IP核, 增加应用灵活性。硅片融合的FPGA的混合系统架构对于开发环境的要求就会比较高, 包括综合仿真和时序分析、系统互连、基于C语言的编程工具、DSP编程和嵌入式软件工具OS支持等。Altera公司对于软件环境的开发也非常重视, 希望客户能够很高效的使用芯片, 为此在易用性和投入产出比方面会做大量工作。Misha Burich透露, 公司有50%员工在做软件开发, 这样一个复杂的开发环境, 一部分Altera会自己开发, 一部分会和第三方合作。

P硅片融合时代, 除了通信领域应用不断增长之外, FPGA会增加许多新的应用领域, 比如服务器中用于硬件加速的FPGA满足高速处理需求、固态硬盘中的FPGA能够减少时延、适用于高能效驱动器的FPGA能够增加驱动电机数量、用于汽车中支持车载辅助驾驶的SoC FPGA等。

民用飞机FPGA设计研究 篇8

关键词:民用飞机,FPGA,单粒子翻转,重配置

0引言

随着FPGA技术的发展, FPGA越来越多地应用于民用飞机的系统设计中, 如采用FPGA作为核心处理器进行飞机控制系统设计。但是, 目前基于FPGA的复杂电子硬件产品的设计均直接采购于国外, 如何使国产民机拥有自主知识产权的复杂电子硬件产品, 对我们既是一个巨大挑战, 也是一个重要机遇。本文对民用飞机中FPGA的设计作初步研究, 主要包括FPGA设计的研制生命周期、设计与验证过程, 和关键系统设计中的单粒子翻转效应考虑, 以及可测试考虑。

1硬件研制生命周期

DO254 (机载电子硬件设计保证指南) 是2000年4月, 历时7年25次的会议讨论后由RTCA (美国航空无线电技术委员会) 特别委员会颁布, 并在5年之后由FAA (美国联邦航空局) 颁布咨询AC20-152正式得到认可。

FPGA设计的开发应遵循DO254的指导, FPGA设计生命周期如图 1所示。系统过程中, 根据系统安全性来确定FPGA硬件的设计保证等级;在计划过程中定义将功能需求和适航需求转换为硬件的具体方法, 并定义相应证据以保证硬件能够安全执行预定功能。在设计过程中进行FPGA的设计与实现, 该过程分为五个阶段:需求获取阶段、概念设计阶段、详细设计阶段、实现阶段和生产转换阶段;另外, 在执行这五个设计阶段时, 需要同时进行相应的支持过程, 支持过程包括确认与验证 (V&V) 过程、构型管理过程、过程保证和适航联络过程。

2设计与验证过程

2.1需求获取阶段

该阶段标识并记录FPGA硬件需求, 包括由系统分配到硬件中的需求和衍生需求, FPGA硬件需求获取流程如图 2所示。

系统需求规范是将用户需求分解到系统硬件和软件中, 建立系统架构;硬件需求规范定义由系统分配到硬件的需求, 包括硬件功能需求、安全性需求、软硬件接口定义、安装位置定义, 以及监控器设计等;复杂电子器件需求规范定义芯片级需求, 定义每个复杂电子硬件芯片的安全性和功能需求, 以及各芯片间的接口需求。

2.2概念设计阶段

该阶段完成系统的顶层设计, 如功能块图设计、架构描述、板卡外形及设计草图等。

2.3详细设计阶段

该阶段以初步设计阶段为基础, 根据硬件需求进行详细设计, 详细设计流程如图 3所示。

设计输入阶段根据硬件需求完成FPGA功能模块设计, 编制HDL (Hardware Description Language) 代码, 实现相应功能;编码完成后进行代码检查, 如语法检查、格式检查、综合规则检查等, 并进行功能仿真, 验证所设计逻辑是否完成相应功能;当所有功能模块编码完成后, 将其整合为完整的设计, 并进行设计评审。综合阶段将HDL代码转换为逻辑门级网表, 添加布置与时序限制, 当不满足要求时, 需要进行重新编码。在布局布线阶段, 将综合后的网表文件映射到目标物理器件, 映射后生成可用于芯片配置的配置文件。

详细设计阶段退出前应发布FPGA原理图、、测试大纲、追溯性数据、HDL语言源代码、FPGA综合与布线报告, 以及各项评审资料。

2.4实现阶段

该阶段将设计阶段产生的设计数据及代码等与物理硬件整合, 发布硬件物理原型, 并进行测试与验证。对ASIC器件, 进行ASIC供应商评审, 确保所有设计得到实现, 转换为ASIC芯片后对项目文档进行归档, 并可授权进行ASIC批量生产;对于PLD/FPGA器件, 供应商购买部分芯片, 分配部件号, 使用设计的HDL代码对芯片配置并进行验证。

实现阶段退出前, 应正式发布FPGA版本描述文档、芯片内布线图, 以及评审资料等。

2.5生产转换

该阶段检查产品的制造资料、测试设备及资源, 保证数据的可用性和再生产的适用性, 并建立相应基线。

3特殊考虑

3.1单粒子翻转效应

由于FPGA硬件的集成度逐渐提高, 运行电压逐渐降低, 硬件本身易受到高能粒子或射线影响而产生逻辑位的翻转, 造成单粒子翻转效应。硬件设计中采用余度监控、CRC校验和重配置方法来抑制单粒子翻转效应, 保证FPGA硬件指令的完整性。

余度监控多采用指令通道与监控通道, 两通道实时比较监控。当单个高能粒子或射线造成某个通道发生单粒子翻转故障时, 通过两通道间的交叉比较可及时发现故障, 进行适当设计关闭相依通道输出。另外, 对于可配置器件, 可在器件内部周期进行CRC校验, 验证器件内部的配置与原配置文件是否一致, 如发生单粒子翻转效应, 则CRC校验结果出现异常, 应及时关闭通道数据, 避免故障传递至下一级, 防止故障蔓延。

3.2可测试性考虑

对于一些安全性关键系统, FPGA的设计需要实现可测试性, 在FPGA设计中多采用串行设计方法来代替并行设计。如计算X = A*B + C*D + E*F, 并行设计中需要三个乘法器和两个加法器同时运行, 串行设计仅使用一个乘法器和一个加法器, 模拟软件方法实现前向路径, 从而实现硬件线路的可测试性。

另外, 采用串行设计方法, 将增加系统的延时, 但同时可节约FPGA的片内资源, 是一种用时间换面积的方法。

4结束语

本文对民用飞机中FPGA设计作了初步的研究, 研究了FPGA设计的研制生命周期、设计与验证过程, 以及FPGA硬件抗单粒子翻转和可测试的设计考虑。项目实践表明, 此初步研究符合民用飞机设计方法。

参考文献

[1]Design assurance guidance for airborne electronic hardware[S].RTCA DO254-2000, 2000.

[2]KAMANU.A New Architecture for Single-Event Detection&Reconfiguration of SRAM-based FPGAs[J].High AssuranceSystems Engineering Symposium, 2007.

基于FPGA的实时视频增强 篇9

基于局部直方图均衡的对比度增强方法具有自适应好、鲁棒性强等特点, 广泛应用于图像增强领域。Tom等人于1982年提出的自适应直方图均衡算法[4] (Adaptive Histogram Equalization, AHE) , 根据图像局部特征计算灰度变换函数, 克服了全局直方图均衡难以适应局部灰度分布的缺陷, 对比度增强效果较好, 但过高的时间复杂度使其难以应用于实时增强场合;针对AHE算法执行时间较长问题, Zimmerman等人于提出子块非重叠自适应直方图均衡算法 (Non-Overlapped Sub-Block Adaptive Histogram Equalization, NSAHE) , 可以有效降低AHE算法的时间复杂度, 但各子块灰度分布不均匀导致产生方块效应, 对目标识别造成很大干扰[5];针对于NSAHE算法的块效应以及AHE算法的局部可能出现过增强问题, Zuiderveld等人于1994年提出限制对比度自适应图像增强算法 (Contrast Limited Adaptive Histogram Equalization, CLAHE) , 将图像划分为非重叠子块处理, 大大降低了算法时间复杂度, 通过对比度限制手段有效避免图像过度增强, 保证图像局部具有较高的动态范围[6]。CLAHE算法首先将子块直方图中大于截断门限值的像素重新分散到其他灰度级上, 然后计算子块直方图查找表, 最后通过双线性插值完成整幅图像的像素映射、加权处理。CLAHE算法具有计算简单、易于并行的特点, 结合FPGA并行处理优势, 本文利用视频相邻两场直方图的高度相似性特点, 采用直方图边计算边查找的处理方式, 简化CLAHE算法架构, 降低逻辑设计复杂度, 并在FPGA视频图像处理平台上硬件实现, 提高跟踪系统整体的实时性和稳定性。

1 CLAHE算法原理

CLAHE算法起初仅用于医学图像处理, 随后发现该算法可以很大程度提高低对比度图像的结构层次, 也可以配合其他手段广泛应用于图像去雾领域。

AHE算法中的过增强问题可通过限制各子块增强程度来解决, 这些子块的直方图中通常拥有多个尖峰, 即有很多像素存在于单一灰度级上。CLAHE算法设置子块直方图单一灰度级拥有像素个数的上限, 将超出上限的像素均匀分配到其他灰度级上面, 降低直方图映射函数的斜率, 限制对比度增强程度, 解决AHE算法的过增强问题[6]。

CLAHE算法将图像分为非重叠子块处理, 这种分块方式会导致子块边界区域灰度分布不均匀, 在视觉上表现为方块效应, 一般采用低通平滑方法消除方块效应, CLA-HE采用双线性插值平滑策略, 以每个子块的中心像素作为参考点, 处理除参考点意外剩余像素, 解决灰度间断问题, 获得较为平滑的图像效果。

CLAHE算法是一种典型的局部直方图均衡算法, 步骤如下:

1) 图像分块。图像划分为尺寸相同的非重叠子图像 (子块) , 每个子图像含有M个像素。

2) 直方图计算。子块直方图用Hi, j (k) 表示, k表示像素灰度级, 取值范围为[0, N-1], N为可能出现的灰度级数, 对于8 bit灰度图像, N等于256;i, j分别表示图像分块后子图像的行数和列数。

3) 门限值计算。式 (1) 用来计算子块直方图单个灰度级的截断门限值

式中:参数smax为最大斜率 (累加直方图的最大斜率) , 它与对比度增强程度成正比;smax取值为1到4之间的整数;参数α称为截断系数, 它的取值范围是[0, 100]。当α=0时, β取得最小值M/N;当α=100时, β取得最大值smaxM/N, 此时对比度拉伸效果最明显, 超出门限的像素个数存入excess变量中。

4) 像素重分配。使用β对每个子块的直方图Hi, j (k) 进行削减, 将削减下来的像素重新分配到子块直方图未饱和 (即灰度级上像素个数小于截断门限) 的灰度级中, 直至将所有被削减的像素分配完毕, 并用Fi, j (k) 表示Hi, j (k) 经重新分配处理后的结果。

5) 直方图均衡。利用Fi, j (k) 计算最终的直方图均衡映射, 均衡结果用Ci, j (k) 。

6) 像素重构。根据Ci, j (k) 得到各子块中心像素的灰度值, 以它们为参考点, 采用双线性插值策略计算图像中其余各点的灰度值, 重构示意图如图1所示, 图1b是图1a中第j-1行至第j行、第i-1列至第i列图像局部的放大, 位于1象限的点p为待增强像素, 根据p点和参考点位置关系确定权值, 加权获得最终处理结果, 见式 (2) [7,8]

式中:Pold为增强前的像素;fi, j为子块直方图映射;Pnew为增强后的像素。

2 CLAHE算法的FPGA实现

2.1 基本思路

在深入理解CLAHE算法原理之后, 采用D触发器阵列存储直方图查找表, 方便数据读写操作, 然而经过资源分析后, 发现此方案不可行。为此需要一种切实可行的优化设计方案, 在满足图像实时增强指标的基础上实现资源优化。本文选择片上的BRAM (Block RAM) 资源替代D触发器阵列存储结构的优化方案, 虽然此方案对RAM读写时序要求较高, 但是可以节省更多的逻辑资源。

对于256×256×8 bit的灰度图像, CLAHE算法子块大小设置为64×64 (共16个子块) , 截断门限为β, 下文分析FPGA资源详细占用。

BRAM资源占用情况为:

统计RAM, 根据截断门限β设置数据宽度, 地址宽度等于输入图像位数。

查找RAM, 数据宽度与地址宽度均等于输入图像位数。

综上所述, 每个统计RAM占用资源为26 (23等于512 bit, 每个查找RAM占用资源为28 (23等于2 kbit, 统计RAM和查找RAM共计32个, 需要32个M18K (M18K为V5系列FPGA可配置的最小容量BRAM单元) 。

乘法器IP核中, 权重计算需要4个乘法器、加权累加需要4个乘法器, 乘法器IP核通过FPGA片上的DSP48E Slice配置, 共需要8个DSP48E Slice, 不占用额外的逻辑资源。

DCM (Digital Clock Manager) :数字时钟管理器, 提供数据处理时钟和RAM读写时钟。

本文采用统计存储模块和查找存储模块 (简称统计RAM和查找RAM) 双存储架构, 采用直方图边统计边查找的工作模式, 即场正程计算统计直方图同时执行像素增强, 场逆程计算查找直方图同时执行RAM清零处理, 形成流水处理方式, 确保输入像素在两个数据时钟周期增强后输出。

2.2 设计方案

如图2所示, 整个系统分为4个模块:统计RAM、查找RAM、统计计算模块和双线性插值模块。单个像素流水处理时间为两个时钟周期, 第一个时钟周期从查找RAM读取采样数据, 第二时钟周期利用采样数据以双线性插值方式进行像素重构, 同时读取下一个待重构像素的采样数据。

工作数据流如下:

第n场场正程期间, 输入像素进入统计RAM和查找RAM, 分别直方图统计计算和直方图查找数据采样, 下一个时钟根据查找RAM的采样数据以双线性插值方式进行像素重构, 同时读取下一个待重构像素的采样数据, 单个像素流水处理时间为两个时钟周期;第n场场消隐期间, 首先将查找RAM清零, 统计计算模块根据统计存储模块生成查找直方图映射, 然后将映射写到第n+1场的查找RAM, 最后将统计RAM清零, 等待第n+1场输入像素来临。

1) 存储模块 (统计RAM和查找RAM)

在场正程行有效期间, 在RAM读写时钟 (数据时钟二倍频) 上升沿, 以输入像素灰度值作为统计RAM的读写地址, 读出统计RAM数据, 在下一个时钟上升沿, 如果读出数据小于第1章所述的截断门限, 将读出的数据加一重新写入统计RAM中, 如果读出数据等于截断门限, 统计RAM内容保持不变, 将超出的像素个数统计到第二章所述的excess变量中, 等待统计计算模块进行像素重分配处理;与此同时, 根据输入像素灰度值及行列计数 (灰度值作为查找RAM度地址、行列计数使能相应的查找RAM进行采样) , 从查找RAM中读出映射灰度值, 然后送入双线性插值模块处理。

在场消隐期间, 首先将查找RAM清零, 然后将excess变量中的超出门限的像素均匀分配到其余灰度级上, 再进行直方图正规化处理, 将结果写入查找RAM, 最后将统计RAM清零, 至此单场图像处理结束。

2) 统计直方图计算模块

统计直方图计算架构如图3所示, 该模块由像素重分配模块和直方图累加模块构成, 模块内子块并行处理, 互不影响, 当所有子块的像素分配标志位拉高时, 直方图累加模块开始工作。

像素重分配模块:CLAHE算法在像素重分配以1为步长, 这种分配方式会延长单场图像FPGA处理流水时间, 为此提出一种新的像素分配策略, 将excess变量与灰度级个数 (对于8 bit灰度图像, 拥有256个灰度级) 作商, 得到excess_avr变量, 以excess_avr作为分配步长, 将excess变量中的像素分配到统计RAM中, 通过这样的思路可提高算法执行的效率, 为其他模块处理提供一定的时间余量。

直方图累加模块:先读取统计RAM中数据进行累加, 然后实施直方图映射正规化操作, 避免将较大的数据写入查找RAM, 需要减少查找RAM的数据宽度, 防止占用过多的RAM资源 (即将查找灰度值映射至[0, 2n-1], 其中n为图像位数) , 最后将正规化映射结果写入查找RAM。

3) 双线性插值模块

双线性插值模块从查找RAM获取采样数据, 模块涉及数据选取、权值计算、插值规则选择、加权乘累加多个操作, 权重、乘累加运算中还涉及多位乘法操作, 导致该模块无法在一个时钟周期内完成, 为此调用乘法器IP核、设计二倍频 (输入数据时钟频率的二倍) 状态机 (四个状态) , 将处理时间压缩在一个时钟以内, 状态机说明如下:状态0表示读取采样像素, 同时计算权值, 将采样数据用状态机时钟延迟一拍, 保证像素灰度值和权值的同步性;状态1~3表示根据像素点的位置 (1角落、2边界、3内部) , 选取不同的插值规则加权累加, 像素增强后进入下一级处理, 状态机转换流程如图4所示。

3 系统运行结果性能分析

本文选用Intel Core4 Xeon CPU E5507, 主频为2.27 GHz, 内存为2.99 Gbyte的计算机, 采用MATLAB 2007a、MOLDELSIM SE 6.5e和Xilinx开发软件ISE12.4, 所选图像为256×256×8 bit灰度图像, FPGA平台输入视频为256×256×8 bit挂飞视频, 帧频为50 f/s (帧/秒) 。算法参数如下:CLAHE算法子块大小为64×64, 截断门限设置为63。

硬件平台采用的FPGA芯片是Xilinx公司Virtex-5系列XC5VSX50T, 其总逻辑单元Total logic slice为8 160个, Total Block RAM为4 752 kbit, 可配置成264个MK18, 132个MK36。

3.1 MOLDELSIM仿真结果及分析

首先利用MATLAB软件将需要增强的图像写入文本文档, 然后在仿真Testbench中利用readmem系统函数将图像读到输入像素缓存变量dat_mem中, 再将像素按照数据时钟和行场时序送给增强模块, 处理完成的像素返回给Testbench, 在输出使能信号out_en处在高电平时, 利用fdisplay系统函数将增强后的像素写入文本文档, 最后在MATLAB软件上读入图像数据, 观察增强效果。

如图5所示为图像第238行的实验波形, 数据时钟是20 MHz的clk信号, 第238行第一个像素灰度值datin为65, 65作为读地址从查找RAM读出数据hist_acc_dato, 再将hist_acc_dato送入双线性插值模块处理得到最后的增强结果dato等于39, 整个图像增强过程流水时间为两个数据时钟周期, 即100 ns, 完全保证了图像增强的实时性。

如图6所示, 图6a和图6d分别以雾天都市和开发区图像作为测试图像, 对比图6b和图6c、图6e和图6f以及表1中增强前后图像客观质量的评价数据, CLAHE算法MATLAB的串行实现和MODELSIM的并行实现获得了相同的增强效果, 经过CLAHE增强算法处理, 有效增强原图像的对比度和纹理, 增强后的图像层次分明, 显示了较好的增强效果, 为跟踪器提供了较为清晰的图像。

3.2 FPGA平台视频增强结果

在Xilinx的XC5VSX50T FPGA平台上, 采用雾天采集的实时航拍视频验证CLAHE算法增强的实时性和可靠性。对比图7中的增强效果, 增强前图像近处画面模糊不清, 图像远处画面缺乏层次, 丢失很多细节, 通过CLA-HE算法增强处理后, 图像细节得到凸显, 整体画面非常清晰, 具有真实自然的视觉效果, 保证图像增强实时性的基础上获得良好的增强效果。

4 结束语

本文以逻辑资源和BRAM资源较少的FPGA作为硬件平台, 以CLAHE算法为基础实现视频实时增强。结果表明, 该方案对于对雾天不同退化程度的低照度实时视频, 能有效增强其对比度和局部细节, 在亮度、对比度和细节方面都能取得较好的视觉效果。

基于局部直方图均衡的图像增强FPGA实现方案具有自适应好、鲁棒性强等优点, 因此该方法具有一定的通用性。利用视频相邻两场的直方图高度相似性特点, 将CLAHE算法成功移植到FPGA硬件平台, 整场图像增强处理流水时间仅为100 ns (两个数据时钟) , 为后续处理提供了充足的时间, 提高了整个跟踪系统的实时性和稳定性。

摘要:在图像制导应用中, 针对雾霾等恶劣天气情况下形成的低对比度图像中目标跟踪稳定性不高的问题, 需要对输入的低对比度视频图像进行实时增强预处理。限制对比度自适应直方图均衡算法 (Contrast Limited Adaptive Histogram Equalization, CLAHE) 是一种增强效果较好、计算简单且易于并行实现的方法, 重点研究CLAHE算法架构以及FPGA硬件实现过程, 并在Xilinx公司的Virtex-5系列FPGA硬件平台和MODELSIM仿真软件上对算法进行了时序分析、增强效果验证。通过软件仿真和实际平台测试验证, 设计正确可行, 在实时增强的基础上有效提高目标跟踪精度。

关键词:视频图像增强,CLAHE,实时性,FPGA

参考文献

[1]GONZALES R, WOODS R.Digital image processing[M].2nd ed.Beijing:Publishing House of Electronic Industry, 2007:59-84.

[2]李建彬, 韩军, 邱君华.基于Retinex的旧视频序列增强算法[J].电视技术, 2011, 35 (5) :21-24.

[3]TAN R.Visibility in bad weather from a single image[C]//Proc.IEEE Conference on Computer Vision and Pattern Recognition.Washington, DC:IEEE Computer Society, 2008:2347-2354.

[4]TOM V, WOLFE G.Adaptive histogram equalization and its applications[C]//Proc.SPIE Application on Digital Image Processing IV.San Diego:SPIE Press, 1982:204-209.

[5]ZIMMERMAN J, PIZER S.An evaluation of the effectiveness of adaptive histogram equalization for contrast enhancement[J].IEEE Trans.Medical Imaging, 1988, 7 (4) :304-312.

[6]ZUIDERVELD K.Contrast limited adaptive histogram equalization.graphics gems IV (Eds.) [M].MA:Academic Press, 1994.

[7]周卫星, 廖欢.基于高频强调滤波和CLAHE的雾天图像增强算法[J].电视技术, 2010, 34 (7) :38-40.

视频混沌加密及其FPGA实现 篇10

随着科技 的飞速发 展 ,视频采集 技术获得 了十分广泛 的应用。 在工业自 动化控制 、医疗器械 、安防设备 等领域都能 看到视频 采集的身 影 [1,2]。然而在 一些特殊 的场合 , 比如网络 视频和视 频会议等 , 对于数据 安全有较 高的要求。 这就需要 对传输的 视频数据 进行加密 处理[3,4,5,6,7]。但是对于 网络视频 和视频会 议等对数 据实时性 要求非常高 的应用场 合 ,由于其加 密算法复 杂并且数 据运算量大 ,显然不符 合实时性 的要求。 因此 ,本文采用 一种加密效 果好并且 易于实现 的混沌猫 映射算法 来完成加 密运算 ,以满足安 全性和实 时性的需 要。

视频加密 主要有两 种方法 , 一种是采 用基于Linux操作系统 下的C语言或MATLAB语言等软 件的方法 加以实现 , 这种方法 的特点是 可移植性 较好 , 实现起来 较为简单方 便。但这 种方法是 面向处理 器的 ,指令执行 采用的是串 行操作的 方式 , 执行速度 相对较慢 , 因而视频信 号处理的 实时性也 相对较差 。另一种 则是采用 硬件描述语 言的方法 加以实现 ,这种方法 是面向最 基本的逻 辑单元或门 电路单元 , 其主要特 点是能够 充分利用FPGA的并行处 理优势。 但这种方 法在通常 情况下不 支持对浮点 数的运算 和处理 , 实现难度 相对较大 [7]。与静止 图像加密的 主要不同 之处在于 ,对视频信 号处理和 混沌加密的 实时性具 有很高的 要求。因 此 ,本文采用 硬件描述 语言和FPGA技术实现 视频数据 的混沌加 密。利用FPGA并行处理 等优良特 性可以更 好地将CCD摄像头采 集的模拟视 频信号转 化为数字 视频信号 并完成对 其加密等多 个步骤 ,从而最终 完成对视 频的混沌 加密。实 验结果表明 ,该系统能 同时满足 视频采集 的实时性 和安全性 这两者的要 求。

1 视频混沌加密原理

1 . 1 二 维 猫 映 射

猫映射最 早由Arnold提出 , 因为常用 一张猫脸 演示而得名 。它是一 种将明文 置乱的加 密方式。 二维猫映 射的数学表 达式如下 :

式中(xn, yn) 是一幅N×N图像的像 素点位置 , ( xn + 1, yn + 1) 是原像素点 坐标经过 猫映射变 换之后所 得到的新 坐标 ,N = 240。A的两个特 征值, 其对应的 李氏指数, 该映射是混 沌的[6]。同时 ,它符合混 沌运动的 两个因素 :拉伸和折叠 。又由于det A=1, 因此该二 维的猫映 射是保面积 映射。并 且猫映射 是一一映 射 ,图像中的 一个像素点 唯一地映 射到另一 个像素点 中去。

1 . 2 二 维 猫 映 射 参 数 的 选 取

传统的二 维猫映射 为了取得 较好的加 密效果 , 需要对图像 进行多次 的置乱 ,因此导致 了加密系 统的时间 代价大 ,效率低下 。多次置 乱的加密 公式如下 :

A矩阵可以 表示为 :

P和P -1为互逆矩 阵 ,θ为一对 角矩阵 , 其数学表 达式为 :

将式(4)代入式(3)中 ,得 :

由上式可 知 ,多次A矩阵的猫 映射加密 相当于B矩阵的一次猫映射加密, 相当于图像完成了A矩阵的多次拉 伸和折叠 [7]。因猫映 射加密具 有周期性 , 周期大小 与图像分辨 率、矩阵中 参数大小 等有密切 联系[5]。因此 ,选择好矩阵 中的参数 可以令效 果事半功 倍。

因此在选 择参数时 尽量选择 令加密图 像像素分 布均匀的迭 代次数n, 以达到最 好的加密 效果。猫 映射的周期M由图像大 小N以及猫映 射矩阵中 的参数所 决定 , 因此 , 通过MATLAB仿真来获 得加密周 期M和最佳的加 密参数。

选取矩阵, 当图像大 小为240×240时 , 猫映射加密 的周期为60, 不同迭代 次数图像 的加密效 果如图1所示。

从仿真结果可知,二维猫映射置乱的迭代次数并不是越大越好,譬如A矩阵迭代20次之后,图像中的信息能被肉眼所分辨。而A矩阵的60次迭代之后图像又被还原。虽然A矩阵的5次迭代和55次迭代之后的加密图像已经都被完全打乱,但由于迭代次数过多会造成矩阵中的元素过大,不便于计算。因此本实验采用的加密矩阵为:

式中B矩阵为猫 映射加密 的置乱矩 阵 ,其效果相 当于A矩阵的5次变换。 使用B矩阵对图 像置乱 ,不但解决 了视频数据 的安全性 问题 , 更由于算 法的简单 易于实现 ,可以很好 地满足视 频采集系 统的实时 性要求。

2 FPGA 采集系统的设计

本实验采 用的FPGA芯片是Xilinx公司VirtexⅡPro系列的XC2VP30。该FPGA芯片包含13 969个逻辑片 、428 Kb的分布式RAM、136个乘法器 单元、2 448 Kb的块RAM、8个数字时 钟管理模 块、2个Power PC核和8个G比特收发 器。

2 . 1 FPGA 采 集 系 统 概 述

本文的采 集系统由Xilinx公司的XUP Xilinx VirtexⅡPro开发板为核心开发平台、视频采集子板VDEC1、CCD摄像头和LCD液晶显示器组成。其系统设计框图如图2所示。

2 . 2 FPGA 采 集 系 统 流 程

整个采集 系统包括4个模块 :AD芯片初始 化模块、ITU656解码模块 、缓存模 块和VGA显示模块 [8]。4个模块均由Verilog语言编写 , 在Xilinx公司的ISE开发环境下 完成。

系统上电 之后 ,首先会由I2C初始化模 块进行ADV7183B芯片的相 关初始化 , 包括ADV7183B采集数据 后输出的数 据格式和 相关制式 的设置等 。初始化 完成后 ,AD芯片采集 到的数据 会不断地 传送到ITU656解码模块中 , 解码模块 判断数据 是否为有 效数据的 起始信号 ,若为有效 显示数据 ,则将该场 的有效显 示数据进 行颜色空间 的转换 , 由YUV422格式转换 为能被显 示器识别 的RGB格式。然 后由线缓 存对每一 行数据进 行缓冲操 作 ,若写满一 行数据则 切换另一 个线缓存 器。利用 乒乓操作对Block RAM组成的缓 存进行读 写操作 ,不但很好 地解决了异 步时钟下 的数据存 储问题 ,而且避免 了同时读 写数据时造 成的冲突 。从Block RAM中读出的 数据会被 存储到帧缓 存中 , 最后会将 数据交由VGA控制模块 显示到屏幕 上[9]。视频采 集系统的 流程图如 图3所示。

3 混沌猫映射的 FPGA 实现

完成视频 的采集和 存储之后 , 需要对视 频数据进 行加密。猫 映射加密 的实质是 对图像的 像素点进 行置乱操作 ,由于其易 于实现的 特点很好 地满足了 视频数据 的实时性要求,故猫映射加密是一种优秀的视频预加密方案。

在硬件的 实现上 ,需要对一 帧完整的 图像数据 的像素点进 行置乱 ,将原本顺 序存储的 像素点分 别分配到 猫映射后的 地址。这 个操作就 需要一个 模块把原 本递增的地 址变量转 化为猫映 射后的地 址变量 ,再按照映 射后的地址 将像素值 存入到帧 缓存相应 的地址中 。然而 ,一维地址变 量并不能 直接进行 猫映射的 运算 ,需要将其 转化为二维 地址变量 :

式中xaddr和yaddr为二维地 址变量 ,saddr为一维地 址变量 ,cpixel为每行像 素个数。

从第1节的结论可知,选取的猫映射加密矩阵B为:

将矩阵B代入式 (8) 即可得到 混沌猫映 射后的二 维地址。最 后 ,还需要将 这个二维 地址转换 为一维地 址存入帧缓 存中 :

根据上述 混沌猫映 射的原理 , 得视频加 密的实现 框图如图4所示。

利用FPGA并行操作的优点, 使地址的猫映射变换和视频数据的解码同时进行,大大缩减了数据处理所消耗的时间。同时由解码模块向VGA控制器和猫映射地址变换器发出一个控制信号,以确保控制信号与数据的同步性。

4 FPGA 硬 件实现结果

4 . 1 实 验 结 果 波 形 分 析

由于视频 的数据量 较大 , 因此 , 本系统采 用了采用240×240的分辨率 和RGB656作为RGB数据的传 输格式 , 采用RGB656降低了数 据量的同 时也保证 了图像的质 量。实验 的最后 , 采用了Xilinx公司的在 线逻辑分 析仪Chipscope进行了数 据的仿真 , 视频采集 系统的数 据仿真图如 图5所示。

4 . 2 硬 件 实 验 结 果

本实验使 用的采集 系统由FPGA开发板、 视频采集子 板、CCD摄像头三 部分组成 。采集系 统主要设 置了两个功 能键 , 由拨码开 关组成 , 开关一实 现对视频 截取的功能 ,开关二实 现了视频 数据实时 加密的功 能。摄像 机获取的原 视频图像 如图6(a)所示 ,通过混沌 猫映射后 的视频加密 图像如图6(b)所示。

5 结 论

FPGA 篇11

关键词:FPGA;工业实时通信模块;设计

中图分类号:TP202 文献标识码:A 文章编号:1006-8937(2016)32-0066-02

1 概 述

在当前的技术条件下,PLC内部通信采用的多是分层结构,将通信分为不同插箱之间的通信以及插箱内部各个模块之间的通信,而传统PLC采用的是单层通信模式,在不同插箱之间利用CAN总线实现串联通信,不仅通信距离短,而且通信的速率不高,通常仅能达到500 Kbps,在这种情况下,系统扫描一个模件所需的时间约为1.6 ms,信息传输存在着很大的滞后性。如果利用通讯速率100 Mbps的工业实时以太网,在同等条件下,完成所有模件扫描的时间也仅需0.8 ms,通信速率得到了极大的提升。因此,针对当前CAN总线通信效率低下的问题,可以结合FPGA技术,将其升级为工业实时以太网,在提升通信速率的同时,满足工业现场的各种复杂需求。

2 基于FPGA的工业实时通信模块设计

FPGA,全称Field Programmable Gate Array,即现场可编程逻辑门阵列,属于一种比较特殊的半导体,在其中含有可以根据用户需求进行编辑的元件,其在程序编辑方面具有设计周期短,便捷方便,修改简单等特点。在实际应用中,FPGA相比较ASIC(专用集成短路)的响应速度要慢,实现同样的功能也需要更大的面积,不过其同样具有非常显著的优势,如能够实现快速成品,成本更加低廉,可以对程序中存在的错误进行改正等。考虑到通信接口模块本身的连接的受控模块较多,其各自的接口形式和通信协议存在着一定的区别,加上部分数据对于通信延时有着较高的要求,可以采用具备较强灵活性的FPGA技术,进行工业实时以太网通信模块的设计,需要从硬件和软件两个方面进行考虑[1]。

2.1 硬件结构

主控芯片选择Xilinx公司的Spartan-6XC6SLX45 FPGA,外部存储器选择DDR3 SRAM芯片MT41J64M16LA-187EIT以及Flash芯片25P64V6P。在网路芯片的选择种,采用了100M单物理层芯片的方案,选择PHY芯片DP8363SQ,以IP core在FPGA内部实现Ethernet MAC,与PHY芯片通过RMII接口连接在一起。

这里的Microblaze是基于Xilinx公司FPGA的微处理器IP核,采用RISC架构以及哈佛结构的32位指令及数据总线,能够对存储在片上存储器和外部存储器中的程序进行全速执行,同时对其中的数据进行访问。系统CPU设置有大量的外部设备,如SRAM、Flash、MAC等,系统为每一个设备分配了独有的地质,CPU对于各个设备的访问可以看做是相应地址的操作过程。

以太网IP core AXI Ethernet Lite MAC支持IEEE802.3标准,可以结合简化媒体独立结构,与工业标准PHY芯片连接,通过AXI4-Lite以及Microblaze实现相互之间的信息传递,支持10M乃至100 M的以太网通讯速率。IP核采用同步设计,为了确保以太网的通信速率能够达到最大的100 Mbps,系统时钟频率设置为50 Mbps。本系统硬件平台的搭设以及软件应用程序的开发都是在嵌入式软件开发工具EDK中实现的,硬件平台的搭设环境为XPS,软件程度的开发环境为SDK。

2.2 软件设计

2.2.1 数据接收与发送

在通信模块中,软件设计主要是实现PHY芯片的初始化,确保其能够对以太网接收中断处理函数进行定义,同时以实现以太网接收中断的初始化。初始化主要是针对以太网MAC数据帧而言,在IEEE802.3标准中,数据包的格式类型,如图1所示。

在系统中,以太网接收数据端为PHY_dv,在程序运行时,会首先判断PHY_dv是否置1,如果置1则可以进行数据帧的接收,接收完成后,MAC会自动进行自身目的地地址与数据帧目的地地址的对比,如果无法匹配,则地址无效,会将接收到的数据全部丢失,重新接收;如果匹配,MAC会针对数据帧进行CRC计算,并且继续与接收到的数据帧的帧校验序列FCS中的CRC进行比对,若匹配,完成数据接收,若不匹配,表明FCS错误,重新接收数据[2]。

MAC对于数据帧的发送主要是依照以太网CSMA/CD技术。

2.2.2 周期同步处理

在标准以太网中,数据发送采用的是CSMA/CD技术,当网络负荷不高时,很少发生冲突,基本上能够满足对于通信实时性的要求。但是,在工业现场,具有容量巨大、传输速率快、IO点众多的特点,网络的负荷通常都比较重,容易发生冲突问题,从而造成网络性能的下降。考虑到冲突和处理的随机性以及网络通信延时的不确定性,想要保证通信的实时性非常困难。

因此,在通信模块的设计中,将定时器定义在顶层应用程序,从主站定期向从站发送数据,从站在接收到数据后,立即向主站回发数据。如果主站在向从站发送数据局后,在设定好的时间内没有接收到从站回发的数据,则此次数据发送失败,产生错误,主站会在将错误的计数器加8后,继续进行下一个节点的数据传输、如果其中一个从站出现连续数据发送错误,在不断的累计错误会移出,主站就可以判定从站断线,发送相应的警报信息,通知工作人员进行处理。

2.2.3 以太网收发测试

以太网数据帧是以一种字节增序的方式存储在TX buffer中,AXI Ethernet Lite MAC接受到的以太网数据帧同样会以增序的方式存储其中。数据发送的主要程序如下:

int main()

{

Initialize();

u32 i;

while(1)

{

for(i=0;i<1000;i++)

{

EmacRegisterWrite(0x07fc,0x01);

while(EmacRegisterRead(0x07fc)﹠(0x01)){}

}

}

return 0;

}

寄存器0x07FC是发送控制寄存器,上述程序中的EmacRegisterWrite(0x07fc,0x01)所表述的韩式是对0x07FC的第0位置1进行数据的发送,数据帧发送完成后,该位会自动置1。0x07FC在不同位的功能,见表1。

在程序中,对于MAC寄存器写入数据0a0a0a……即需要通过以太网发送的数据,可以对其进行任意赋值。这里将其赋值为1 038,包含了数据帧的头尾,实际数据长度为1 024.在程序中,对于目标地址的赋值为ff-ff-ff-ff-ff-ff-ff,源地址赋值00-00-5E-00-00-00。在FPGA中下载程序,结合wireshark抓包工具,就可以对发出的数据帧进行查看。

当PHY接收到一个数据帧后,会立即回发五帧数据,这里的寄存器0x17FC即为接收控制寄存器,其在不同位的功能如下:

0位即状态位,0-接收寄存器就绪,1-数据正在接收,接收完成自动清零;1-2位属于保留位,对接收的信息进行保留;3位为中断使能,0-禁止接收中断,1-允许接收中断;4-31位同样为保留位。

对程序进行编辑制定,同样结合wireshark抓包工具,可以看到接收一帧数据同时回发五帧数据的过程[3]。

3 结 语

综上所述,本文基于FPGA,针对工业实时以太网通信模块进行了设计和开发,利用以太网通信来取代传统PLC中的扩展总线CAN网,能够极大的提升PLC的通信速率,满足工业现场对于通信实时性的需求。经过测试,本文提出的方案具有良好的实践效果。

参考文献:

[1] 张伟.基于FPGA的通信接口模块设计与实现[J].电子科技,2012,25(7):

95-98.

[2] 王琦,徐潔,彭文才,等.基于FPGA的工业实时以太网通信模块设计[J].

水电自动化与大坝监测,2014,38(5):62-66.

安全通信系统的FPGA实现 篇12

信息安全的解决方案目前主要集中于采取单一的措施来保证信息的安全性, 针对各种攻击手段, 防范措施主要集中于信息加密技术、安全交换机技术、防火墙技术、认证技术, 入侵检测技术等, 这些技术从不同的方面对安全性提供了较好的保障, 但各有缺点和不足, 这将成为网络防护的软肋, 因此, 本文也尝试性地提出了一种集数据加密技术和访问控制策略于一体的信息安全解决方案。

加密算法的硬件实现具有高速率、高可靠性、高安全等特点, 因此, 加密算法在FPGA平台中实现是一种很好的硬件实现方案。本文在Xilinx公司的spartan-3e平台中构建一个嵌入式系统来实现安全网络通信。

系统设计

该系统主要针对信息传输过程中存在信息泄露、信息篡改、非法用户入侵等安全威胁而设计的一套基于FPGA平台的网络信息安全传输系统。该系统采用客户机/服务器模式, 因此, 系统主要包括两个部分:客户端和服务器端。

系统服务器端设计

服务器端采用Xilinx公司的Spartan-3e开发平台, 在该平台上构建基于Micr Blaze处理器和Xilkernel操作系统的嵌入式系统, 在该系统中通过定制AES加密IP、键盘IP、LCD IP、通用扩展接口控制IP并添加EDK中自带的网络控制器IP、串口IP等, 服务器端的系统结构框图如图1所示。当服务器端收到经过AES加密的请求IP数据包时, 在服务器端, 信息需要经过AES解密处理, 根据解密后信息分析并提取请求方的ID信息和IP信息, 客户端的ID信息是唯一的授权证号, 根据客户端的ID信息, 作出相应的处理。

客户端同样采用Xilinx公司的Spartan-3e开发平台, 但该系统中只需要定制AES加解密IP、键盘IP、LCD IP并添加EDK中自带的网络控制器IP, 客户端的系统结构框图如图2图所示。客户端作为整个系统的控制中心, 当需要采集信息时, 客户端经md5算法形成自己的唯一授权ID, 指令信息和ID信息经过AES加密后发送至服务器端, 当服务器端响应其请求后, 视其身份权限做出相应处理。

系统具体实现

系统服务器端实现

¥AES算法的硬件实现

AES算法是一种迭代分组密码, 采用的是代替/置换网络 (SP) 。AES加密算法的实现包括密钥扩展过程和加密过程。AES解密算法的实现包括密钥扩展过程和解密过程。解密过程与加密过程类似, 是加密过程的逆运算, AES加解密过程如图3所示。

AES加解密算法通过硬件描述语言来实现, 在该系统中采用VHDL语言编写代码。根据AES加解密算法的相似性, 很多电路模块可以共用, 其占用资源可以尽可能的少。在该系统中采用密钥长度和分组数据块长度都为128bits, 输入信息都为字符型的数据, 采用对字符加解密, 因此, 每一个字符都将对应其ASCII值输入。AES加解密实现主要有4个模块:控制模块、AES加解密运算实现模、SBOX模块、密钥操作模块, 实现的框图如图4所示。

·接口模块的实现

服务器端采用Spartan-3e平台扩展了PS2接口、16×2的LCD液晶显示, 3个6针的通用扩展接口, 这些接口方便了外设的连接和扩展。键盘在该系统中实现了单向通信, 扩展接口模块通过平台通用扩展接口J1、J2、J3与外接设备进行信息交互。Spartan-3e平台通过串口DTE和GSM模块进行通信, 将相应的信息通过短信的方式发送到指定手机中。

各个接口模块通过EDK添加自定义I P的方式添加到OPB总线中, 其中键盘、LCD、串口DTE使用中断。驱动程序在自动生成的驱动程序模板基础上完成各个模块的驱动程序。

·网络安全检测及报警实现

服务器端通过添加EDK中网络控制器IP核, 移植L w I P网络协议栈, 实现基于SOCKET的网络通信。服务器端收到客户端请求时, 对接收到的IP数据包进行解密, 对请求的IP数据包进行分析, 提取对应的ID信息和IP信息, 由于该ID信息是经过md5算法产生的, 因此该ID作为授权客户的唯一ID, 根据ID信息与授权的ID列表进行比较, 若为授权ID, 则根据客户请求把相应的信息加密处理后发送至客户端;若为非授权ID, 则说明该网络已存在非授权ID用户, 此网络已经存在不安全性, 则把提取的IP信息通过GSM网络发送至指定接收端手机, 达到网络的实时检测和报警功能。

·服务器端软件实现

服务器端构建基于Micro Blaze处理器和Xilkernel操作系统的嵌入式系统, 通过扩展PS2键盘, LCD液晶显示屏等设备, 实现具有良好的人机交互接口的系统。Xilkernel操作系统支持多线程操作, 通过配置一些参数就可以灵活应用。虽然其没有网络系统, 但可以通过移植L w I P协议栈就可以实现基于SOCKET的网络通信。

应用程序的设计主要包括系统的初始化、系统对客户端请求的处理、网络安全监测及报警等。系统的初始化主要针对外设的初始化, L C D初始化工作:允许中断函数microblaze_enable_interrupts () , 初始化函数LCD INIT_LCD () , PS2键盘初始化:初始化键盘函数i n i t_k b d () , 允许中断函数e n a b l e_i n t e r r u p t () , 系统调用xilkernel_main () 进入xilkernel, 创建socket_thread。初始化lwip, 并创建socket_app_thread。该线程主要是针对网络参数设定, 通过IP4_ADDR () 函数设定ip、网关、子网掩码。

当系统运行时, 液晶显示相关信息, 当出现等待键盘输入密钥时, 输入16个字符密钥, 同时对密钥进行密钥确认。系统调用socket () 函数创建socket, 调用listen () 函数开始监听。

一旦接收到用户请求时就创建socket_process_thread线程。在socket_process_thread线程中, 提取IP数据包的相关信息, 首先检查客户端发送的ID是否在授权ID列表之内, 如果ID无误, 将从无线模块接收到的数据进行AES加密, 发送加密过后的数据给客户端。如果ID有错误, 提取其收到IP数据包中的IP, 并启用GSM模块, 将提得的IP通过短信发送给指定接收端。

系统客户端实现

客户端的系统构建与服务器端相似, 系统的原理可以参考服务器端的系统设计。应用程序的设计也包括系统的初始化, 客户请求的处理及解密处理, 服务器端返回的信息处理。初始化外设, LCD初始化:允许中断函数microblaze_enable_interrupts () , 初始化LCD函数INIT_LCD () , PS2键盘初始化:初始化键盘函数init_kbd () , 允许中断函数e n a b l e_i n t e r r u p t () 。系统调用xilkernel_main () 进入xilkernel, 创建socket_thread。液晶显示等待键盘输入密钥, 输入密钥后需再次确认密钥, 确认成功后启动客户端。初始化L W I P, 并创建socket_app_thread。配置网络参数, 通过IP4_ADDR () 函数设定ip、网关、子网掩码。等待用户按键, 提出所要数据申请。调用socket () 函数创建socket, 连接server, 发送经过md5加密后的授权ID, 等待server响应。当接收到server返回的数据时, 调用AES解密模块进行解密。在LCD上显示数据, 并等待用户再次提出所要数据申请。

结论

该系统采用FPGA平台构建基于Microblaze软核和Xilkernel操作系统的嵌入式系统。本文主要对下述内容进行了论述和自主开发:

1.AES加解密算法的原理介绍及基于FPGA的硬件自主实现。

2.构建基于Microblaze软核和Xilkernel操作系统的嵌入式系统, 自定制外设接口IP。

3.网络安全检测的实现及通过GSM网络报警机制的设计与实现。

经过单元测试和整体评测, 各模块独立运行功能良好, 均达到系统设计要求。系统整体测试运行平稳, 可靠性强。完全可以达到实际应用的性能及技术要求。

参考文献

[1]杨强浩 .基于EDK的FPGA嵌入式系统开发[M].北京:机械工业出版社, 2008

[2]张焕国, 刘玉珍.密码学引论[M].武汉:武汉大学出版社, 2003

[3]赵峰, 马迪铭, 孙炜, 梁天冀.FPGA上的嵌入式系统设计实例[M].西安:西安电子科技大学出版社, 2008

[4]刑建平, 曾繁泰.VHDL程序设计教程[M].北京:清华大学出版社, 2005

[5]National Institute of Standards and Technology.Advanced ncryption standard[EB/ OL ].http://csrc.nist.gov/ publications/fips/ fips197/ fips2197.pdf

[6]邓江华, 胡志华, 牛冀平. AES加密算法的研究与实现[J]微型电脑应用,  2005,  21 (7) :15-19

【FPGA】推荐阅读:

上一篇:生态效应评价下一篇:输卵管不孕症论文

本站热搜

    相关推荐