element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Forum 基于 Xilinx IP 的开发流程研究
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 0 replies
  • Subscribers 577 subscribers
  • Views 1057 views
  • Users 0 members are here
  • ip核
  • xilinx
  • 实例化
Related

基于 Xilinx IP 的开发流程研究

Flush
Flush over 15 years ago

引言

20 世纪末,半导体技术获得了飞速发展,在其推动下,现代电子产品几乎渗透到社会的每一个角落:军事,航空,汽车,农业,工业,消费电子等等。很难想象,如果没有半导体,自然不会有ASIC,不会有 FPGA,不会有 MCU,在硬件基础上产生的软件似乎也不会获得高速发展,因而半导体技术是整个 IT 技术的基础,是现在社会文明进步的一个重要标志。
半导体技术一个主要内容为电子设计,其核心为EDA(Electronic Design Automation)技术。EDA 技术就是依赖功能强大的计算机,在 EDA 工具软件平台上,对以硬件描述语言HDL 为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直到实现既定的电子线路系统功能。EDA技术使得设计工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。
EDA技术在进入 21世纪后,得到了更大的发展,其中一个突出表现为基于EDA工具的 ASIC 设计标准单元已涵盖大规模电子系统及 IP 核模块。


1  IP和 FPGA的概念

1.1  IP的概念

IP(Intellectual Property)就是知识产权核或知识产权模块的意思。美国 Dataquest 咨询公司将半导体产业的 IP 定义为用于 ASIC 或FPGA/CPLD 中的预先设计好的电路功能模块。 在此不区分 ASIC 和 FPGA/CPLD,从本质上说 FPGA/CPLD 依然是 ASIC。IP 分为软 IP,固IP,和硬IP。软 IP 是用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。软 IP 通常是以硬件描述语言 HDL源文件的形式出现,应用开发过程与普通的HDL设计也十分相似,只是所需的开发软硬件环境比较昂贵。软 IP 的设计周期短,设计投入少。由于不涉及物理实现,为后续设计留下很大的发挥空间,增大了 IP 的灵活性和适应性。软 IP 的弱点是在一定程序上使后续工序无法适应整体设计,从而需要一定程度的软IP 修正,在性能上也不可能获得全面的优化。
固 IP 是完成了综合的功能块。它有较大的设计尝试,以网表文件的形式提交客户使用。如果客户与固 IP 使用同一个 IC 生产线单元库,IP 应用的成功率会高很多。
硬 IP 提供设计的最终产品:掩膜。随着设计深度的提高,后续工序所需要做的事情就越少,当然,灵活性也就越小。不同的客户可以根据自己的需要订购不同的 IP 产品。由于系统越来越复杂,PLD 的设计也更加庞大,这增加了市场对 IP 核的需求。FPGA/CPLD 厂家继续开发新的商品 IP,并且开始提供“硬件”IP,即将一些功能在出厂时就固化在芯片中。


1.2  IP和 FPGA

FPGA(Field Programmable Gate Array)是上世纪伟大的发明之一。其灵活性在很多场合上已逐步取代了 ASIC,由于集成电路工艺的提高,FPGA 的规模越来越大,处理能力越来越强,应用范围也越来越广。通信,图像处理,自动控制等很多场合其扮演着重要的角色, 现在FPGA 一般成为一个系统板的核心部件。 FPGA 的大规模应用是因为功能越来越强,而设计反而显得简单,一是因为工具的强大,另一是因为 FPGA 供应商提供了大量的 IP CORE 可供使用。
IP CORE一些是集成在 FPGA 中的,例如 FPGA 中的高速串口(RAPID I/O) ,有的则以设计原型提供,例如DDR2 控制器。因而 FPGA 与 IP 是紧密联系的。 一方面, FPGA 丰富了 IP CORE 的类型, 另一方面, IP CORE的完善又直接促进了 FPGA 在某些场合的使用。



2  使用 Xilinx IP Core的开发流程
Xilnx通过Core Generator系统来发布其免费的或商业的 IP (Intellectual Properties) Core。
下图为Xilinx一般的使用Xilinx Core Generator System生成集成 IP 核的流程。

