FPGA技术的一些基本概念(综合、BlackBox)(转)
原文:http://blog.sina.com.cn/s/blog_6254a8ca0100i0wr.html
原文也是转的,哈哈,大家多转转,转转更健康。删除了一些Xilinx的东西
前言
综合是将我们的设计转化为FPGA可以读懂的配置文件的第一个步骤。本文努力从0基础开始向大家说明综合的基本知识和高级技巧。
话说所有的功能都有它应用的环境。在了解某个按钮选项有某个功能的时候,我们更应该了解应该在什么时候什么情况使用它。
所以我以这种问答的形式,向大家展示综合过程中可能遇到的方方面面的问题以及解决的方法。
-----------基础知识--------------
1. 什么是综合?
综合就是把HDL语言/原理图转换为综合网表的过程。
2. 什么是综合网表?
综合网表就是综合的结果啦。
综合网表的业界标准是EDIF格式。文件后缀通常为.edn, .edf, .edif。EDIF网表是可以用文本编辑器打开的文本文件。
Xilinx自家的综合结果是NGC网表。NGC网表是二进制的文件,不能用文本编辑器打开观察。
3. 综合网表中包含一些什么内容?
综合网表中除了包含从HDL语言中infer(推断)出的与门、非门等组合逻辑和寄存器等时序逻辑之外,还包含FPGA特有的各种原语(Primitive)比如LUT,BRAM,DSP48(Xilinx),甚至PowerPC(Xilinx),PCIe等硬核模块,以及这些模块的属性和约束信息。
4. 综合工具有哪些?
Xilinx自家的XST,Synopsys(收购了Synplicity)的Synplify,Mentor Graphic的Precision 都是使用最广泛的综合工具。
5. 这些综合工具有什么特点呢?
XST - 随ISE自带,免费,对新器件支持快。但是对loop循环支持不如Synpilfy。综合结果的时序有时没有Synplify好。
Synplify - 应用最广泛。综合结果的时序性能和占用面积都不错,大器件的综合时间也相比XST有优势。但是非常贵,对新器件支持比XST晚一拍。
Precison - 没用过,不发表评论。
--------复制寄存器相关事项--------
(Altera的参考,当需要产生大量的寄存器时)
1. 什么时候要复制寄存器?
- Fanout太多导致延时增大(在FPGA中不是最主要的因素)
- Fanout太分散相距太远导致布局布线后出现过长的走线
2. 复制寄存器有哪些方法?
- 手动作HDL Coding,并且为了防止这些寄存器再次被综合器优化合并,需要将“Equivalant Register Removal”设置为False。
- 让工具自动复制。为需要复制的寄存器添加Max_Fanout约束,并关闭Resource Sharing和Equivalent Register Removal。注意当Max_Fanout约束设置得过小时,可能不会生效。
--------使用BlackBox注意事项------------
1. 什么是BlackBox
- 一个大的设计中可以用到一系列网表文件作为输入的一部分而并不全部使用HDL文件。
当综合这个大设计时综合器不需要知道这个网表文件是怎样实现的,而只需要知道它的输入输出接口就可以了。这样的网表就称为黑盒子,因为我们不需要看到它的内部情况。
- 通常付费IP都会以BlackBox的形式
2. 如何使用BlackBox
- BlackBox网表可以是EDIF或NGC文件。
- 每个BlackBox网表都需要有一个与之相对应的HDL文件来注明它的端口。这个HDL只说明BlackBox的端口信息,而不提供具体实现信息。这个只提供端口信息的HDL文件称为Wrapper。Wrapper的名字通常需要与BlackBox网表的名字相同。
- 在ISE工程中使用BlackBox时只需要将它的Wrapper添加到工程中。然后像普通的模块一样在其上层声明和例化就可以使用。
- BlackBox网表文件可以放在ISE工程目录中,也可以放在其他任意文件夹内。当不放在ISE工程目录时,需要在Translate属性中将Macro Search Path指向这个目录。多个目录使用"|"分割。
3. 如何制作BlackBox
- BlackBox只是普通网表而已。XST的综合结果就可以直接作为BlackBox使用。
- 通常BlackBox外部还会连接其他逻辑,所以BlackBox中一般不插入IOBUF。在XST属性中去除Insert IO Buffer的选项。
FPGA技术的一些基本概念(综合、BlackBox)(转)的更多相关文章
- FPGA技术的发展历史和动向
本文关键字:fpga技术,fpga发展, fpga培训,FPGA应用开发入门与典型实例 一.FPGA技术的发展历史 纵观数字集成电路的发展历史,经历了从电子管.晶体管.小规模集成电路到大规模以及超大规 ...
- 容器技术研究-Kubernetes基本概念
最近在研究容器技术,作为入门,基本概念必须搞明白,今天整理一下Kubernetes的基本概念. 一.什么是Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部 ...
- Window Azure ServiceBus Messaging消息队列技术系列1-基本概念和架构
前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家. 首先,Windows Azure提供了两种类型 ...
- C#与数据库访问技术总结(七)综合示例
综合示例 说明:前面介绍了那么多,光说不练假把式,还是做个实例吧. 表:首先你要准备一张表,这个自己准备吧.我们以学生表为例. 1.ExecuteScalar方法 ExecuteScalar方法执行返 ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构
前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家. 首先,Windows Azure提供了两种类型 ...
- 基于三层交换机的VRRP技术--MSTP、VRRP的综合运用
MSTP (多生成树) 每个VLAN或者几个VLAN拥有一颗生成树,基于实例的生成树.instance 1.instance 2 每个实例拥有一颗生成树.MSTP可以实现多VLAN 的负载分担,可以实 ...
- FPGA中latency与delay概念的区别
2013-06-17 21:09:26 最近学习流水线以及状态机,总遇到注入加入寄存器可以分割组合逻辑,从而提高电路的运行频率的说法:还有流水线可以提高速度的说法,刚开始很是疑惑,觉得流水线的方法,输 ...
- FPGA与CPLD的概念及其区别
一.FPGA与CPLD的基本概念 1.CPLD CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的I/ ...
- FPGA与数字图像处理技术
数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释. 为存储.传输和表示而对图像数据进行处理,以便于机器自动理解. 图像处理(image processing): 用计算机对图像进行 ...
随机推荐
- JDBC开发模式
一]代码模块———Demo.java public class Demo { private static Connection connection; private static Statemen ...
- Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
来自http://blog.csdn.net/luoshengyang/article/details/8479101 在Android系统中,Activity窗口的大小是由WindowManager ...
- hdu 畅通工程再续
http://acm.hdu.edu.cn/showproblem.php?pid=1875 #include <cstdio> #include <cstring> #inc ...
- KEIL的混合编程操作
http://hi.baidu.com/txz01/item/21ad9d75913a7b28d7a89c12 这一篇来讲讲混合编程的问题,在网上找了一下,讲混合编程的文件章也有不少,但进行实例操作讲 ...
- 常用的Windows批处理
切换执行路径 如果不换盘的话:cd xxx换盘:cd /d xxx 获取当前日期 编写Windows批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢?格式: ...
- 关于IoAttachDeviceToDeviceStack
IoAttachDeviceToDeviceStack将Source Device附加到Target Device上. 打开windbgkd> u IoAttachDeviceToDeviceS ...
- libeXosip2(3) -- SIP messages and call control API
SIP messages and call control API The SIP messages and call control API. More... Modules eXosip2 INV ...
- Python闭包与函数对象
1. Python闭包是什么 在python中有函数闭包的概念,这个概念是什么意思呢,查看Wikipedia的说明如下: “ In programming languages, closures (a ...
- 【Java】在JTable中设置鼠标监听器,点击操作对应数据
最终效果 鼠标点击JTable中任一数据,修改相应的信息. 确定点击的行和列 package com.dao; import java.awt.event.MouseAdapter; import j ...
- Laravel-数据库操作笔记
(慕课网_轻松学会Laravel-基础篇_天秤vs永恒老师) 一.直接使用sql语句 1.路由 2.StudentController.php 二.查询构造器 简介:Laravel查询构造器(quer ...