FPGA的IP核

http://blog.sina.com.cn/s/blog_5f6fcfce01012w4g.html

IP核概述

  利用IP核设计 电子系统 ,引用方便,修改基本元件的功能容易。具有复杂功能和商业价值的IP核一般具有知识产权,尽管IP核的市场活动还不规范,但是仍有许多 集成电路设计 公司从事IP核的设计、开发和营销工作。IP核有两种,与工艺无关的VHDL程序称为 软核 ;具有特定电路功能的集成电路版图称为硬核。硬核一般不允许更改,利用硬核进行集成电路设计难度大,但是容易成功流片。

编辑本段IP核分类

  IP内核的三种类型
  IP内核可以在不同的硬件描述级实现,由此产生了三类IP内核: 软核 固核 硬核 。这种分类主要依据产品交付的方式,而这三种IP内核实现方法也各具特色。
   软核 是用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。软IP通常是以硬件描述语言HDL源文件的形势出现,应用开发过程与普通的HDL设计也十分相似,只是所需的开发硬 软件环境 比较昂贵。软IP的设计周期短,设计投入少。由于不涉及物理实现,为后续设计留有很大的发挥空间,增大了IP的灵活性和适应性。其主要缺点是在一定程度上使后续工序无法适应整体设计,从而需要一定程度的软IP修正,在性能上也不可能获得全面的优化。由于软核是以 源代码 的形式提供,尽管源代码可以采用加密方法,但其 知识产权保护 问题不容忽视。
   硬核 提供设计阶段最终阶段产品:掩模。以经过完全的布局布线的网表形式提供,这种硬核既具有可预见性,同时还可以针对特定工艺或购买商进行功耗和尺寸上的优化。尽管硬核由于缺乏灵活性而可移植性差,但由于无须提供寄存器转移级(RTL)文件,因而更易于实现IP保护。
   固核 则是软核和硬核的折衷。大多数应用于FPGA的IP内核均为软核,软核有助于用户调节参数并增强可复用性。软核通常以加密形式提供,这样实际的 RTL对用户是不可见的,但布局和布线灵活。在这些加密的软核中,如果对内核进行了参数化,那么用户就可通过头文件或图形用户接口(GUI)方便地对参数进行操作。对于那些对时序要求严格的内核(如PCI接口内核),可预布线特定信号或分配特定的布线资源,以满足时序要求。这些内核可归类为固核,由于内核是预先设计的代码模块,因此这有可能影响包含该内核的整体设计。由于内核的建立(setup)、保持时间和握手信号都可能是固定的,因此其它电路的设计时都必须考虑与该内核进行正确地接口。如果内核具有固定布局或部分固定的布局,那么这还将影响其它电路的布局。

编辑本段IP核介绍

  IP(知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如 FIR滤波器 、SDRAM控制器、PCI接口等设计成可修改参数的模块。IP核的重用是设计人员赢得迅速上市时间的主要策略。随着CPLD/FPGA的规模越来越大,设计越来越复杂(IC的复杂度以每年55%的速率递增,而设计能力每年仅提高21%),设计者的主要任务是在规定的时间周期内完成复杂的设计。调用IP核能避免重复劳动,大大减轻工程师的负担,因此使用IP核是一个发展趋势。
  IP核包括硬IP与软IP。可配置IP是参数化后的可重定目标IP,其优点是可以对功能加以裁剪,以符合特定的应用。这些参数包括总线宽度、存储器容量、使能或禁止功能块。
  硬IP最大的优点是确保性能,如速度、功耗等。然而,硬IP难以转移到新工艺或集成到新结构中,是不可重配置的。
  软IP是以综合形式交付的,因而必须在目标工艺中实现,并由系统设计者验证。其优点是源代码灵活,可重定目标于多种制作工艺,在新功能级中重新配置。
  不过目前大多数库是收费的,但也可以从网上下载一些免费的IP核。

编辑本段用IP核实现的D/A转换器的功能及特点

  数字到模拟转换器(DACs)将一个二进制数转换为与之对应的电压值,目前常用的 D/A转换器 都是由电阻或电容加权网络、受码元控制的开关和基准电压或电流源组成。当D/A转换器需要转换的信号每次取样字长很长时,对这些电路的精度要求很高,并且还必须在整个温度范围和整个使用寿命期间内保持电路参数的稳定。例如,一个16位的D/A转换器,其MSB的精度必须在1/2 16以内,这是很困难的。所以,需寻求一种中保持高分辨率又可降低对电路精度和稳定度要求的方法。
  可综合的Delta-Sigma DAC(术语Delta-Sigma分别指算术差与和,即Δ-∑DAC),是Xilinx公司提供的免费IP核,可从网上下载得到。
  Delta-Sigma DAC使用数字技术,因而它不受温度的影响,并且能在一片 可编程逻辑器件 中实现。避免在D/A转换器中使用匹配电阻,不仅能更便宜,而且,其转换是线性的。Delta-Sigma DAC实际上是高速单个位的DAC,用数字反馈技术,在输出端产生一串脉冲。脉冲串中信号为高电平的时间部分与二进制输入成比例,当这个脉冲串通过一个模拟低通滤波器后就得到一个模拟输出信号。
   图1
  是一个典型的可编程逻辑器件实现的DAC的顶层电路图,输入信号有复位信号、时钟信号以及二进制数据总线。输出DACoutDrvr驱动一个外部的低通滤波器Vout能从0V~Vcco。这里Vcco是FPGA I/O块的供电电压。输入/输出详细说明如表1所列。
   表1 输入输出描述表
  信号 方向 描 述
  DACOUT 输出 驱动外部低通滤波器的脉冲串(通过一个输出驱动器)
  DACIN 输入 数字输入总线,值必须设置成钟的正沿
  clk 输入 正沿有效
  Reset 输入 复位信号初始化SigmaLatch和输出D触发器
  DAC的二进制输入是一个无符号数。“0”代表最低电压,输出的模拟电压也只有正的。“0”输入产生0V输出,输入端全“1”,则输出近似达到Vcco。
   图2
  是Delta-Sigma DAC的原理框图,二进制输入的位宽是可变的。为简单起见,电路原理图描述了一个8位二进制输入的DAC。
  在这个器件中, 二进制加法器 用来产生和,也用来产生差。尽管Delta Adder的输入是无符号数,两个加法器的输出却都是有符号数。Delta Adder计算DAC输入和当前DAC输出的差,并用一个二进制数表示。因为DAC的输出是一个单个的位,因此它不是1就是0。如图2所示,当输入加上由Sigma Latch的输出的两个拷贝与0构成的10位数,就产生差值,这也补偿了DACIN是无符号数的事实。Sigma Adder将它原来的输出(保存在Sigma Latch中)与当前的Delta Adder的输出相加。
   图1 中输出电压与输入电压的关系为
  VOUT=(DACIN/(2MSBI+1))×VCCO
  式中单位为V。
  例如,对于一个8位DAC(MSBI=7),最后的输出是这样:DACIN输入是0,则输出也是0;DACIN输入是十六进制数FF时,输出值为最大(255/256)×Vcco。
  阻容低通滤波器适合多数应用需要,一个简单的阻容低通滤波器就能工作得很好。
  Vs的定义是:DAC输入增加或减少时,在Vout端产生变化的 绝对值 。对一个8位DAC,Vs等于(1/256)×Vcco。
  Vout能够产生在0V~Vcco之间可变的电压,具体的值由DACIN的位宽和输入的数值决定。
  Delta-Sigma DAC适合需要相对高精度的低频应用。在这种应用中,电压不会很快地变化,因此,RC的时间常数可以很大,以减小噪声。
  这种DAC最广泛的应用就是产生通常直流电压。这包括电压控制振荡器、电压控制运算放大器、I/O参数电压、可编程电压源、波形发生器(正弦、三角等)、A/D转换中的参考电压等。
  Delta-Sigma DAC是一个例子,说明高速可编程逻辑器件能用于混合信号系统,以减少元件的数量。可编程逻辑器件的速度和密度使它们成为模拟信号产生和处理方面理想的元件。
   用VHDL语言编写的程序
  library ieee;
  use ieeestd_logic_1164.all;
  use ieee.std_logic_arith.all;
  use ieee.std_logic_unsigned.all;
  entity dac_ds is
  port(reset :in std_logic;
  clk :in std_logic;
  din :in std_logic_vector(7 downto 0);--Signed integer
  dout :out std_logic;
  );
  end dac_ds;
  architecture arch_dac_ds of dac_ds is
  signal error :std_logic_vector(9 downto 0);--Error accumulator is 2 bits larger
  constant zeros:std_logic_vector(7 downto 0):=(others=>'0');
  begin
  process(reset,clk,din)
  variable val :std_logic_vector(9 downto 0);
  begin
  if reset='1'then
  error<=(others=>'0');
  dout<='0';
  elsif clk'event and clk='1' then
  --val:=din+error;din is sign extended to nbits+2
  val:=(din(din'high)&din(din'high)&din)+error;
  if val(val'high)='0'then
  dout<='1';
  error<=val+("11"& zeros);
  else
  dout<='0';
  error<=val+("01"&zeros);
  end if;
  end if;
  end process;
  end arch_dac_ds;
   4 芯片的选择和配置
  选择MAX7000S系列可编程逻辑器件,编译后由MAX+PLUS II 软件 自动配置进EMP7032SLC44芯片,将生成的目标文件通过编程电缆对器件进行编程。
  将该IP核实现的D/A转换器用于新型智能电阻炉温度控制仪中,因为调节炉温的信号不要求变化很快,因此DAC的输入二进制信号为缓变信号。对于这种低频应用,可以将RC时间常数取得较大,以减小噪声。这样,可综合的VHDL语言Delta-Sigma DAC模块配置进EMP7032芯片后,达到了预期的效果。

编辑本段IP核再使用的十大注意事项

  知识产权(IP)的再使用是设计组赢得迅速上市时间的主要策略,因为现在留给设计者完成诸如 蜂窝电话 和Internet 路由器 等热门IC设计的周期只有3个月。设计者还需面对这样一个严酷的现实,即IC的复杂度以每年55%的速率递增,而设计能力每年仅提高21%。
  为系统设计者专门制作的再使用IP弥补了这方面的不足。再使用既为IP建立者,也为系统设计者提供一种共享最佳IP核和主导模块的方法。系统设计者的主要任务是在规定的周期时间内研发出复杂的设计。这只有采用新设计方法和完全不同的芯片设计理念才能完成。IP再使用已经成为系统设计方法的关键所在。

1. 再使用标准的选择

  标准是再使用的基础。在设计一个系统时,可供工程人员考虑的工业标准很多,比如半导体再使用标准(SRS),它是对各种工业再使用创议标准的补充,提出这些创议标准的组织包括“虚插座接口联盟VSIA”等。再使用标准为IP设计流程中的各阶段提供规则、指南和接口方法。它是高效设计方法的一个里程碑,让可再用IP快捷地、即插即用地集成到系统解决方案成为可能。
  再使用标准通常涉及到许多方面,如系统级设计、结构、实现、验证以及文件编制和可交付清单等与IP有关的事项。例如,结构分类目录解决片上或片外的接口。实现分类目录通过HDL代码标准、物理表示、单元库以及模拟子单元集中解决如何建立IP的问题。功能验证及可测试设计(DFT)标准则包含在验证分类目录中。

2. IP核的选择

  根据IP使用的划分,IP建立者可按下列三种形式设计IP:可再用、可重定目标以及可配置。可再用IP是着眼于按各种再使用标准定义的格式和快速集成的要求而建立的,便于移植,更重要的是有效集成。可重定目标IP是在充分高的抽象级上设计的,因而可以方便地在各种工艺与结构之间转移。可配置IP是参数化后的可重定目标IP,其优点是可以对功能加以裁剪以符合特定的应用。这些参数包括总线宽度、存储器容量、使能或禁止功能块。硬IP与软IP的意图不同,因而对IP的开发和在这之后的IP的集成采用不同的方法。

3. 硬IP

  硬IP对功率、体积和性能进行了优化,并映射至特定的工艺。具体实例包括已完成布局布线的网表,以特定工艺库或全定制物理布图,或两者之组合。硬IP是特定工艺来实现的,通常用GDSII格式表示。硬IP可以再使用,且由于它已处于设计表示的最底层,因而最容易集成。硬IP已完全用目标工艺实现是按十分接近于 标准单元库 元件的形式交付的,故而允许设计者将IP快速地集成在衍生产品中。硬IP最大的优点是确保性能,如速度、功耗等。然而,硬IP难以转移到新工艺或集成到新结构中,是不可重配置的。

4. 软IP

  软IP是以综合形式交付的,因而必须在目标工艺中实现,并由系统设计者验证。其优点是源代码的灵活性,它可重定目标于多种制作工艺,在新功能级中重新配置。
  由于设计以高层次表示,因而软IP是可再用的,易于重定目标和重配置,然而预测软IP的时序、面积与功率诸方面的性能较困难。为了实现最高效率的再使用并减少集成时间,IP应从软件源代码开始;而为了确保性能,复杂IP应以硬IP的形式共享。

5. 再使用的软插接

  软插接是开发符合再使用标准IP的过程,它应成为建立新IP设计流程的组成部分。过程需要有关IP深层的知识,因此只有IP建立者最熟知IP块,有能力建立这些些概念,在时序分析时去除假通路,并最终确定结果的正确性。与DFT一样,软插接会修改现有的设计流程来适应再使用设计和生成附加可交付项,因此在设计流程中应及早考虑再使用事项。

6. 再使用的提供与获取

  IP资源库为IP建立者和系统设计者提供共享和使用IP的基础设施。这个系统应让IP建立者和系统设计者共享硬和软两方面的可再用IP。资源库提供多场所的全方位访问,系统集成的全方位开发。它也是 设计师 搜索、选择、将再使用块集成到自己系统中的快捷而又简便的途径。
  资源库基础设施还应开辟一个区域,让系统开发者提供反馈、出错报告、错误改正及资源库中任何有关IP块的注解。反馈信息块建立者对错误的修复与改进说明一起是块数据库列表的一部分。

7. IP块的认证

  认证能确定IP块是否符合相关的再使用标准。它提供一把表征块再使用质量的尺度,应在IP进入资源库前完成。由于IP建立者熟知IP,他应测试块概念间的一致性以及与工具、库以及硬件平台的兼容性。一个独立的认证小组通过对可交付性、再使用性以及出错历史记录的随机抽样,预测IP核的质量和可靠性,定出IP的分类等级。这个等级让设计者有一个总体概念,如IP符合标准的准确性有多好,再使用需多大的软插接工作量。

8.IP集成的优化

  对IP核的再使用,建立者需软插接IP、进行认证、将它存放在系统设计者能访问的资源库中。自动化工具提供多种手段,加速软插接和资源库的操作,认证和集成过程的部分自动化。工具制造商力争实现更多的自动化。在理想情况下,全部IP块可从资源库中按需供给。

9.设计周期的加速

  目前,设计者几乎没有能力在三个月设计周期内开发出合乎规格的新产品。如果对每个产品族建立一个设计平台,设计组就能充分发挥平台的作用,开发出产品的衍生品种。一种有效的再使用方法应让可再使用IP的开发作为平台的一部分,并将IP块快速地集成到衍生品种。

10.支持基础设施

  一旦IP开始普遍使用,提供该IP的支持是必要的。建立者继续拥有IP,因为支持它需要深层的知识。建立者负责IP的更新,将最新版本放置在资源库中。IP由为系统设计者服务的认证组重新认证。此外,建立者还应在系统设计者集成IP遇到困难时提供必需的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊正式发布关系型数据库Amazon Aurora

在去年的AWS re:Invent大会上&#xff0c;亚马逊宣布了Amazon Aurora。Aurora是一个关系型数据库&#xff0c;可以跨3个可用区域复制6份数据&#xff0c;其设计目标是提供高性能和高可用性&#xff08;99.99%&#xff09;&#xff0c;并且存储可以轻松高效地扩展到64TB。近日&a…

刘小东的“空城记”

刘小东的“空城记” 。从“三峡移民”到“金城小子”&#xff0c;从“温床”&#xff0c;再到"新疆和田 ”,今天&#xff0c;刘小东又把“鄂尔多斯” 纳入自己介入现实的创作计划。鄂尔多斯&#xff0c;一个中国曾经最贫瘠的所在&#xff0c;因为矿产开发&#xff0c;迅…

鼠标键盘驱动分析

link: http://blog.21ic.com/user1/5585/archives/2009/59432.html

有限状态机建模

有限状态机建模 1、使用枚举类型建立状态机模型 枚举类型有固定的数值 枚举类型提供了一种定义一个具有有限合法数值集合的变量的方法。数值是用标签而不是数字逻辑值表示的。 枚举类型支持抽象FSM类型 枚举类型支持更高抽象层次的建模&#xff0c;并且能描述精确的、可综合的…

时钟周期及秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)之间转换

1秒1000毫秒(ms) 1毫秒1&#xff0f;1,000秒(s) 1秒1,000,000 微秒(μs) 1微秒1&#xff0f;1,000,000秒(s) 1秒1,000,000,000 纳秒(ns) 1纳秒1&#xff0f;1,000,000,000秒(s) 1秒1,000,000,000,000 皮秒(ps) 1皮秒1&#xff0f;1,000,000,000,000秒(s)

聆听南音

北京。半木空间。聆听南音古曲。 南音亦称弦管、南乐。起于晋唐&#xff0c;盛于南宋&#xff0c;至今流传于泉州闽南地区。被誉为“中国音乐史上的活化石” 。今晚&#xff0c;南音传人蔡雅艺率三位南音大师现场演出、宣讲并与"半木"品牌创始人吕永中先生对话交流…

不是每个人都适合linux

开源特性 Copyleft意味着&#xff0c;linux用户要学会一定程度的DIY。这不仅仅是说&#xff0c;你需要一些预备知识才可以开始。这包含的另一层意思是&#xff0c;在出现了问题的时候&#xff0c;用户很可能并不会得到及时有效的外来援助。   开源社区发布的内容通常是主题比…

WinCE中的paging pool

我们知道&#xff0c;在Config.bib配置中&#xff0c;RAM指定的内存区域会被划分为程序内存和对象存储。但在使用paging pool时&#xff0c;RAM段要减去paging pool的大小&#xff0c;剩余空间再划分为程序内存和对象存储。其中程序内存主要为正在运行的程序保存堆和栈的内容。…

在FSM模型中使用两态数据类型

在FSM模型中使用两态数据类型 1、使用两态类型和枚举类型对FSM复位 在仿真刚开始时&#xff0c;四态数据类型的值是逻辑X。类似有限状态机这样的模型中&#xff0c;四态变量的X逻辑值可以用来表示模型还没有复位&#xff0c;或复位逻辑的建模不正确。 仿真刚开始时&#xff0c…

没有建立对验证码签名的目录的发布者信任

在Windows 7下安装 FX3 USB驱动&#xff0c;一直提示 “没有建立对验证码签名的目录的发布者信任” 导致无法安装驱动&#xff0c;后来测试很多的方法&#xff0c;包括复制 inf 和sys文件到相应的 C:\windows\inf 与 C:\windows\system32\driver 目录下&#xff0c;设置 IE浏览…

QCon北京2016启动筹备 众多热点专题诚征演讲嘉宾

QCon是由InfoQ主办的全球顶级技术盛会&#xff0c;每年在伦敦、北京、东京、纽约、圣保罗、上海、旧金山召开。\u0026#xD;\n\u0026#xD;\n在即将过去的2015年&#xff0c;我们在中国成功举办了QCon北京和QCon上海。我们紧扣热点&#xff0c;坚持实践驱动&#xff0c;很多精彩演讲…

洪莆日美

韩国女艺术家洪莆日美&#xff0c;曾在台湾研习美学&#xff0c;现为韩国釜山高神大学美术系教授。她的作品与其是在黑与白之间&#xff0c;毋宁说是在暗与光之间&#xff0c;它是东方阴阳哲学与简约主义艺术实践的圆满和结晶。她在自述中写道&#xff1a; “我以纸墨布局&…

关闭Eclipse光标悬浮自动提示

最近几个版本的Eclipse默认鼠标移动到方法、属性等上面会出现悬浮窗提示&#xff0c;但鼠标下移后不会消失&#xff0c;编写代码的时候很烦人。 设置preferences-->General-->Editors-->Text Editors--> when mouse moved into hover:选择Close hover

层次化设计

层次化设计 1、模块原型 外部的模块声明 SystemVerilog允许用户为被实例化的模块指定一个原型&#xff0c;这就简化了编译过程。原型的定义使用关键字extern&#xff0c;extern之后是模块及其端口是声明。 //使用Verilog-1995代码风格的原型 entern module counter(cnt,d,clo…

ASP.NET WebHooks RC 1发布

正如消息队列能够让同一个组织内的多个应用相互通信一样&#xff0c; WebHooks也为来自不同组织的网站提供了一种以异步的形式进行通信的方法。\u0026#xD;\n\u0026#xD;\n从本质上说&#xff0c;WebHook就是一种回调机制。用户可以在WebHook提供者中注册一个自定义的URL&#xf…

远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机。其实 virt-manager 也可以管理其他宿主机上的虚机。只需要简单的将宿主机添加进来 填入宿主机的相关信息&#xff0c;确定即可。 接下来&#xff0c;我们就可以像管理本地虚机一样去管理远程宿主机上的虚机了。 …

WM的Image格式分析

定制 WM 时 &#xff0c;生成的image的扩展名很多&#xff0c;dio ,nb0 ,bin等等&#xff0c;他们都是什么关系。看一个例子。 Memory.cfg.xml的内容如下 我们可以看见image由4个分区组成&#xff0c;分别为ULDR,NK,OS,Storage&#xff08;最多只能有4个分区&#xff09;。这4…

随机取不重复的数字

for( int i 0; i < 25; i) a[i] i;srand( time(NULL) ); for( i 0; i < 25; i) swap( a[0], a[rand()%25] );

DSP笔记

DSP笔记 duty:占空比&#xff1b;DFT:可测性设计头文件的主要作用是&#xff1a;包含一些宏定义和函数。头文件作为一种包含功能函数、数据接口声明的载体文件&#xff0c;主要用于保存程序的声明&#xff0c;而定义文件用于保存程序的实现。入门&#xff0c;GPIO输入输出&…

KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)

KVM 的存储虚拟化是通过存储池&#xff08;Storage Pool&#xff09;和卷&#xff08;Volume&#xff09;来管理的。 Storage Pool 是宿主机上可以看到的一片存储空间&#xff0c;可以是多种类型&#xff0c;后面会详细讨论。Volume 是在 Storage Pool 中划分出的一块空间&…