FPGA设计

2024-11-07

FPGA设计(共11篇)

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

关键词:病房呼叫;FPGA;层次设计

自改革开放以来,随着经济水平的不断提升,每个行业之间的竞争也越来越激烈,当然医疗行业也不列外,而且人们对医疗行业的服务要求、服务质量还要远远的高于其它行业,因为服务的优劣直接关系到他们的身体健康甚至生命安危,所以拥有一款优秀的病房呼叫系统能在很大程度上提高医院的医疗服务水平、质量。

在病房系统设计的整体当中,需要考虑到以下五点要求:第一点低成本,现有的智能化、人性化的高端病房呼叫系统对于普通医院来说成本太高,乡镇医院无法承担智能化的服务系统。第二点操作性,病人属于弱势群体,在呼叫系统操作方面要考虑到病人的实际情况,使其操作尽情的简单、方便。第三点及时性,对于病人而言,病情的发展情况需要医护人员的实时关注,呼叫系统必须起到呼叫快速及时作用。第四点信息可查性,医生能在办公室查看具体呼叫信息。第五点稳定性,考虑到该系统需要24小时不间断工作,要求系统故障要低、质量要可靠。而基于FPGA的病房呼叫系统就完美的能满足以上要求,其不仅运行速度越快,而且设计灵活、使用也十分方便,基本能用单片机实现的功能用FPGA也都能实现,在复杂的系统中也能完美实用。

1、设计要求

本设计要求基于FPGA,并且能够实现如下功能:病人通过按键,能在医生办公室显示并呼叫,并有时间优先级别;医生按键后复位;呼叫计时功能等。要求可以通过QUARTUS软件仿真验证,并且对仿真要有较高的精确度和可靠性。

2、设计原理

设计分为8路,所以设置8个输入信号,并且能够实现显示时间和声音提醒。八个呼叫输入端,设置一号优先等级为最高,然后依次降低。每一个信号对应一个LED灯,当信号输入时,相应的LED灯亮并且能够在显示器上能有所显示,蜂鸣器有声音提醒。当有一个信号输入时,蜂鸣器只会在输入的前5秒响,之后自动关闭,并且在3分钟内如果没有人应答,则会在3分钟之后发出警报声,持续5秒。当同时有多个信号输入时,系统将选择优先级别最高的输入信号的进行显示病房号时间与声音提醒,其它的只会显示其LED灯亮,不会显示出时间。同样5秒声音提醒之后3分钟内如无人应答,会再次发出警报。如在3分钟内有应答,则显示下一个病房的病房号和时间,同样当计时器的时间超过3分钟时也会报警,如在3分钟内有应答则显示下一个,以此类推。

.3设计方框图

设计方框图如下图1所示,当有多个信号输入时,锁存器对信号进行维持,再进入时间选择器、计时器对输入信号等待时间进行计时,而数据选择器则对信号进行优先选择,显示器对其优先程度高的信号显示,并且显示出时间,相应的蜂鸣器也会发出声音,由于计时器与蜂鸣器之间的位宽不同,则需要一个连接器来衔接。

2 电路图

小结

FPGA时钟设计 篇3

对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。在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设计 篇4

EDA技术

实训(论文)说明书

题 目: 交通灯控制电路的设计 院(系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师:

2013年月日

桂林电子科技大学实训说明书用纸

摘要

EDA工具对于电子设计人员来说极其重要,它可以在电子设计的各个阶段、层次进行计算机模拟验证,确保设计的准确性,可缩短设计周期,降低设计成本。交通灯可以实现十字路口红绿灯的自动控制。基于FPGA的交通灯设计系统具有可靠性强、实时快速擦写、运算速度高、故障率低、电路简单,且体积小的特点。本设计采用的是Altera公司CycloneII系列的EP2C5T144芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证交通灯的功能。关键词:交通灯、EDA、FPGA

桂林电子科技大学实训说明书用纸

Abstract EDA tools for electronic design personnel is very important, it can be in the electronic design of each stage, levels of computer simulation verification, to ensure the accuracy of the design, can shorten the design cycle, reduce design cost.The traffic light can realize intersection traffic light automatic control.Based on the FPGA of traffic light design system has the reliability, real-time fast operation speed is high, integration.it, low failure rate, circuit is simple, and the characteristics of small volume.This design USES is Altera company CycloneII series of EP2C5T144 chip as the core minimum system, it can be convenient to the actual traffic lights embedded application system, can complete the simple logic control, data acquisition, signal processing, mathematical calculations, etc;Use QuartusII software as a development platform, Using the top-down design idea of system modular design and comprehensive, and through the waveform simulation and hardware realization two ways to realize and verify the function of the traffic lights.Key words: traffic lights;EDA;FPGA

桂林电子科技大学实训说明书用纸

引言

“EDA技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。本设计实训是配合“EDA技术”课堂教学的一个重要的实践教学环节,在本课程设计指导书中列举了一些常用的小型设计系统,旨在起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。

1设计任务与要求

1.1本综合设计实训任务的内容和要求

① 用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。

② 能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。

③ 交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。④ 红、绿、黄灯显示的次序应符合实际交通道路控制的要求。系统概述及设计原理

2.1 系统的主要功能

交通灯控制电路是用于城市交通疏导的管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯。交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。设计一个十字路口交通控制器,方向分为东南西北四个方向。东西方向的红绿灯状态一样,南北方向的红绿灯状态一样。每个方向上,有四盏灯,分别是左转灯、红灯、绿灯和黄灯。左拐灯亮表示左转车辆可以通行;红灯亮表示左转和直行车辆禁行;绿灯亮表示直行车辆和右转的车辆可以通行;黄灯亮表示左转和直行的车辆即将禁行。

本论文简要介绍了FPGA器件的特点和设计意义,以QuartusII软件为开发平台,通过VHDL硬件描述语言以及原理图的输入方式来设计交通灯。交通灯控制器用于自动控制十字路口交通灯和计时器。

系统的主要功能模块方框图如图2-1所示

桂林电子科技大学实训说明书用纸

图2-1 系统主要功能模块

2.2交通灯的设计原理

交通灯控制电路的原理框图如图1.3所示。其中,clkgen是分频器,将EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1Hz(秒)时钟。Cnt10de(两个)是十进制减法计数器,产生道路东西和南北通行和禁止的倒计时时间。Contr是控制电路,控制整个系统的工作。控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。

图2-2 交通灯控制电路的原理图 系统各个模块的的设计与仿真

3.1 分频器模块的设计

由于采用的FPGA芯片的时钟频率是50MHz,需要将其分频为1Hz。该模块即是实现50M的分频,将频率变为1Hz的脉冲波,从而得到周期为1s的脉冲波。如果要真正的实现分频50M,在仿真结果图中是很难观察的,甚至是没有办法验证的,故在仿真过程中,将分频的倍数变小,变为20分频,这样从图中可容易的得到并验证对时钟输入信号的20分频,如图3-1所示,Reset是复位信号,CLK_50MHz是输入时钟频率,CLK_1Hz是

桂林电子科技大学实训说明书用纸

输出时钟频率,从图中可以看出,输出频率CLK_1Hz确实是输入时钟频率CLK_50MHz的20分频。

图3-1 分频器仿真图

3.2 状态控制模块的设计

状态控制模块根据输入CLK_1Hz的脉冲信号输出不同的STATUS值,下游的模块依据STATUS的值来确定红绿灯的状态;于此同时对倒计时信号赋初值。在状态控制模块仿真图中,输入信号CLK是一个频率为1Hz的时钟脉冲信号,RESET是复位信号;输出信号STATUS是状态转换信号,控制着下游交通信号灯显示模块的显示情况;LOAD_EW、LOAD_SN是东西、南北方向倒计时开始控制信号,DJS_EW、DJS_SN是东西、南北方向倒计时间信号。其仿真结果图如图3-2所示,由图可得,STATUS共有000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6)共6个状态,80s为红灯和左转灯的倒计时间,45s为绿灯的倒计时间,5s是黄灯的倒计时间,和状态转换表的状态一致。

