急求FPGA中IP核的具体讲解和分析,谢谢!!!
GA)和复杂可编程逻辑器件(CPLD)都是ASIC的一种。它的优点是,厂商提供的FPGA或CPLD芯片可以由设计工程师现场编程,完成ASIC的最终设计,无需昂贵的NRE费用。目前FPGA的规模已经达到百万门,如Xilinx-p.htm " target = " _ blank " title = " Xilinx source and PDF materials " > Xilinx公司的V irtex系列完全可以实现片上系统,其设计方法将逐渐转向基于核的设计。
1内核的分类和特征
核心是一个预定义的、经过验证的复杂功能模块,可以集成到系统设计中。基于核心的设计的主要特点是可以重用现有的设计模块,缩短设计时间,降低设计风险。期望通过高水平的集成来提高整个系统的性能。FPGA设计中有三种核心,如表1所示:
表1内核分类和特征
中坚分子
(硬核)
具有布局和布线的预定义模块不能修改设计,时序性能必须由指定的实现技术来保证。
固体核
(firm core) HDL源代码,可以修改一些与实现技术相关的网表功能,使用指定的实现技术可以控制关键路径时序。
软件
(软核)
行为级或RTL级HDL源代码可以修改和设计,无论具体实现技术如何,都不保证时序性能,具体由用户决定。
硬核针对特定的实现技术进行了优化。它具有不可改变的结构和布局,并且可以用作具有稳定定时性能的库组件。但是,硬核无法根据设计要求修改和调整时序。Solid core由HDL源代码和实现技术相关的网表组成,用户可以根据规定增减一些功能。实芯的关键路径时序是固定的,但其实现技术是不可改变的,即不同厂商的FPGA实芯不能互换使用。软核是可以综合的硬件描述语言(HDL)的源代码。与实现技术无关,可以根据用户的需求进行修改,因此在使用上具有最大的灵活性。但软核的关键路径时序性能并不能保证,最终性能主要取决于用户采用的集成、布局和实现技术。
在FPGA设计中,由于不同厂商的具体实现技术差异很大,与硬件实现技术完全无关的软核的性能受到很大限制,而硬核缺乏使用的灵活性,所以更多的是作为软硬核的折中来使用。以上是代表性核心的分类。在实际使用中,某个功能的核心往往以各种形式出现,由用户根据需要选择。软核不仅有HDL源代码,还包括用于功能测试的行为模型和测试向量,用于指导综合约束文件。
双核FPGA设计方法简介
在基于内核的设计中,一个完整的设计主要由两部分组成,一是内核,比如图1中的MCU和RAM,二是用户自定义的逻辑电路。根据系统设计的要求,将这些功能模块连接在一起,完成芯片的设计。各核心或功能块的连接目前没有统一的标准,由于设计不同,一般要满足一定的时序要求。作为基于核心设计的第一步,需要选择一个合适的核心,主要从核心功能、性能可靠性、实现技术等方面进行选择。
图1基于内核的设计芯片原理图
核心必须首先有一个功能描述文件来解释核心的功能和时序要求,如图2所示。其次,必须包括设计实现和设计验证两个文件,即不仅要有实现核心功能的RTL源代码或网表,还要有验证核心实现后逻辑功能正确性的仿真模型和测试向量。硬核的实现比较简单,类似于PCB设计中IC芯片的使用,而软核的使用比较复杂,实现后的性能与用户的具体实现方式有关。为了保证软核的性能,软核提供商一般会提供全面的描述文件来指导软核的合成,而实核的使用则介于上述两者之间。
图2核心由设计实现和设计验证组成。许多核心提供商为核心提供评估环境、演示和开发板,方便用户了解核心的功能和使用。
基于内核的FPGA设计流程如图3所示。设计输入部分包括:
1)用户设计的逻辑、软核、实核或硬核仿真模型的输入,
2)功能模拟,
3)逻辑综合。仿真模型是一个行为模型,只用于功能仿真,没有综合。
图3基于内核的FPGA设计流程
设计的输入通常是HDL语言,如VHDL、V erilog等。在输入设计和仿真模型后,可以进行功能仿真,当功能仿真完成后,就可以对逻辑电路进行综合。
用户逻辑和软核的合成要受到合理的时序约束,以满足设计要求,约束可以由一个合成脚本给出。设计输入完成后,进入设计实现阶段,其中网表和设计约束文件固定,用户合成的网表和设计约束文件一起输入到FPGA布局布线工具,完成FPGA的最终实现,生成时序文件进行时序仿真和功能验证。最后进入设计验证阶段,通过静态时序分析确定设计是否满足性能要求,并将功能仿真结果与时序仿真结果进行比较,验证设计时序和功能是否正确。如果设计的性能不能满足要求,就要找出影响性能的关键路径,返回延迟信息,修改约束文件,重新综合和布局设计,如此反复多次,直到满足设计要求。如果经过多次重复仍不能满足设计要求,则需要修改设计或采用其他实现技术。
3软核的设计和使用
由于FPGA硬件技术的快速发展,硬件资源越来越丰富,速度越来越快,弥补了软核资源利用率低、工作速度慢的缺点,软核在基于核的设计中发挥着越来越重要的作用。它的主要优点是功能与实现技术无关,使用灵活。这样,我们就可以在不同的实现技术下轻松使用软核。比如用X LINX FPGA实现的软核,在不改变设计的情况下,可以用ACTEL FPGA实现,大大提高了设计和实现的灵活性。然而,软核的性能仍然受到实现技术的很大影响,如何保证软核的预期性能是目前亟待解决的难题。近年来,国外提出了与实现技术无关的可合成软核的思想,希望通过对编译软核HDL源代码的一些限制,结合合成工具的时序约束功能,达到部分控制软核性能的目的。比如软核只能采用严格的同步逻辑设计,没有反馈环、多时钟路径、三态逻辑、锁存器和异步置位复位触发器,只用D触发器和逻辑门。这样在综合工具的帮助下,可以有效控制软核关键路径的延迟,预测软核在具体实现技术中的性能。当然,这是以牺牲部分FPGA逻辑资源为代价的,但随着硅工艺的发展,硬件资源已经非常丰富,浪费一些硬件资源来换取设计灵活性的提高是值得的,就像在PC软件设计中,很少有人太过关注程序占用的存储空间一样。
根据上述软核设计思想,作者采用全同步逻辑设计,只用D触发器和逻辑门实现了一个兼容PIC16C57的8位微控制器的设计。顶层结构如图4所示,采用哈佛结构。取指令和执行指令并行工作,除了少数程序跳转指令,其他都是单时钟周期指令。程序存储器ROM一般放在FPGA外部,如果ROM中的指令很少,也可以放在FPGA中。数据总线采用多路复用器的形式,以适应不同的实现技术。指令寄存器和特殊功能寄存器,包括IO端口寄存器、状态寄存器、程序计数器等。,都是由D触发器组成的。通用寄存器采用FPGA的RAM模块,指令译码和算术逻辑单元由组合逻辑门组成。