image
Xilinx IP Core开发流程示意图


1)Core Generator:第一步需分析设计需求,确定设计需要的IP Core的类型及参数,从而启动 Core Generator 来生成自己想要的 IP Core。启动方法:运行命令 wincoregen(10以前的版本运行 coregen)可以启动 Xilinx Core Generator,再建立工程,选择设计所用的FPGA型号,生成类型(VHDL或Verilog)等。然后找到IP 列表中所需的IP 核,进行配置,最后生成即可。

2)HDL Editor:生成 VHDL 文件后将 VHO 文件中的说明进行模块例化,主要在例化模块中添加Component声明,还有在Architecture中例化生成的VHDL模块。

3)Instance:根据第2 步建立例化文件,并完成整个设计的RTL的工程。

4)Simulation:对设计的RTL进行功能仿真,在这过程进行前需将ISE 的IP 库编译到Modelsim的库中,这样才可调用,仿真完成后证明功能是正确的。

5)Synthesize:综合生成 Implementation 所需的.edf 文件,在综合后查看综合报告,可以看到IP Core调用的说明,一般会生成BlackBox(黑盒子) 。在综合后也可查看原理图等,通过跟RTL描述的比对从而对结构有更大的把握。

6)Implementation:在该步将进行Place and Route,这需要IP Core生成的Edn文件作为宏文件。需要约束文件 ucf,约束文件是对 FPGA Pin 脚的约束及时钟上的约束等。这些文件准备好后,将把设计布局布线成 Bit 二进制文件,该文件可直接下载到 FPGA 中,若 FPGA 与EEPROM相连,则可生成mcs等文件,直接下载到EEPROM中,这样不用每次上电后再编程一次FPGA,因为FPGA 是易失性的。


3  基于 Xilinx IP的开发流程举例

3.1 需求分析

定点平方根运算单元使用场合很多,在浮点开平方运算中,也将浮点首先转化为定点,再进行开平方运算。本设计需要进行一个定点开平方的模块,由于设计一个开平方模块较为复杂,调用相应的IP CORE 将省去大量的设计及验证工作。对设计效率有着明显的提高。 定点开平方运算需实现对一个范围为[0,2)的定点数进行开平方。根据输入使能信号进行开平方的运算,运算完成后输出值。 被开平方数共有48bit,其中最高位为整数位,其余47 位为小数位。整个数为非负数即unsigned。因为负数的平方根没有意义。

3.2 IP的生成

开始步骤省略,开平方根采用CORDIC 算法,其IP 位置如下所示:

image
image
image

  选择位宽,为48 位。

image

3.3 定点平方根运算单元的设计

由于开平方根所需时间较长,而且有时根据数据不同且所需时间不同,因而采用一个状态机来控制开方运算。采用非Pipeline式,即当一次计算完成后下次才可以开始。状态机分为下面几个状态,IDLE,REQ_SEND,READY_WAIT,SQRT_DONE。 IDLE:当有开平方要求时,则进入REQ_SEND 状态。REQ_SEND:该状态只保持一个周期。表示开方运算即将开始。在此状态,被开方数被缓存。


READY_WAIT:等待计算完成。
SQRT_DONE:READY等待完成,发出计算完成脉冲,用于外设采样结果。


3.4 功能的仿真

根据设计出的功能进行了一些数据的仿真。如下图所示:

image

从上图可以看出:
SQR0x000000000000) = 0
SQRT(0x400000000000) = 0x16A09E667F3C
SQRT(0x000000000001) = 0x0000008504F3
SQRT(0x800000000000) = 0x800000000000
SQRT(0x8FFFFFFFFFFF) = 0x87C38666FB6
上述小数点均在 MSB后。例如0x800000000000 = 1.0


4  结论

本文给出了了Xilinx FPGA 中基于IP 的开发的一般流程。首先进行需求分析,生成合适的IP,被设计例化,进行功能仿真。一般流程及大致步骤是一致的。在需求分析阶段,其实我们更需要去看一下需要的IP 的DATASHEET,每个IP 都有相应的DATASHEET, 他定义了端口的功能,定义了端口的时序。