图3-2 状态控制模块仿真图

3.3 交通灯信号灯显示模块的设计

交通信号灯显示模块根据输入的STATUS信号,输出对应的红绿黄灯信号,并直接驱动交通信号灯的亮灭。在交通灯信号灯显示模块程序仿真结果图中,STATUS为输入信号,而它依赖于状态控制模块产生的信号STATUS信号,一种六种状态,依次为000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6);EW_LRGY(8位)是东西方向上交通信号灯的状态,SN_LRGY(8位)是南北方向上交通信号灯的状态,依次为左转、红、绿、黄,对应着EW_LRGY、SN_LRGY的前四位,‘1’表示点亮,‘0’表示熄灭,后四位均为0,表示四个灯的阴极接负极。例如,在STATUS为001时,对应的是东西方向红灯亮,南北方向绿灯亮,仿真结果符合预期,完全正确。其仿真图如3-3所示:

图3-3 信号灯显示模块仿真图

桂林电子科技大学实训说明书用纸

3.4东西方向倒计时模块设计

东西方向倒计时模块用来接收状态控制模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。在该模块仿真图中,CLK为1Hz的输入信号,LOAD_EW为计数器的装载信号,当其为高电平时,将输入信号DJS_EW_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。其仿真结果如图3-4所示,由图可得,该模块首先将80秒的倒计时信号装载进去,并进行减一操作。

图3-4 东西方向倒计时仿真图

3.5 南北方向倒计时模块设计

南北方向倒计时模块用来接收状态控制模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。在该模块仿真图中,CLK为1Hz的输入信号,LOAD_SN为计数器的装载信号,当其为高电平时,将输入信号DJS_SN_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。其仿真结果如图3-5所示,由图可得,该模块将45秒的倒计时信号装载进去,并进行减一操作。

图3-5南北方向倒计时仿真图

3.6 译码模块设计

译码模块程序用来将输入的两位倒计时数值,分解成两个整形数值,以此供后面的译码显示模块译码显示。在译码程序TO_8421_BCD模块仿真图中,DJS_EW_OUT,DJS_SN_OUT为上一倒计时模块的输出信号,其范围在0~80,所有倒计时的范围都包含其内;DJS_EW_OUT_SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW为输出信号,其范围为0~9,代表了各个方向的倒计时的十位和个位,且数码管所有显示数字的范围均在其内。例如图中DJS_EW_OUT的值不断变化,相应的依次将其分解为十位(DJS_EW_OUT_SW)和个位(DJS_EW_OUT_GW),并依次递减,仿真结果符合预期,完全正确。仿真结果如图3-6所示:

桂林电子科技大学实训说明书用纸

图3-6 译码仿真结果图

3.7 译码显示模块设计

译码显示模块将上一模块译码模块输出的四个一位数译码成相对应的七位数码管段码,完成倒计时的译码和显示。在译码显示模块仿真图中,DJS_ EW_OUT_ SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW是四位的输入信号,也是上一模块TO_8421_BCD的输出信号,它们的范围为数字0~9,DJS_EW_ OUT_SW1,DJS_ EW_ OUT_GW1,DJS_SN_OUT_SW1,DJS_SN_OUT_GW1对应的是相应的七位数码管显示段码的值。图中输出信号的值随着输入信号的变化而相应的变化,例如DJS_EW_OUT_SW为7,DJS_EW_OUT_GW为5时,DJS_EW_OUT_SW1为00000111(a、b、c、d、e、f、g依次对应着1110000,最高位的0表示是数码管的类型是共阴的),表示数码管显示7,DJS_EW_OUT_GW1为01101101,表示数码管显示5。仿真完全正确,符合预期。其仿真结果如图3-7所示:

图3-7 译码显示模块仿真图

3.8 顶层文件模块设计

顶层设计采用VHDL语言描述方式实现,并在工程文件仿真过后通过工具菜单自动生成原理图文件,从而是设计原理更加清晰明朗。

在顶层设计VHDL描述中,共包含7个元件,分别是:

1、分频器模块,2、状态控制模块,3、交通信号灯显示模块,4、东西方向倒计时模块设计,5、南北方向倒计时模块设计,6、译码模块设计,7、译码显示模块设计。这7个模块经过程序设计、编译仿真,结果均能够达到设计要求。最后在顶层设计中,通过元件例化语句将这7个模块连接起来,生成顶层文件。在顶层设计中,RESET是复位信号,输入的时钟频率CLK是50MHz,经过分频50M的分频器后,变为频率为1Hz的时钟信号,周期为1s,用此时钟信号来控制整个系统的步调,与现实生活中交通灯的步调保持一致。EW_LRGY、SN_LRGY分别为东西和南北方向上交通信号灯的状态,EW_DJS_DISPLAY、SN_DJS_DISPLAY为东西

桂林电子科技大学实训说明书用纸

和南北方向红绿灯倒计时间。另外,所有的数码管和二极管均为共阴极显示。例如,在EW_LRGY为01000000(即东西方向红灯亮)、SN_LRGY为10000000(即南北方向左转灯亮)时,EW_DJS_DISPLAY的前八位表示倒计时的十位,后八位表示倒计时的个位;图中EW_DJS_DISPLAY的前八位都是00000111表示7,后八位01111101表示6,后八位01101101表示5,后八位01100110表示4;SN_DJS_DISPLAY的前八位是01001111表示3,后八位01011011表示2,后八位00000110表示1,后八位00111111表示0,以上表明红绿灯和倒计时时间显示符合预期。仿真结果如图3-8所示:

图3-8 顶层文件波形仿真图 实训心得体会

本次EDA技术实训的交通灯采用的是Altera公司CycloneII系列的EP2C5T144芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证交通灯的功能。为期两周的实训,我利用网络和图书馆的有效资源,搜集并下载了大量的关于用FPGA做交通灯设计的资料;然后精心阅读,在老师的指导督促下,并和周围同学进行有效学习和沟通,最终确定了自己的设计方案;最后按照既定的设计方案,通过努力有步骤的实现了交通灯的设计。

通过此次实训设计,让我加深了FPGA的理解,更加熟练了VHDL语言,同时,我深深体会到了通过FPGA设计数字电路的方便、简洁的特点,这让我相信未来数字电路的应用必将更加广泛。另外,我还体会到:从事开发设计工作,一定要保持个勤奋、踏实、严谨的工作态度,这样才能更好的完成工作。最后,我觉得在交通灯控制系统设计中还可以增加一些实用功能,如:

1、针对弱视或色盲人群进行声音提示;

2、在遇到突发状况时,可以将红绿灯改为紧急模式控制;

3、当有119、120等特种车辆通过时,系统可转为特种车放行,其他车辆禁行。

但是这次实训我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢靠,所掌握的编程语句还不够,很多程序都看不懂,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次实训,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!

桂林电子科技大学实训说明书用纸

还有光有知识是不行的,还得有能力、有技术,单干也是不行的,要适当寻求合作,那样才能更好实现我们的价值。在实训中及社会上,我们都要懂得虚心地向别人学习,即使你觉得自己很厉害,但总有一些东西你是不懂的,所以不懂要多向别人请教,这样才能更好地提高自己的水平和能力,全面发展自己。

桂林电子科技大学实训说明书用纸

谢 辞

在这短短的两周EDA实训中,在这期间同学们都在努力学习,认真做自己各自的实训。在此我要特别感谢各位指导老师们对我的指导,还有各位同学对我的帮助,尤其感谢老师在百忙之中抽出时间为我们讲解设计原理,同时,还要感谢和我一起努力的各位同学,在他们对我的帮助很我自己的努力下,我才能顺利地完成这次实训。

