当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于FPGA PCI的并行计算平台实

本文介绍的基于PCI总线的FPGA计算平台的系统实现:通过在PC机上插入扩展PCI卡,对算法进行针对并行运算的设计,提升普通PC机对大计算量数字信号的处理速度。本设计采用5片FPGA芯片及相关周边芯片设计实现这一并行高速计算平台,并在该平台上完成了DES和MD5等算法的加密和解密。文中通过基于MD5算法设计的加密方案(仿Yahoo邮箱的密码校验)进行暴力破解,验证了本系统的可行性以及速度快、性价比高等显著优点。

  1 系统结构

  系统利用普通PC机或工控机进行控制、数据流下载和结果采集,大计算量的数字运算利用IP-CORE技术并行地在FPGA中进行。将数字信号处理的算法设计为一个单元模块,并根据芯片的结构对布局和布线进行优化,该单元模块重复利用的技术被称为IP-CORE技术。在本系统中利用TP-CORE的可重复利用性,通过仲裁逻辑调度数据的分配,从而实现算法的并行处理。

  1.1 硬件结构

  系统中采用5片ALTERA公司的STRATIX EP1Sl0FPGA芯片,其中4片作为数字信号处理算法CORE的载体(文中称为算法FPGA);l片作为连接PC机与运算CORE的桥接芯片、加载程序、并行总线裁决和中断判决等仲裁逻辑的载体。与PCI总线的接口使用PLX公司的PCI9054芯片。系统硬件结构如图l所示。

  

1.2 逻辑结构

 

  BRIDGE FPGA的程序采用自顶向下的设计方法,其逻辑结构如图2所示,按功能可分为以下部分:顶层模块PCI_FPGA_PARALLEL;与PCI9054的接口模块PCI接口;数据缓存及仲裁部分:数据缓存模块FIFO、寄存器模块regpart、数据回传模块deserial、内部总线仲裁和流控模块CORE接口等。

  PCI接口部分实现与PCI9054芯片的接口时序,使得复用的地址和数据分开,产生地址空间的选取及使能信号,便于后端处理。

  仲裁逻辑部分:

  (1)实现对地址空间内数据缓冲区、各种寄存器的读写,以及根据配置寄存器的内容对算法CORE和桥FPGA做相应的操作(配置、启动、停止、复位等)。

  (2)利用缓冲区及FIF0的队列长度信号wrusedw、rdusedw、full和empty进行数据流控制。数据由PC机下载时首先进入缓冲区,每一块算法CORE均对应一个数据下行FIFO,由FIFO当前状态来判定是否从缓冲区中取数。具体逻辑模型如图3所示。

  (3)返回结果引入本地中断机制,当有正确结果产生、或无正确结果但密钥匹配完成、或系统异常状态,均产生中断信号并填写中断类型寄存器,经级联后产生向PC机的中断。中断判决如图4所示。

  

[!--empirenews.page--]

 

  (4)实现与算法core间的协议逻辑,控制多种数据流的下行以及结果的返回。

  2 MD5算法简介

  MD5(Message Digest 5)报文摘要算法是一种应用广泛的提取数字指纹的算法标准,它由MIT的密码学专家、RSA算法的发明人之一Rivest设计发明。MD5算法结构如图5所示。

  对任意长度的信息输入,MD5都将产生一个长度为128bit的输出,这一输出可以被看作是原输入报文的“报文摘要值(Message Digest)”。

  MD5的特点:

  (1)两条不同的报文具有相同的报文摘要值的可能性极小。

  (2)对于预先给定的报文摘要值,要想寻找到一条报文,使得其报文摘要值与某个给定的报文摘要值相等,在计算上是不可能的。

  (3)根据报文的摘要值,要想推测出原来的报文是极端困难的。

  MD5算法被广泛地应用于网络数据完整性检查以及各种数据加密技术中。

  Yahoo邮箱密码算法是基于两次MD5算法。共算法步骤如下:

  stepl:对一个密码字段(例如:dfeag~hyt),用MD5算法加密:h=md5 (dfertgrhyt)。

  step2:将step1所得结果转换为32Bytes的hex值:hex(h)。

  step3:将step2所得结果与一个yahoo提供的chanllenge值简单级联:string=hex(h)+chanUenge

  step4:将step3所得结果再进行一次MD5运算:hash=md5(strmg)。

  由于未得到实际Yaheo邮箱密码生成参数(例如challenge码),本文构造了相近算法以测试本系统性能。

  测试方案如下:

  提供一个已知的challenge值与相应的Hash值,从提供的字典中提取合适密码,由生成算法计算出对应的Hash值与提供的Hash值匹配来校验匹配的密码。密钥字典的产生有两种方式:人为构造字典及系统自加、穷举产生密钥。

   3 实测性能分析

 

  实际系统中算法CORE运算时钟为20MHz,64bit数据宽度输入;采用多级流水线设计及运算速度就是系统运行时钟的速度。除运算初期流水线建立过程和运算结束时流水线完成过程,运算速度均可视为20MHz;实际制成的系统为四片算法FPGA并行运算,实际吞吐量为4×20M×16bit=1.28Gb;经Ahem Quartus 4.1综合,实际仲裁逻辑占用3725个逻辑单元。综合频率最高为156.2MHz,单算法逻辑占用7718个逻辑单元,综合频率最高为37.10MHz。

  典型的普通PC机定点运算需要多个指令周期,包括取指令、取数据、计算、保存数据等指令周期,而一个x86指令周期又由多个CPU时钟周期组成,大大降低了实际运算速度。由于单个CORE以20MHz时钟流水线运算,相当于一台普通PC机的运算速度,因此多个CORE并行运算即可达到多台PC机并行运算的效率。

  采取密钥字典自FPGA穷举产生方式,可发挥算法CORE的最大效能。若采取密钥字典自PC机下载方式,则实际速率由PCI总线最高速率决定。但由于字典可以人为选取,大大降低了密钥选取的盲目性。本系统接入普通PC机上32bit、32MHz的PCI总线,单算法CORE连续运算(64bit×20MHz)即可满足PCI总线全速下载。若使用64bit、66MHz的PCI总线或PCI EXPRESS,将进一步提高系统的实际吞吐量。

  本文提出了一种基于FPGA的适合大规模数字信号处理的并行处理结构,利用CORE的可置换性,可以针对不同应用的数字运算设计不同的CORE,系统通用性的特点非常显著。一台普通PC机中可以同时插入数块PCI卡。每块卡上的任意一块算法FPGA都可提供相当或超过一台普通PC机的运算速度。而每增加一块算法FPGA,在效率提高一倍的前提下,功耗增加不超过10W,而体积几乎不变,成本也只是比普通PC机增加了五分之一。因此.本文提出的并行结构具有极高的性价比。

  如果将PCI总线接口模块集成到FPGA中以取代PCI9054芯片,将进一步降低硬件成本,减少硬件设计的复杂度;因实际运算速度与算法的并行度和优化有密切的关系,因此,设计不同应用的CORE以及相关算法的优化是下一步要进行的重要工作。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