引言

20 世纪末,半导体技术获得了飞速发展,在其推动下,现代电子产品几乎渗透到社会的每一个角落:军事,航空,汽车,农业,工业,消费电子等等。很难想象,如果没有半导体,自然不会有ASIC,不会有 FPGA,不会有 MCU,在硬件基础上产生的软件似乎也不会获得高速发展,因而半导体技术是整个 IT 技术的基础,是现在社会文明进步的一个重要标志。
半导体技术一个主要内容为电子设计,其核心为EDA(Electronic Design Automation)技术。EDA 技术就是依赖功能强大的计算机,在 EDA 工具软件平台上,对以硬件描述语言HDL 为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直到实现既定的电子线路系统功能。EDA技术使得设计工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现。
EDA技术在进入 21世纪后,得到了更大的发展,其中一个突出表现为基于EDA工具的 ASIC 设计标准单元已涵盖大规模电子系统及 IP 核模块。


1  IP和 FPGA的概念

1.1  IP的概念

IP(Intellectual Property)就是知识产权核或知识产权模块的意思。美国 Dataquest 咨询公司将半导体产业的 IP 定义为用于 ASIC 或FPGA/CPLD 中的预先设计好的电路功能模块。 在此不区分 ASIC 和 FPGA/CPLD,从本质上说 FPGA/CPLD 依然是 ASIC。IP 分为软 IP,固IP,和硬IP。软 IP 是用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。软 IP 通常是以硬件描述语言 HDL源文件的形式出现,应用开发过程与普通的HDL设计也十分相似,只是所需的开发软硬件环境比较昂贵。软 IP 的设计周期短,设计投入少。由于不涉及物理实现,为后续设计留下很大的发挥空间,增大了 IP 的灵活性和适应性。软 IP 的弱点是在一定程序上使后续工序无法适应整体设计,从而需要一定程度的软IP 修正,在性能上也不可能获得全面的优化。
固 IP 是完成了综合的功能块。它有较大的设计尝试,以网表文件的形式提交客户使用。如果客户与固 IP 使用同一个 IC 生产线单元库,IP 应用的成功率会高很多。
硬 IP 提供设计的最终产品:掩膜。随着设计深度的提高,后续工序所需要做的事情就越少,当然,灵活性也就越小。不同的客户可以根据自己的需要订购不同的 IP 产品。由于系统越来越复杂,PLD 的设计也更加庞大,这增加了市场对 IP 核的需求。FPGA/CPLD 厂家继续开发新的商品 IP,并且开始提供“硬件”IP,即将一些功能在出厂时就固化在芯片中。


1.2  IP和 FPGA

FPGA(Field Programmable Gate Array)是上世纪伟大的发明之一。其灵活性在很多场合上已逐步取代了 ASIC,由于集成电路工艺的提高,FPGA 的规模越来越大,处理能力越来越强,应用范围也越来越广。通信,图像处理,自动控制等很多场合其扮演着重要的角色, 现在FPGA 一般成为一个系统板的核心部件。 FPGA 的大规模应用是因为功能越来越强,而设计反而显得简单,一是因为工具的强大,另一是因为 FPGA 供应商提供了大量的 IP CORE 可供使用。
IP CORE一些是集成在 FPGA 中的,例如 FPGA 中的高速串口(RAPID I/O) ,有的则以设计原型提供,例如DDR2 控制器。因而 FPGA 与 IP 是紧密联系的。 一方面, FPGA 丰富了 IP CORE 的类型, 另一方面, IP CORE的完善又直接促进了 FPGA 在某些场合的使用。



2  使用 Xilinx IP Core的开发流程
Xilnx通过Core Generator系统来发布其免费的或商业的 IP (Intellectual Properties) Core。
下图为Xilinx一般的使用Xilinx Core Generator System生成集成 IP 核的流程。

image
Xilinx IP Core开发流程示意图


