关于FPGA设计的安全性考量的设计技术问答

时间:2011-09-03

  Q1:FPGA设计与DSP设计相比,的不同之处在哪里?

  A1:这个问题要从多个角度看。它们都用于某个功能的硬件电路实现,但是它们的侧重点有所不同。这里涵盖的说一下。

  一、内部资源

  DSP主要是算法处理,内部资源主要是乘法器,加法器之类的资源,有SPI接口,UART接口,接受一定的指令集,内部的资源基本上都是现成的,需要客户的需要而重新配置,方便于客户的使用,但是相对来讲其功能是有局限性的,所以主要用于某些特定的领域。DSP也有内嵌的锁相环,计数器,Baudrate发生器,有的DSP也有ADC模拟接口。

  FPGA侧重于设计具有某个功能的硬件电路,内部资源是VersaTiles之类的微小单元,FPGA的内部单元初始在编程前都是使用的是HDL语言实现硬件电路的设计描述。FPGA内部的连线资源将这些功能模块的内部和模块之间的信号连接起来,构成较大的模块。FPGA可以内部实现加法器,ALU,累加器,乘法器,SRAM,FIFO,DDRcontroller,PWM,HDLC,FFT,DMA等等数字电路的设计,也就说我们要用其实现一个具有一定用途或者可以通用的硬件功能的一个或是多个模块的组合,这些模块的各个细节都要用HDL硬件描述语言来设计实现。目前的FPGA都可以直接内嵌诸如ARM7(英国ARM公司设计的主流嵌入式处理器) ,Cortex-M1(ARM Cortex-M1处理器由ARM与Actel合作开发的32位处理器,是专门针对FPGA应用而设计的ARM处理器),Core8051(Actel公司推出8位高性能嵌入式微控制器)等微处理器,也有的FPGA厂商将一些硬件模块直接做到FPGA中,这些是FPGA内部的硬核。传统的FPGA都是实现纯数字电路的,业界只有Actel的FPGA实现了数模混合的PSC单芯片技术,真正的提升和扩大了FPGA的应用功能和领域。另外多数FPGA都有PLL,DLL之类的锁相环,Slew可调,Actel的还内建了RTC,OSC,Powermanager之类的硬件单元,甚至Actel的Fusion系列还内建了600kbps的12bit的ADC以及MOSFETDriver之类模拟接口,内部有UserFlashMemeory,FlashROM等资源可以实现真正的PSC,Bootloader之类的功能。

  二、使用的编程语言

  DSP使用C语言,汇编语言来进行编程。FPGA主要使用HDL硬件描述语言,包括VHDL,Verilog,还有数模混合的描述语言Verilog-AMS等。

  VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

  Verilog HDL的特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些。但Verilog HDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意。

  三、功能角度

  DSP内部有很多现成的硬件接口和模块以及控制器,只是需要软件编程设定即可应用,可以实现接口控制,PWM控制,SPI接口,UART接口等功能。但是由于受指令集的时钟周期的限制,DSP不能处理频率太高的信号,比如说上Gbps的信号,还有LVDS之类的信号就很难处理了。所以相应的应用领域会有所限制。但是不同的领域客户的设计方案不同,所考虑的侧重点一般不同,有些领域设计者也是喜欢运用DSP来进行设计的,诸如算法的实现,协议处理等等过程,如果换作FPGA来处理那就得不偿失。

  FPGA普遍用于实现数字电路模块的设计,基本上能实现所有的数字电路,包括传统的数字功能模块,以及满足客户特定需求的数字处理模块。所有的数字功能电路的实现,高速信号的处理,控制领域的信号处理,桥转换协议的实现,Actel的Fusion还能用于温度的检测,电流/电压检测,MOSFETdriver,电源管理等。电其独特的Flash工艺技术可以依靠电池供电工作,和掉电实时保存数据,超低功耗,多种工作模式,尤其IGLOO芯片的功能在Sleepmode下功耗只有5uW。这样的功耗用于手机,GPS之类的移动手持设备中能发挥更大的功能应用。另外用FPGA实现ASIC的前期的设计验证,FPGA实现DSP的功能,实现CPU的功能,MCU的功能,内存控制器,用于工业的PWM,SVPWM,Clarke,Park的正逆变换的实现,VGA控制,数据的编解码,解复用,高达上Gbps的信号的处理,协议的转换实现等等功能,都是DSP难以胜任的。

  Q2:在做开放设计之前,怎样才能选择满足开发需求同时又经济适用的FPGA呢?

  A2:在一般情况下,先针对具体的设计,列出您想要实现的功能,并且根据这些功能大致画个功能框图,然后根据其功能和系统的要求大致推算出你需要的部件:

  时钟及速度需求--的时钟速率是多少?需要多少个PLL?速度等级?全局时钟有多少?

  IO需求--可用IO数量、差分信号对、IO的电平格式等;

  电压源的需求--系统提供哪些电压?核电压需要多少?IO电压源需要哪些?

  内部RAM的需求——需要双口RAM吗?需要FIFO吗?大小是多少?

  逻辑资源和IPcore的需求——需要哪些IP核,大致占用多少资源?

  封装--需要何种封装形式?用BGA封装?VQ封装?TQ封装?PLCC?还是其它的封装形式?

  扩展和升级的要求——是否考虑为IO和逻辑资源留有一些余量,以便以后的扩展?是否可以方便的升级?

  价格的因素——在满足需求的前提下尽可能的便宜。

  基本考虑这些方面。不过也可以选定一个FPGA的型号,直接在开发软件中对你的程序进行编译、综合、布局布线等,这样才能清楚地可以看到你的设计所占用的资源,然后再选择合适的型号,避免浪费。

  Q3:对于FPGA初学者来说,应该从哪些方面入手进行学习?

  A3:首先,初学者要充分理解FPGA的原理,原理是一切设计的基础,然后再设计一些小型的代码,在验证设计的基础之上真正的理解设计硬件的思想,这样的话你必然要学会如何结合FPGA现有的资源,特点,性能等方面知识,如此才能专心于设计代码上。至于说芯片的设计安全也是必然考虑并且理解的,不然一个静电上去就毁掉芯片了,这样的产品是不能用的,那你的老板肯定要感到震惊了。设计的精髓在于设计的思路,包括代码的设计技巧,如何使代码简洁高效,系统要求的功能模块的实现方法(运用更少的资源来实现通用的功能),多个模块如何配合的代码设计,后期的验证,调试,到板级的设计调试等。要做好FPGA设计不同于DSP,软件设计。初学者现在不必也不能理解FPGA设计的精髓所在。精髓的东西即使现在讲给初学者,他一样是茫然的,因为这是需要很强的功力才能理解和体会到的。需要时间需要付出,需要努力吃苦钻研技术,更需要成长的路上有良师的指导和同行朋友的交流,需要长期的积累的。到那时你就是了。

  Q4:作为FPGA的初学者,是一开始就要深入了解芯片安全设计的精髓或者是原理之类的,还是应该把重点放在如何设计代码上?

  A4:首先了解FPGA的原理和代码设计,两者缺一不可。只有了解FPGA的结构,才能设计出更好的代码;编写代码能实现自己的设计意图,终能熟练地使用FPGA。

  Q5:系统中运放很多都是闭环应用,但是仿真的时候经常要开环仿真,可是开环仿真不能真实模拟其实际工作环境,那么我该如何仿真呢?

  A5:这里是指的FPGA仿真,如果是运放的话要定好芯片之前就看懂了芯片手册了,然后在实际的环境中测试,在软件环境里仿真的话需要特别的工具。我们就FPGA的仿真来谈谈此问题。实际的环境中的仿真是板级的,但是也必须有信号源和反馈信号,否则这个系统是无法工作的,闭环是不会响应外界的信号而发挥其功能的。按照这个思想我们就要额外设计一个或多个模或者模拟出一个信号源和接收反馈信号的模块,这里的模拟不是模拟信号的意思而是我们从设计的角度来看就是写一些Testbench(一种验证手段),设计FPGA的会使用VHDL或者Verilog,做前端的RTL代码后我们其后可以借用Modelsim输入满足设计需要的信号源查看波形,对于自己关注的节点或是信号标注以特别的名字,这样我们就能实现所谓的闭环仿真了。

  Q6:用Actel的方案进行加密后,会增加成本吗?

  A6:用ACTEL方案加密,不会增加成本。因为ACTEL的FPGA是单芯片的,所有的编程信息已经编程在FPGA内部,有了加密选项该信息不会被读出。

  Q7:关于半定制或者全定制ASIC方面,是否也需要同样安全设计?

  A7:对于全定制的ASIC,一般来说保密性不如半定制的ASIC。对于半定制的ASIC,如果定制信息很容易被读出的话,安全性就很差了;如果采用单芯片的半定制ASIC,而且定制信息不被读出,安全性就会很高。

  Q8:Actel的设计安全保护和计算机网络安全DES和RSA算法有什么联系或者是互补的关联?

  A8:

  DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。

  RSA算法是个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。

  ACTEL的设计安全是对设计的内容进行保密,阻止非法读取和写入;而计算机网络中的DES和RSA是对网络上流动的数据进行加密/解密。两者关系不大。



  
上一篇:MIPS-Based SoC 上的Android平台受SMP 支持
下一篇:什么是单片机,单片机开发有哪些技巧巧

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料