这次实训我受匪颇多,但这多是得益于老师无微不至的关心和细心的教导。在实训中,让我学到了不少知识,给了我一次复习学过的知识的机会,巩固了基础知识。也多亏同学们的无私的帮助和支持,在我无助的时候还是他们伸出他们的友爱之手,帮我渡过难关,在此我也真心的多谢他们默默的帮助。最后再次对老师们说声:谢谢!

桂林电子科技大学实训说明书用纸

参考文献

FPGA设计 篇5

[关键词]数字电子技术FPGA课程建设FPGA教学

FPGA(Field—Programmable Gate Array)技术是2l世纪电子工程设计的重要手段,也是电子工程技术人员必须掌握的一门技术。学习和掌握FPGA技术及工具,有利于增强IC人才对新器件应用,有利于增加新技术竞争力,有利于提高设计规模、质量和效益。另外,随着科学技术的发展,学生需要学习的学科及内容不断增加,而学习时间没变,对效率要求提高。由于学生人数不断增加,给高校实验室建设提出了一个不能回避的问题,用FPGA软件工具辅助教学可以缓解上述矛盾。应用FPGA软件工具进行电路实验教学还可以加快与世界技术发展的接轨,因为所用的工具一样,生产技术相同,因而产品也是国际标准,价值也就必然相同,从而提高我国产品的竞争力。

一、进行FPGA教学的必要性

1传统电子专业教学的历史和特点。在电子技术的早期发展过程中,电子产品大都是人工设计的,于是形成了一种宏观的、直截了当的教学方法。电路实验直接用元器件搭试、仪器设备观测,学生的实践能力得到加强。电子技术发展到今天,电路实验从简单到复杂,集成度越来越高,我们已经由单纯地接插件教学转变为设计芯片教学了。这又给传统的电子、微电子教学带来了问题——在做电路元件搭建或是版图设计时是否一定要用具体实物,是否可用软件直接模拟整个过程,从而加强可靠性?

2新技术应用对传统教学的挑战。利用FPGA3~具的电子仿真功能,对传统的电路实验项目进行模拟时,元器件是由计算机软件产生的模型,故实验过程中没有仪器和元器件损坏、接触不良等问题。只要学生清楚概念,实验就非常顺利。此外,学生还可以学习FPGA的开发、应用,以及ASIC的设计方法等。这样一来,在相应的时间内,学生可以学习更多的理论知识,进而获得创新意识。

目前,在电子学系列课程改革的探讨中,专家已提出“数字电路课程的教学内容的核心应由中、小规模电路转向以设计专用集成电路为代表的数字系统设计,这种转向体现在:课程的要求应是培养学生用功能模块构成数字系统的能力和用PLD等半定制方法设计专用集成电路的能力”。由此可见,开发FPGA等PLD基本知识和应用技术的教学是电子、微电子教学改革的迫切需要。例如,FPGA技术要求设计者现场自行完成系统的逻辑设计、综合、仿真和器件功能的物理实现,设计者不仅要对器件的可编程原理、逻辑资源有完整的了解,更需要掌握新的设计方法,要熟悉FPGA设计软件包和设计实现系统。因,此,整个设计过程对学生将是一次很全面的综合能力锻炼。

3FPGA教学的优势。FPGA即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的。因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失。因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

二、FPGA教学的具体实施

1在课堂教学中加强FPGA的基本知识和应用技术的教学内容。

(1)自编讲义。由于FPGA技术是近十多年来才发展起来的新型教学内容,其生产技术和应用技术的发展更是日新月异,而教材的编写和出版很难赶上其发展速度。目前,有关内容的合适教材很难见到。为此,任课教师收集了国内外有关FPGA的开发公司的教程和应用技术的资料,根据培养目标和教学要求自编讲义。例如,在讲义中编入了FPGA的结构及特点、内部结构原理及其开发应用方法简介。由于讲义的使用周期短,可以根据使用情况及时修订,也可以把FPGA技术发展的新知识及时补充到讲义中去,对教学起到了促进作用。

(2)改进课堂教学方法。由于课时的限制,不可能在课堂上讲解所有的内容,任课教师讨论了教学方法,把教学内容分为重点讲解、一般介绍和自学三部分。根据以培养应用型技术人才为主的培养目标,在课堂上重点讲解FPGA的编程方法和应用举例,简介FPGA的结构及特点、FPGA的发展概况及产品性能;FPGA的内部结构原理及其开发应用方法则作为学生自学的内容。

整个理论授课学时为32学时,安排在第6学期讲授,各部分授课学时分配如表l所示。从表中可以看到,课程内容重点安排在对于FPGA的应用设计上,所需基础课程有模拟电子技术、数字电子技术和半导体材料基础,上述课程在微电子类专业中都已具备。针对培养电子人才的需要,在授课内容上尽可能多地选择最新、最前沿的应用实例。当然,由于课程性质和培养目标的需要,仅有合理的理论教学内容是不够的,还需要设置合理的实践环节,才能达到培养学生设计能力的目标。

2在课程设计中进行FPGA应用技术的实践教学。首先,开发了多个规模和难易程度合适的应用FPGA进行设计的课程设计课题,例如,交通信号灯控制、抢答器、数字钟、密码锁等电路。对于PicoBlaze、MicroBlaze和PowerPC的设计,有针对性地编写了相应的指导书,指导对应的功能设计并配有代码。同时,对于常用的编程软件,在设计时都能给予具体指导。此外,设置了相应的实践教学环境。开发了数字电路课程设计系统装置,购置了微机和编程器以及有关器件,供学生进行对器件编程和安装调试电路的实践。

3在毕业设计和师生共同进行科研活动中开发FPGA应用技术教学。由于FPGA适用于较大的数字系统。对设计实现系统要求高,设计过程复杂,短时间内难以完成。只有在毕业设计时,师生共同进行的科研活动中开发FPGA应用技术教学才是较实际的做法。有相当一部分教师利用FPGA进行算法计算、硬件加速、数据采集等科研项目,体现了其速度快、容量大的特点,师生共同参与科

研,使业务能力和水平都得到提高,也使学校的教学及时与先进技术接轨,为学生走向社会打下了良好的基础。从日本福尔卡斯特公司的反馈信息得知,通过FPGA培训的学生上手快、动手能力强,非常受企业的欢迎。

三、丰富教学方法。提升教学手段

1采用现代教育技术与手段提高教学效率。制作本课程PowerPoint课件,采用多媒体教学;实现网上答疑、辅导;使用计算机辅助教学软件等,以便提高学生学习的兴趣,适时听取学生的反馈建议,不断提升教学手段。此外,还可让学生自己设计课题来参加竞赛的方式提升他们学习的乐趣和动力。目前,已有多个Xlinx、Ahera培训中心和实验中心,并积极投身由Xlinx和Altera公司举办的各项培训和竞赛。

2采用互动的教学方法。本课程部分内容有些抽象,可以采用实际接口模板和测试工具结合的例子来给学生教学,让学生理解不同算法的速度优势,并直观地通过模板看到效果。模板不足,就动手自己制作,现在已经实现一个实验室30套FPGA3q:发设备和配套模板。结合部分版图的设计和仿真,让学生充分理解FPGA课程的重要性和必要性,加深他们学习的热情和理解度。

四、加强实验教学建设

FPGA工具所具具备的仿真功能使电路实验获益匪浅,可以让学生更加直观而形象地理解、吸收、消化在课堂上所学到的理论知识。另外,还可以掌握FPGA软件的使用方法,增强与企业实用性的挂钩,加深学生对国际化生产标准的认识,与国际接轨。

目前,已经利用FPGA实现了“电子电工实验”、“模拟电路实验”、“数字电路实验”、“数字系统设计”等课程的配套实验。由FPGA把几个在过去是没法统一起来的实验给结合起来了。通过FPGA的灵活应用,学生能够感知到当今学习的理论基础知识的必要性。

五、理解创新性教学的重要性

FPGA本身是一个新颖、前沿的课程,学生在学习的同时本身就带着浓厚的好奇心和兴趣。为满足他们对新知识的渴望,我们在教学上应不断创新,让他们在学到知识的同时,体会知识的实用性,增强学习的成就感,以便激发他们进一步对知识探索的渴望和追求。

参考文献:

[1]李良荣,采用EDA实验教学改善电路教学环境[J],贵州大学学报(自然科学版),2002,19(3)。

民用飞机FPGA设计研究 篇6

关键词:民用飞机,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器件设计技术发展综述 篇7

1 FPGA概述

FPGA在目前的通信、遥控、计算机、图形等领域广泛的应用,已成为当今电子系统中最为关键、最为重要的组成部分。伴随着社会生产技术的发展,FPGA器件的设计越来越受到关注,已成为电子技术工作人员设计的核心课题之一。

1.1 FPGA概念

FPGA是现场可编程门列阵的简称,它的出现是给电子技术、数字系统设计带来了质的变化。它是由它是在PAL、GAL、CPLD等可编程器件在社会发展的基础上形成的一种新产物,作为专用集成电路领域的应用而产生的一种定制电路不足现象,这也克服了传统可编程器件门电路数有限的缺点,给集成电路技术的发展指明了新方向。

1.2 FPGA优点

现场可编程门阵列是一种可编程使用的信号处理器件,它可以通过用户来改变配置信息的功能的特点而受到社会各界人士的关注。FPGA与传统的数字电路系统相比较,它具备着可编程、集成程度高、运行速度快、可靠性好的优势,可以通过配置有关器件内部的逻辑功能和输入、输出端口来将其与原来的电路板连接起来,从而提高电路的性能,减少电路在运行中所产生的其他隐患,有效的提高工作的灵活性和效率。

它与ASIC相比较,具备着显著的优势,如开发周期短、产品上市速度快、市场适应能力强以及未来发展空间大的特点。在目前的社会发展中,一个产品在定型和投入市场之后,很难再对其进行改进和优化,而在FPGA的设计工作中,我们可以迅速的将其转变成为专用的芯片,从而进行生产。

2 FPGA的发展历程

2.1 FPGA的过去发展

FPGA最早出现于上个世纪七十年代,它自诞生以来以其通用型能力好、适应性强的优势得到了迅速的发展,同时也改变了传统器件的固定功能,从根本上改变了传统期间功能的研制和发展。在当前社会发展中,采用FPGA进行工作的时候,用户可以直接通过编程的方式来实现所需要的逻辑功能,而无需要依赖于传统的芯片功能要求。

FPGA由于本身具备着门阵列器件的高度集成、通用性强的特点,又具备着用户可编程灵活度高、在规模、密度上发展不受整体框架限制的优势在过去的几十年时间里得到了飞速发展,并且取得了一定的成绩。

2.2 FPGA的发展趋势

时至今日,FPGA市场逐步趋于规范,早已经改变了传统的那种繁杂无章的市场模式,今天的FPGA生产商家只剩下了为数不多的几家,虽然仍然不时出现新的生产厂家,但是由于其技术底蕴无法与这些老牌常见比较,大多都是昙花一现的现象,而无法得到大力发展。但是就那些老牌的厂家生产和研究分析,FPGA存在着集成程度高、结构灵活、结构可靠的优点而不断的进行研制,且随着半导体技术的完善和发展,这一技术的应用也越来越深入,相信在未来的发展中必然会迎来更进一步的发展。

3 FPGA设计技术

3.1 可编程技术探讨

在目前的FPGA设计工作中,我们常见的可编程技术主要包含有3种。

3.1.1 SRAM编程技术

SRAM编程技术被称之为最基本的变成技术,是通过对传输管进行控制和存储信息的读写来完成工作的。在设计的过程中,当传输管道接通的时候,SRAM单元内部的存储信息可以通过数据传输端口来进行读取或者改写;而当传输管道中断的时候,存储的信息也会随之静置,形成一个首尾相连的锁定状态。

3.1.2 Flash和E2PROM编程技术

Flash和E2PROM技术在应用的过程中存在着稳定性好、非易失性的特点,在设计的过程中及时关闭电源,其内部存数的信息也不会发生损坏和丢失。在设计工作中,如果采用Flash进行设计,那么其内部的存储单元会自动取消E2PROM隧道型存储单元选择关,通过采用一个信号一次性擦除的方式来存储信息,进而增加器件的继承性。这一技术与SBAM相比较,它结合了非易失性和可重复性的变成特点,因此具备着工作效率高、稳定性好的优势。

3.1.3 反熔丝变成技术

反熔丝变成技术在编程应用之前都是以开路状态存在的,通过编程使得反熔丝结构局部发生变化,在瞬间产生大量的热损耗现象,从而使得薄绝层的物质融化反应,进而形成永久性的通道。这种技术在应用的过程中可以说是集合了FPGA的非易失性和稳定性双重优势,使得信号传输路径的电阻和电容问题得到了缓解,并且具备着安全性高的优点。但是它在应用中缺陷和极为明显,主要表现在:无法重复变成、不能用于新产品开发;一次性进行编程且无法进行可靠检测;在不同工艺下其所造成的工作差异也相当大。

3.2 FPGA前沿设计技术与未来发展趋势

时至今日,在社会发展中半导体产品的应用越来越普遍,可谓是在各领域都已经趋于普及,在应用对于成本的控制都是以摩尔定律为基础进行的,而作为半导体器件中最为关键的一部分——可编程逻辑器的应用越来越普遍,它在每一次工艺升级中都出现了新的转变,在产品的功耗、频率以及密度方面都得到了重大转变。

受到深亚微米半导体工艺影响,传统的设计和生产工艺面临着越来越严峻的挑战,在工作中如果仍然采用传统的设计方法,在未来社会发展中必然无法满足时代要求,这就需要在工作中对其进行优化和改进。这一工作的开展是以高密度、高性能为目标开展的,对于片上的资源集成度进行了更深层次的优化,为FPGA的技术发展奠定了理论基础。

4 结论

为满足用户和市场日益变化的需求,FPGA不断在密度、功能、性能和功耗等方面演变;面对深亚微米工艺带来的各种不良影响,如漏电流、设计复杂度等,又迫切需要最切实际的解决方案。随着挑战的发展,可以预言,未来FPGA的设计技术必将继续呈现出巨大的创新与进步。

参考文献

[1]付花亮.封装对CMOSVLSI电性能的影响[J].微电子学.1993(2).

脉冲测距的FPGA设计和实现 篇8

在某些特殊的系统中, 系统的两端需要实时测量节点距离。一般使用GPS等辅助手段来完成测距功能, 使用辅助手段完成测距会增加系统冗于, 降低系统可靠性。基于上述需要, 提出在业务码流中插入脉冲, 通过计算收发脉冲时间间隔来测量距离的脉冲测距方法。

通过对脉冲测距方法的分析, 找出误码性能对测距的影响以及影响测距准确度和测距精度的关键环节, 并进行优化设计, 从而减小信道误码和系统时钟指标对测距的影响。

测距全部采用数字电路实现, 同时运用日益成熟并广泛应用的 (现场可编程逻辑逻辑器件) FPGA技术, 利用现在FPGA芯片的集成化程度高和处理速度快的特点来实现, 从而降低了测距的成本和复杂度。

1脉冲测距技术

脉冲测距可分为电脉冲测距和伪码扩频脉冲测距。

1.1电脉冲测距

无线电测距基于“无线电波在均匀媒介中以恒速直线传播”这一规律。

电脉冲测距的原理一般是采用发送单脉冲无线信号, 接收机接收目标反射回来脉冲计算出时间差T, 通过公式就换算出发射机与目的地之间的距离D

电脉冲测距一般用在雷达测距上, 电脉冲测距方法主要依赖于接收射脉冲信号, 同时对器件的要求非常高, 因此其实用性受限。

1.2伪码扩频脉冲测距

伪码扩频脉冲测距利用伪码自相关性。伪码扩频脉冲测距使用一个延时锁相环路, 使本地复制的跟踪伪码和接收到的伪码在码元上保持对齐, 再将跟踪伪码与本地的基准伪码进行互相关, 得到时间差。伪码脉冲测距一般用在卫星测距和GPS上。伪码脉冲测距要求高稳定时钟作为时钟基准。

2系统设计

上述2种方法都不太适合实时测量节点距离, 因此根据系统要求, 对脉冲测距进行了重新设计。根据测量节点间已有的业务通道, 通过添加测距脉冲, 就可以简单而有效地实现距离测量。脉冲测距具体的基本工作过程如图1所示。

图1中, 站点1和站点2将固定宽度的周期脉冲插入到发送的信号码流中, 双方收到脉冲后将发送脉冲和接收脉冲的时延用高倍时钟测量出来, 然后将测量出来的值也插入到发送的信号码流中返回到对端。

本端通过本地收发脉冲的时延值和对端收发脉冲的时延值比较计算出系统传输时间, 进而计算出节点距离。

由于站点1和站点2起始发送脉冲的时刻不一致, 所以最终计算节点距离时分为2种:

如图1 (a) , t2<t1时, Dt= (t2+T-t1) /2;

如图1 (b) , t2>t1时, Dt= (t2-t1) /2。

式中, Dt为传输时间;T为脉冲周期;t1为对端收发脉冲时间差;t2为本端收发脉冲时间差。

3系统实现

根据上述设计, 测距系统可以采用纯数字电路。通过选用合适的FPGA, 测距系统按以下步骤实现:发送端产生脉冲后, 将脉冲与业务一块送入复分接中, 复分接根据定义好的帧结构把脉冲复接成信道码流后送入到调制解调器, 然后通过收发信机发送出去。

接收端复分接将调制解调器送来的码流分接出脉冲送到时延计算模块计算本端收发脉冲延时, 然后将延时值返回到复分接发送到对端, 具体如图2所示。

系统设计要求测试两端距离0~300 km, 所以时延不会超过1 ms。将脉冲周期设置为100 ms就可以避免接收端在2次发送间隙接收2个脉冲。

每个脉冲用一个固定的32位伪随机码表示插入复分接, 这样接收端就能够匹配出脉冲, 然后进行时延计算。

时延计算的时钟是本地高稳定时钟经过FPGA的PLL备频得到的, 这样可以保证测量精度, 本系统采用10 MHz备频到80 MHz。

时延计算方法是用发送脉冲的上升延启动计数器, 然后使用接收到的脉冲上升延锁存计数器来完成。

FPGA选用ALTERA的EP2C35, 该芯片内置PLL, 容量大, 价格便宜。

4测试结果及性能分析

4.1测试结果

系统实现后, 采用AHDL语言在Windows下的QuartusII5.1开发环境下进行设计、仿真及综合。

使用Quartus II5.1软件通过FPGA的仿真进行了验证。在复分接与调制解调器的连接处增加不同的时延, 时延为1μs~1 ms, 然后观察脉冲测距输出的时延, 如图3所示。

结果显示测量的时延基本正确, 如表1所示。

系统联试, 通过无线信道架设好设备, 2个设备间距30 km左右。设备两端先使用GPS测试出两端设备的实际距离, 然后使用脉冲测距输出测试距离, 经过比较, 二者误差不大, 使用良好。

系统测量准确度主要是两端时钟稳定度有关。系统测量精度主要是时延计算的高钟频率决定。

4.2性能分析

4.2.1 误码性能

在一般情况下, 系统的无线信道比较良好。但是无线信道接收损耗会随接收天气、地形条件、相对距离等各种因素而变化, 在信道条件恶化时, 系统的误码率会随之增加, 甚至恶化到10-2的量极。因此对脉冲接收时需要进行容错处理, 以提高在高误码率下测距能力。

容错处理:在系统的发端使用一个较长的伪码代替脉冲插入到业务码流中, 在系统的收端使用同样的伪码进行匹配, 根据匹配结果来判断是否接收到脉冲时。容错就是匹配的结果权值不一定最大, 而是可以在一定的范围内波动。

通过仿真和实验测试了在不同bit容错情况下, 脉冲测距的抗误码能力。用Pz来表示脉冲测距准确度, 在不同容错bit下, 测距准确度与误码率之间的关系如表2所示。

由表2可以得出结论, 随着容错bit得增加, 测距准确度在更高的误码率下也能维持较高的水准。在使用5 bit容错时, 脉冲测距准确度在误码率为1.1×1-2时可以达到90%, 可以达到系统使用要求。

4.2.2 精度和准确度

测距的关键性能是测量精度和测量准确度, 提高测距的测量精度和准确度对系统有非常重要意义。脉冲测量精度和准确度与系统时钟密切相关。

(1) 时钟稳定度

系统脉冲产生依靠本地时钟, 所以两端脉冲产生依靠2个不同的频率源。2个不同频率源的稳定度是有差异的, 所以脉冲周期是有频差的, 从而测量准确度和时钟稳定度密切相关。

站1的脉冲周期为T1, 站2的脉冲周期为T1+Δt, 脉冲测试的误差时延为ΔDt= (T1+Δt-T1) /2=Δt/2, 两端系统的时钟为20 MHz, 稳定度为1×10-6, 在100 ms内Δt=100 ns, ΔDt=50 ns, Δd=15 m。

通过上述分析可以看出, 时钟稳定度和脉冲周期共同影响了测量准确度。因此在不提高系统时钟稳定度的情况下, 可以将脉冲周期提高到10 ms, Δd=1.5 m。由此可见测量准确度得到明显提高。

(2) 高钟频率

测距延时的计算是依靠本地高钟作为延时计数器的计数时钟, 同时本地高钟还需要对收发脉冲延进行取样。

发送脉冲与本地高钟同源, 所以不存在发送脉冲与本地高钟相位抖动, 但是接收脉冲受解调器影响。

由解调器送来的时钟和数据信号是有抖动的。当本地高钟采样接收的脉冲时, 会存在相位偏差和相位抖动, 从而产生测量误差。

设接收脉冲抖动和相位偏差为Δft, fH=80 MHz, ΔDt= (Δft/fH) 。在本系统中Δft经过测量约为20 ns, 则ΔDt=16 ns, Δd=4.8 m。由此可见, 本系统的测量精度还是满足系统需求的。

4.2.3 实时性

系统设计需要较高的测距实时性。实时性包括2个方面:节点实时移动和测距结果的实时输出。

(1) 节点实时移动

测距结果的变化依据节点实时移动的速度。本系统中, 节点移动速度不高, 因此不会造成测距结果的很大变化。因为一次测距时间是一个脉冲周期T, 而节点移动速度为v , T=10 ms, v<300 km/h。所以Δdv<50 m。如果进一步提高脉冲周期, 可以得到移动节点更加准确的距离。此外如果通过速度因子校正, 也可以进一步增加移动节点距离的精度。

(2) 结果实时输出

通过使用FPGA实现测距, 测距结果完全并行计算, 也就是说, 只要收到脉冲距离就计算出来了。

由此可见, 本系统的测量实时性是满足系统需求的。

5结束语

在给定测距范围内, 测距系统无非追求下列重要指标:抗误码性能、测距精度和实时性。

用FPGA来实现节点两端距离的测试, 可以充分利用FPGA的资源, 不仅实现了节点距离测量的设计要求, 而且处理时间非常快, 提高了测距的实时性, 而且增加设计的稳定性和可靠性。

此方法还有待进一步研究提高。当考虑增大高钟频率的值时, 可以满足更高的测量精度的要求, 同时也增加了实现难度也对电子器件的处理能力提出了更高的要求, 这些都将有待进一步研究实现。

摘要:系统节点的距离测量在某些特殊领域是非常必须的。提出利用业务信道来复接测距脉冲测量距离的一种可行方案。对该种脉冲测距的原理进行了阐述, 提出脉冲测距的具体实现方案。对脉冲测距的误码性能、测量准确度和测量精度进行了分析、比较, 并在工程实践中进行仿真和实验验证。实验结果证明, 该种脉冲测距方法完全可以实现, 性能可靠, 精度较高, 同时降低设备冗余, 提高了系统可靠性, 优化了系统设计。

关键词:FPGA,脉冲测距,误码,测量精度,测量准确度

参考文献

[1]岑岭.扩频综合测控系统中的组合测距技术研究[J].无线电通信技术, 1997, 23 (4) :6-11.

基于FPGA的指纹采集系统设计 篇9

1. 指纹采集系统总体设计

本系统采用Xilinx公司Spartan-3E系列XC3S500E型FPGA芯片作为控制核心, 其50万门的容量满足了全系统设计的需要。选用基于OV7120黑白CMOS图像传感器芯片的指纹传感器, 采集640×480的灰度指纹图像。

指纹采集系统的总体结构如图1所示。整个系统中的I2C控制模块、SRAM模块和VGA显示控制模块全部在FPGA芯片上设计实现。OV7120指纹传感器有16根信号线, 通过FPC16扁平电缆连接XC3S500E系统板上的FX2-100S-1.27DS连接器。同时, XC3S500E系统板也提供了标准VGA接口连接显示器。

2. 指纹采集系统控制流程设计

整个指纹采集系统的软件控制流程如下:主控FPGA芯片XC3S500E向指纹传感器发出开始工作命令;然后, 通过FPGA中的I2C总线控制模块向指纹传感器发出工作方式设置命令;在I2C控制模块完成对OV7120指纹传感器的工作方式设置后, 开始实时接收采集的指纹数据, 同时将采集到的一帧指纹数据写入在FPGA中设计的SRAM中;最后由VGA控制模块读取SRAM中的指纹数据经VGA端口送到显示器显示。

2.1 I2C总线控制模块设计

OV7120指纹传感器的工作方式、数据输出格式、扫描模式等参数的设置通过SCCB串行接口来实现的。而SCCB串行接口就是简化的I2C总线。在XC3S500E芯片上采用VHDL语言程序软件模拟方式, 实现对I2C总线接口控制, 完成对OV7120指纹传感器工作方式的设置。

根据I2C总线的通信协议, 将总线上的信号划分为空闲 (idle) 、启动 (start) 、写 (write) 、确认 (ack) 和停止 (stop) 五种工作状态。I2C控制模块在接受到FPGA发出的启动信号后, 进入start状态, 并根据写寄存器命令, 进入write状态。由于写操作都是以字节进行的, 对应8个周期的I2C总线写操作, 故设计一个8节拍的计数器, 使得write状态能维持8个SCL周期。在完成字节写操作之后, 将进入ack状态。进入ack状态, 标志一个写寄存器命令已经完成。I2C总线状态转换关系如图2所示。

I2C总线控制模块的状态转换部分源程序如下:

2.2 SRAM模块设计

在XC3S500E芯片内部设计SRAM模块进行数据的缓存, 相比采用外部SRAM芯片存储, 大大提高了数据读写速度。指纹传感器输出的一帧指纹图象数据大小约为300k, 相应设计的SRAM有19个地址引脚, 8根数据线, 有片选引脚CS、写有效引脚wr、读有效引脚rd。wr和rd分别与CS联合控制读写使能。

2.3 VGA显示控制模块设计

VGA显示控制模块设计总体结构如图3所示。图中二分频子模块把50mhz时钟频率分成25mhz并提供给其它子模块作为时钟;VGA时序控制子模块用于产生640X480显示范围, 并控制显示范围和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值;按照SRAM中数据存储地址读出显示数据, 并将R、G、B的值通过VGA接口传到CRT显示器。

VGA时序控制子模块部分的行列控制源程序如下:

3. 总结

这种基于FPGA芯片的指纹采集系统, 全部控制逻辑在单个FPGA芯片内部实现, 简化了外部电路设计;利用FPGA较高的工作频率使得指纹采集、传输、处理速度快, 在后期还可加入图像处理的算法进一步提高成像质量。全系统具有机构简单、体积小、可靠性高等优点, 具有较强的实用价值。

摘要:本文设计了一个基于Xilinx公司FPGA芯片XC3S500E的实用指纹采集系统。给出了指纹采集系统的总体结构和控制流程, 并详细描述了各个控制模块的工作原理以及设计实现方法。

关键词:指纹采集,FPGA,I2C总线

参考文献

[1]田耘, 徐文波.Xilinx FPGA开发实用教程[M].清华大学出版社, 2008:1-25.

[2]徐志军, 徐光辉.CPLD/FPGA的开发与应用[M].北京:电子工业出版社, 2002:30-70.

[3]李泽文.I2C总线控制及基于FPGA的实现[J].科技经济市场, 2006, 8:23-25.

[4]罗钧, 吴克松, 廖红华.基于NiosII的图像采集和显示的实现[J].电子技术应用, 2007, (2) :24~27.

FPGA设计 篇10

摘要:采用FPGA和DSP的结构实现实时图像采集处理系统,利用FPGA运行速度快、并行处理能力强的优势,采用“对数拉伸”算法对摄像头采集的数据进行前期预处理,达到图像增强,使得停车场类昏暗光线图像亮度分布不均匀的图像变得清晰;利用DsP具有较强处理复杂算法的优势,对FPGA传送过来的分块图像数据采用JPEG并行压缩算法进行图像的压缩,实验结果表明,图像增强模块能够明显改善图片质量,FPGA和DSP的结构能够很好的满足系统实时性的要求,

关键词:FPGA;DSP;图像采集;图像增强;图像压缩

DOI:10.15938/j.jhust.2016.04.008

中图分类号:TP391.41

文献标志码:A

文章编号:1007-2683(2016)04-0040-05

0引言

随着现代技术的发展和人们对图像采集处理质量需求的不断提升,对图像采集系统的性能和实时性提出了更高的要求,而对于数据量大、噪声干扰严重的图像数据,采用单个DsP芯片难以满足系统的性能和实时性的要求,用FPGA对图像进行预处理并实现对DSP的控制与管理,就可以很好的解决了这类问题,本系统针对停车场类昏暗光线图像,利用FPGA采用零有效视频信号提取算法提取出输入的有效的YUV视频数据,采用对数拉伸增强算法对图像进行预处理,预处理后的图像送入到DSP内采用并行JPEG压缩算法对数据进行压缩,仿真结果表明,图像增强模块使昏暗光线图像明显增强,数据压缩后使信息传输量减少20%,能很好地满足系统实时陛要求,

1.实时图像采集处理系统总体结构

系统总体框图如图1所示,系统分为9个模块,FPGA内包含的模块有视频解码模块,12C配置模块,视频帧存模块,去除隔行模块,视频增强模块,DSP接口模块,

DSP芯片内包含的模块有图像数据接口模块,图像数据缓存模块,图像压缩模块,通过CCD摄像头对视频进行采集,图像数据送入视频A/D转换芯

2.1视频解码模块设计

视频解码模块接受模数转换器ADV71781 B的YUV数字信号,这些数字信号中包含有场参考信号VS、行参考信号HS和奇偶场信号,要对YUV信号分别进行处理必须从图像数据中提取出有效的Y、u、V数据,摄像头采集的数据经过ADV7181B转片中,经12C总线对视频A/D转换芯片初始化,完成控制寄存器的配置,使其上电后进人工作模式;A/D转换芯片输出图像送人视频解码模块,视频解码模块接收A/D转换的视频流后对视频流进行解码,产生YUV数据;视频帧存储模块采用乒乓存储算法结构对YUV数据进行存储,使YUV图像数据转化成并行数据;为了增强视频效果,消除抖动闪烁去除隔行模块完成采集图像的奇场帧和偶场帧的合并,由于系统应用于地下车库监控系统,采集的图像数据光线以及灯光等原因图像画面不清晰,通过图像增强模块增强其对比度使图像清晰;增强后的图像数据通过DSP接口模块送入DSP芯片内进行压缩;DSP芯片压缩处理数据量很大,为避免数据丢失,图像数据通过DSP内部的接口模块和图像缓存模块缓存到SDRAM中;缓存一帧图像数据后,在DSP内也采用乒乓读写操作将数据送入压缩模块进行压缩,压缩后数据送回FPGA存储待发送。

2.FPGA内部模块设计

FPGA内部共有5个模块组成,顶层仿真设计电路如图2所示,输人为摄像头采集的复合信号DATA,时钟信号elk,输出为经过处理的视频有效信号和压缩后传回FPGA的YUV_DATA、YUV_DA-TA0信号,换后输出符合ITU—R656的信号DATA,行同步信号HS,帧同步信号VS,DATA的数据格式如图3所示,视频解码模块主要是提取出YUV数据,即将串行的数据转换为并行的YCrCb数据,

从上图可以看出AV信号都是以“FF0000”作为开始信号,但SAV的XY[4]=0,EAV的XY[4]

1.利用这点我们构造一个检测电路来实现YUV数据的并行输出,视频数据提取算法如图4所示,算法在实现上利用状态机完成对“FF0000'数据流以及SAV、EAV的识别,识别出有效数据后操作设置好的计数器cnt,算法中YUV数据为422格式,当cnt=0时输出Cb,cnt=1时输出Y,cnt=2时输出Cr,cnt=3输出Y,最终得到YUV有效的视频数据,

2.2视频帧存模块设计

视频解码模块输出的YUV信号需要三个缓存器进行缓存,通过软件自带的端口RAM的宏模块把每个缓存定义成双端口的深度均为1024,每个数据端口宽度为8位RAM缓存器,

2.3去除隔行模块设计

去除隔行模块采用帧内复制的方法,具体实现方法就是改变视频帧存模块中双端口RAM的读写时钟,使读时钟是写时钟频率的两倍,这样每行的数据读两遍,隔行数据就变成了逐行数据,

2.4图像增强模块设计

2.4.1图像增强算法

地下车库的灯光相对较暗,往来进出的车辆很多而且都开着大灯,在图像中显示结果为车灯的部分特别亮,使得周围的图像模糊不清,从灰度值方面来说,灰度值为O~125之间和200~255之间的像素特别集中,这时如果直接使用原图,则图中的一部分低灰度细节可能会丢失,由于原图的灰度动态灰度值分布范围不均匀,可能大于显示设备允许的范围,使得原图的一些灰度级显示不出来,为此将地下车库的采集图像做灰度映射,使原图的动态灰度值分布变得均匀,对数形式的压缩算法可以很好地解决此类问题,其原理为:

利用上式可将原来动态范围很大的s转换为动态范围较小的t,从图5中可以看出,大部分低灰度值的像素经过映射后其灰度值会集中到高亮度区段,总体来说就是同时增大图像的亮度,对于原来灰度值小的增亮的幅度大些,原灰度值大的增亮的幅度小些,从而达到图像亮度均匀,细节不模糊的效果,

2.4.2图像增强模块硬件结构设计

图像增强主要针对于亮度信号,也就是YUV信号中的Y路信号,去除隔行模块输出的是YUV三路并行的8位信号,因此在增强模块中还要保证u、V两路信号的同步,为此采用与之前模块同样的方式设置三个宽度为8位,深度为1024的FIFO,增加一个检测电路使三路信号完成并行转换到串行,使输出给接口控制模块的数据为单路8位宽的有效图像数据,从后面仿真对比图可以看出经过图像增强模块后图像对比度明显增强,从图6的a)图可以得出整个处理过程共需O,17 ms,而从b)图可以看出在MATLAB软件上完成的时间为1,7s,

2.5接口控制模块设计

FPGA内部的接口控制模块通过一个时钟锁相环来控制,FPGA和DSP的数据通信接口如图7所示,为了将处理后的视频数据并行处理,采用8个FIFO寄存器将视频数据进行分块,第9个FIFO用来接收DSP送回的压缩数据,视频数据采集、处理完成之后,FPGA通过FIF08的空信号(empty flag)查看8个FIFO中是否数据已满,如果未满,则将数据在写时钟的逻辑控制下,顺序写入到FIFO中;同时将FIF08中满信号连接到DSP的中断引脚,满信号置高,会触发DSP的DMA进程,将寄存器中数据读走,DSP压缩一帧数据完成后通过EMIF接口将数据送回FPGA。

3.DSP内部设计

3.1图像压缩并行算法

为了达到实时性的目的对预处理后的图像进行并行JPEG压缩处理,JPEG压缩编码主要由预处理、DCT变换、量化、Huffman编码等流程构成,如图8所示,

JPEG压缩编码时,需先将原始的二维图像分成8×8的数据块并行处理,然后将各数据块按从左到右,从上到下的顺序分别进行DCT变换、量化、“之”字型(Zig-Zag)扫描和Huffman编码,分别需要量化表和Huffman编码表的支持,将8×8数据块的DCT转换为16次一维8点DCT变换,只要提高一维DCT的速度就可以提高二维DCT的速度,利用DSP的专用指令乘累加运算来优化DCT算法,DCT变换和Huffman编码采用和传统算法一样的实现方法,用C语言和汇编语言在DSP内部实现,

与传统JPEG算法在DSP芯片上实现有所不同的是,在图像压缩模块中并没有进行对二维图像的分块处理,DSP压缩模块接受的是经过FPGA分块处理后的图像数据,DSP在经过缓存后可以直接对其进行后续的压缩处理,这样既提升了整个系统的处理速度,更好的满足实时性,又减少了DSP对存储器的调用,

3.2图像压缩结果

经过DSP芯片压缩后的数据通过与FPGA接口模块传送回FPGA,最终存储或显示出来,由图9(a)(b),可以明显看出比原图像更加清晰,由图9(c)可以看出压缩后尽管有一些失真,但还是保留了原图像的细节,达到了要求,

5.结论

基于FPGA的智能电梯系统设计 篇11

随着我国城市化建设步伐的加快, 高层建筑不断增多, 电梯的使用越来越普遍, 对电梯功能的要求也不断提高, 相应地其控制方式也在不断发生变化。专用集成电路ASIC设计技术和EDA技术的发展, 为数字系统设计带来了革命性的变化。CPLD/FPGA因其具有可在线编程、易于实现、开发周期短等优点, 已广泛应用于电子设计控制的各个方面。笔者以Xilinx公司的XC3S400作为主控芯片, 采用Verilog-HDL语言设计了一个8楼层单个载客箱的电梯控制系统。该设计采用模块化设计方式, 便于修改和升级。

1 智能电梯系统的控制要求和策略

1.1 主要控制要求

设计一个8层电梯控制系统, 主要要求如下: (1) 能记忆电梯内外所有请求信号, 包括内指令和外部召唤指令, 并按照电梯运行规则依次响应, 每个信号保留至执行后消除。同时可以实现多个指示灯显示电梯内指令和外部指令。 (2) 到达请求楼层后, 该层的指示灯亮, 经过延时, 电梯门自动打开, 开门指示灯亮。延时等待后, 电梯门自动关闭 (关门指示灯灭) , 电梯继续运行。电梯空闲时, 停在1层。 (3) 选择方向功能, 电梯接收到指令后能够自动判别运行方向, 并发出指令。 (4) 接近平层时能够提前减速和启动加速功能。

1.2 电梯调度控制策略

依据楼层和电梯轿厢运行趋势判断控制电梯运行的调度策略, 遵循方向优先的原则。当电梯上升时, 只响应比电梯所在位置高的上楼请求信号, 由下到上逐个执行, 直到最后一个上楼请求执行完毕, 如更高层有请求下楼信号, 则直接上升到有下楼请求的最高层, 然后进入下楼状态。电梯在运行过程中不断检测内外呼梯信号, 按照集选控制功能, 优先响应同方向的呼梯信号, 然后再响应反向的呼梯信号。到达相应的楼层后, 停车、开门、熄灭相应的呼梯灯, 同时按照匀速、加速、减速方式运行。电梯下降时, 与上升状态规则相反。

2 智能电梯FPGA控制器的硬件设计与接口

2.1 FPGA控制器总体介绍

电梯控制系统主要由FPGA控制器、各输入信号模块和输出驱动模块组成。FPGA控制模块的输入信号有电梯内外请求信号、楼层到达信号、重启超载报警等信号, 其输出信号分别驱动显示电路、电梯开关门电路、电机驱动电路及其他电路 (如报警) 等。FPGA控制模块是本设计的核心。系统总体框图如图1所示。

2.2 主要模块的接口定义和功能

2.2.1 输入信号定义

(1) 电梯入口处或者电梯内部的上/下楼请求寄存器call[5:0]。call[5]:有无动作标识位;call[4]:请求动作标识位, 0表示下楼, 1表示上楼;call[3:0]:请求的楼层。

(2) 电梯到达楼层检测寄存器coming[5:0]。coming[5]:有无动作标识位;coming[4]:电梯运行动作标识位, 0表示下楼, 1表示上楼;coming[3:0]:到达的楼层。

(3) 楼层加速/减速运行寄存器speed[5:0]。speed[5]:有无动作标识位;speed[4]:电梯运行动作标识位, 0表示减速, 1表示加速;speed[3:0]:当前的楼层。主要是将加/减速点信号通知系统的任务电梯, 在运行到目标楼层检测点时要进入加/减速状态。

(4) 电梯入口处或者电梯内部开关门按钮信号寄存器button[2:0]。button[2]:开关门有无动作标识位;button[1]:为1表示电梯入口处开关门动作标识, 为0表示电梯内部开关门动作标识;button[0]:为1表示开门, 为0表示关门。

2.2.2 输出信号定义

(1) 电梯开关门电机输出寄存器motor_door[5:0]。motor_door[5]:有无动作标识位;motor_door[4]:请求动作标识位, 0表示关门, 1表示开门;motor_door[3:0]:当前的楼层。

(2) 电梯升降电机输出寄存器motor_up_down[6:0]。motor_up_down[6]:有无动作标识位;motor_up_down[5:4]:动作标识位, 00表示停车, 01表示加速, 10表示减速, 11表示匀速;motor_door[3:0]:当前的楼层。

3 智能电梯FPGA控制器的软件设计与实现

3.1 主程序设计

控制模块是整个设计的核心部分, 根据电梯的运行规律, 本设计采用状态机的方法来实现。控制模块有2个进程: (1) 控制输入, 无论电梯在什么状态均能接收用户的输入请求, 由1 MHz的时钟作为触发沿, 不断地检测用户是否有输入请求; (2) 控制电梯的升、降、停留、空闲, 该程序由1 Hz的时钟触发。该程序表示电梯的2个状态:一是位置状态, 二是运行状态。另外在程序的编写过程中, 还增设了以下功能:初开机时的自动定位功能, 无呼叫信号的超时返回基站功能。

3.2 主要模块的设计与实现

本设计的开发软件使用Altera公司的QuartusⅡ集成开发环境, 采用自上而下的设计方法, 模块设计与Verilog-HDL描述相结合的输入方式, 便于程序的维护与升级。

3.2.1 电梯运行状态控制模块

该模块是系统设计的核心控制模块。笔者把电梯运行划分为4个状态, 分别为上升、下降、停止、空闲。控制系统的状态转换如图2所示。

FPGA控制器上电或者强行制动 (man_reset=1) 时, 电梯进入空闲状态, 空闲状态下, 电梯内部/外部上升或者下降请求指示灯寄存器call_light[5]为0;电梯内部/外部运行当前楼层显示寄存器show_build[5]为0;电梯内部/外部开关门显示寄存器show_door[5]为0;电梯开关门电机输出寄存器motor_door[5]为0;电梯升降电机输出寄存器motor_up_down[6]为0。

3.2.2 升降电机控制模块

本模块用来驱动电梯升降状态, 主要信号有:触发使能信号speed[5], 上升触发和下降触发speed[4], 触发方向为电机的转动方向。速度设置寄存器speed[5:4]的4种状态分别为停车、加速、减速和匀速。速度设置寄存器经电机状态控制器产生4个相位的电机驱动信号, 驱动电机转动。

3.2.3 开关门电机控制模块

本模块用来控制电梯门状态, 主要信号为电梯入口处或者电梯内部开关门按钮信号寄存器button[2:0], 在该寄存器中, button[0]为1表示开门, 开关门电机正转;button[0]为0表示关门, 开关门电机反转。速度设置寄存器经电机状态控制器产生4个相位的电机驱动信号, 驱动电机转动。开关门过程中, 需要经过延时, 电梯门闭合, 延时的长短可以实时调节。

4 电梯控制系统仿真

本设计顶层采用模块化设计, 各模块采用Verilog-HDL硬件描述语言和自顶向下的设计方式, 对所设计程序进行分析、编译、综合、布线后产生的电路进行功能仿真和时序仿真, 均可获得符合设计要求的逻辑和时序要求。

图3为电梯FPGA控制系统的功能仿真波形。当5楼有请求下到2楼的命令时, 电梯从当前的第一层开始加速上升, 在加速1.5 s后, 电梯匀速上升, 匀速上升的时间为3 s, 然后进入减速上升, 直至电梯出现在5楼门口, 电梯减速上升时间为1.5 s。电梯经过开关门状态后, 进入下降状态。电梯先经过1.5 s的加速下降后, 进入匀速下降, 这个过程时间为1.5 s, 然后进入减速下降, 直至电梯出现在2楼门口, 电梯减速下降时间为1.5 s。

当电梯到达5楼时, 开门延时等待1 s, 轿箱电机正转, 开门, 人员进电梯轿箱, 这个过程为7 s, 然后轿箱电机反转, 关门, 关门延时1 s, 电梯进入下降状态。当电梯下降到2楼时, 电梯的工作原理相同, 在此不再赘述。图4为电梯开关门时序仿真。

5 结语

本文基于FPGA的数字电路设计和软件实现, 主要介绍了系统的结构框架设计工作, 完成了本次设计的输入接口信号和输出接口信号, 详细介绍了程序设计思路、主要程序设计以及实现各种功能的程序设计, 并完成了相应的时序仿真, 为后期安装调试工作打好了基础。

摘要:从智能电梯系统的控制要求和策略入手, 详细介绍了基于FPGA的8层电梯控制系统的设计。该设计采用模块化编程, 控制灵活方便, 具有很强的适应性和实用性。

关键词:电梯控制,FPGA,硬件描述语言,控制模块

参考文献

[1]李斌, 吴李刚.电梯位置检测系统的自动控制与分析[J].经营管理者, 2010 (19)

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

[3]戴一平.可编程序控制器技术[M].北京:机械工业出版社, 2002

上一篇:混凝土绿色化下一篇:构建英语教学模式