【小技巧】FPGA开发流程普通流程

        可编程逻辑器件的设计是指利用EDA开发软件和编程工具对器件进行开发的过程。高密度复杂可编程逻辑器件(如FPGA)的设计流程如图1所示。它包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及下载等七个步骤。

图1 可编程逻辑器件设计流程

·设计准备

       在系统设计之前,首先要进行方案论证、系统设计和器件选择等准备工作。设计人员根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。一般采用自上而下的设计方法,也可采用传统的自下而上的设计方法。

·设计输入

       设计人员将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程成为设计输入。设计输入通常有以下几种形式。原理图输入方式:原理图输入方式是一种最直接的设计描述方式,要设计什么,就从软件系统提供的元件库中调出来,以需要的连接方式画出原理图。这样比较符合人们的设计习惯。这种方式要求设计人员有丰富的电路知识及对FPGA的功能和结构比较熟悉。其主要优点是容易实现仿真,便于信号的观察和电路的调整以及模块的组合;缺点是效率低,特别是产品有所改动,需要选用另外一个公司的FPGA器件时,就需要重新输入原理图,而采用硬件描述语言输入方式就不存在这个问题。

硬件描述语言输入方式:硬件描述语言是用文本方式描述设计,它分为普通硬件描述语言和行为描述语言。普通硬件描述语言有ABEL、CUR和LFM等,它们支持逻辑方程、真值表、状态机等逻辑表达方式,主要用于简单PLD的设计输入。行为描述语言是目前常用的高层硬件描述语言,主要有VHDL和Verilog HDL两个IEEE标准。其突出优点有:语言与工艺的无关性,可以使设计人员在系统设计、逻辑验证阶段便于确立方案的可行性;语言的公开可利用性,便于实现大规模系统的设计;具有很强的逻辑描述和仿真功能,而且输入效率高,在不同的设计输入库之间的转换非常方便,用不着对底层的电路和PLD结构有非常的了解和熟悉。

波形输入方式:波形输入方式主要是用来建立和编辑波形设计文件,以及输入仿真向量和功能测试向量。波形设计输入是适用于时序逻辑和有重复性的逻辑函数。系统软件可以根据用户定义的输入/输出波形自动生成逻辑关系。波形编辑功能还有允许设计人员对波形进行拷贝、剪切、粘贴、重复与伸展,从而可以用内部节点、触发器和状态机建立设计文件,并将波形进行组合,显示各种进制的状态值,也可以将一组波形重叠到另一组波形上,对两组仿真结果进行对比。

·功能仿真

功能仿真也叫前仿真。用户所设计的电路必须在编译之前进行逻辑功能验证,此时的仿真没有加入延时信息,对于初步的功能检测非常方便。仿真前,要先利用波形编辑器和硬件描述语言等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察到各个节点的信号变化。如果发现错误,则返回设计输入中修改逻辑设计。

·设计处理

设计处理是器件设计中的核心环节。在设计处理过程中,便以软件将对设计输入文件进行逻辑化简、综合优化和适配,最后产生加载用的编程文件。

语法检查和设计规则检查:设计输入完成后,首先进行语法检查,如原理图中有无漏连接的信号线,信号有无双重来源,文本输入文件中关键字有无输错等各种语法错误,并及时列出错误信息报告供设计人员修改。然后进行设计规则检验,检查总的设计有无超出器件资源或规定的限制,并将编译报告列出,指明违反规则情况以供设计人员纠正。

逻辑优化和综合:化简所有的逻辑方程或用户自建的宏模块,使设计所占用的资源最少。综合的目的是将多个模块化设计文件合并为一个网表文件,并使层次设计平面化。

适配和分割:确立优化以后的逻辑能否与器件中的宏单元和I/0单元适配,然后将设计分割为多个便于识别的逻辑小块形式映射到器件相应的宏单元中。如果整个设计较大,不能装入一片器件中时,可以将整个设计划分为多块,并装入同一系列的多片器件中去。分割可全自动、部分或全部由用户控制,目的是使器件数目最少,器件之间通信的引脚数目最少。

布局布线:布局和布线工作是在上面的设计工作完成后由软件自动完成的,它以最优的

方式对逻辑元件布局,并准确的实现元件间的互联。布线以后软件自动生成报告,提供有关设计中各部分资源的使用情况等信息。

·时序仿真

时序仿真又称为后仿真或门级仿真。由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不用的影响,因此在设计处理之后,对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竞争冒险等是非常必要的。实际上这个也是与实际器件工作情况基本相同的仿真。

·器件编程测试

时序仿真完成后,软件就可以产生供器件编程(下载)使用的数据文件。对EPLD/CPLD来说,是产生熔丝图文件,即JED文件,对于FPGA来说,是产生位流数据文件,然后将编程数据放到对应的具体可编程器件中去。器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。基于SRAM结构工艺的FPGA可以由EPROM配置芯片或其它存储体进行配置。在线可编程(ISP)的PLD器件不需要专门的编程器,只需要一根下载电缆就可以了。器件在编程完毕后,可以用编译是产生的文件对器件进行校验、加密等工作,对于支持JTAG技术,具有边界扫描测试BST能力和在线编程能力的器件来说,测试起来将更加方便。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值