1)Core Generator:第一步需分析设计需求,确定设计需要的IP Core的类型及参数,从而启动 Core Generator 来生成自己想要的 IP Core。启动方法:运行命令 wincoregen(10以前的版本运行 coregen)可以启动 Xilinx Core Generator,再建立工程,选择设计所用的FPGA型号,生成类型(VHDL或Verilog)等。然后找到IP 列表中所需的IP 核,进行配置,最后生成即可。

2)HDL Editor:生成 VHDL 文件后将 VHO 文件中的说明进行模块例化,主要在例化模块中添加Component声明,还有在Architecture中例化生成的VHDL模块。

3)Instance:根据第2 步建立例化文件,并完成整个设计的RTL的工程。

4)Simulation:对设计的RTL进行功能仿真,在这过程进行前需将ISE 的IP 库编译到Modelsim的库中,这样才可调用,仿真完成后证明功能是正确的。

5)Synthesize:综合生成 Implementation 所需的.edf 文件,在综合后查看综合报告,可以看到IP Core调用的说明,一般会生成BlackBox(黑盒子) 。在综合后也可查看原理图等,通过跟RTL描述的比对从而对结构有更大的把握。

6)Implementation:在该步将进行Place and Route,这需要IP Core生成的Edn文件作为宏文件。需要约束文件 ucf,约束文件是对 FPGA Pin 脚的约束及时钟上的约束等。这些文件准备好后,将把设计布局布线成 Bit 二进制文件,该文件可直接下载到 FPGA 中,若 FPGA 与EEPROM相连,则可生成mcs等文件,直接下载到EEPROM中,这样不用每次上电后再编程一次FPGA,因为FPGA 是易失性的。


3  基于 Xilinx IP的开发流程举例

3.1 需求分析

定点平方根运算单元使用场合很多,在浮点开平方运算中,也将浮点首先转化为定点,再进行开平方运算。本设计需要进行一个定点开平方的模块,由于设计一个开平方模块较为复杂,调用相应的IP CORE 将省去大量的设计及验证工作。对设计效率有着明显的提高。 定点开平方运算需实现对一个范围为[0,2)的定点数进行开平方。根据输入使能信号进行开平方的运算,运算完成后输出值。 被开平方数共有48bit,其中最高位为整数位,其余47 位为小数位。整个数为非负数即unsigned。因为负数的平方根没有意义。

3.2 IP的生成

开始步骤省略,开平方根采用CORDIC 算法,其IP 位置如下所示:

image
image
image

  选择位宽,为48 位。

image

3.3 定点平方根运算单元的设计

由于开平方根所需时间较长,而且有时根据数据不同且所需时间不同,因而采用一个状态机来控制开方运算。采用非Pipeline式,即当一次计算完成后下次才可以开始。状态机分为下面几个状态,IDLE,REQ_SEND,READY_WAIT,SQRT_DONE。 IDLE:当有开平方要求时,则进入REQ_SEND 状态。REQ_SEND:该状态只保持一个周期。表示开方运算即将开始。在此状态,被开方数被缓存。


READY_WAIT:等待计算完成。
SQRT_DONE:READY等待完成,发出计算完成脉冲,用于外设采样结果。


3.4 功能的仿真

根据设计出的功能进行了一些数据的仿真。如下图所示:

image

从上图可以看出:
SQR0x000000000000) = 0
SQRT(0x400000000000) = 0x16A09E667F3C
SQRT(0x000000000001) = 0x0000008504F3
SQRT(0x800000000000) = 0x800000000000
SQRT(0x8FFFFFFFFFFF) = 0x87C38666FB6
上述小数点均在 MSB后。例如0x800000000000 = 1.0


4  结论

本文给出了了Xilinx FPGA 中基于IP 的开发的一般流程。首先进行需求分析,生成合适的IP,被设计例化,进行功能仿真。一般流程及大致步骤是一致的。在需求分析阶段,其实我们更需要去看一下需要的IP 的DATASHEET,每个IP 都有相应的DATASHEET, 他定义了端口的功能,定义了端口的时序。

  • Sign in to reply
  • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube