您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > FPGA详细教程_IP复用(题104)
——IP复用FPGA系统设计与实践基于ISE5.2的设计输入方法3.1.4IP复用IP(知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等设计做成一个“黑盒”或者是可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。3.1.4IP复用XilinxCoreGenerator采用了SmartIP技术和友好的用户参数设置界面。使IP从生成到使用的过程简单,灵活,易用,高效,而且可以对IP使用的资源做一定估计。3.1.4IP复用下面以一个10进制计数器为例,讲解如何在ISE5.2中生成IP和使用IP,实现设计。1.设计要求设计一个10进制计数器:(1)计数频率为1Hz(2)外部晶振为30MHz(3)使用7段LED显示计数器的值。其原理框图如右图所示。2.新建工程3.新建VHDL(分频器)文件4.编写分频器的VHDL源程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydiv30isPort(clkin:instd_logic;reset:instd_logic;clkout:outstd_logic);enddiv30;architectureBehavioralofdiv30issignalReg_clk:std_logic:='0';beginclkout=Reg_clk;process(clkin,reset)variablecnt:integerrange0to15000000:=0;beginifreset='0'thencnt:=0;Reg_clk='0';elsifrising_edge(clkin)thencnt:=cnt+1;ifcnt=15000000thencnt:=0;Reg_clk=notReg_clk;endif;endif;endprocess;endBehavioral;5.建立一个IP文件IP初始化窗口IP核生成器操作界面IP核在XilinxCoreGenerator(IP核生成器)操作界面左边的窗口中包含了很多文件夹,文件夹下又有子文件夹,子文件夹中装的就是各种功能的IP。CoreGenerator中的IP相当丰富,而且已经分门别类装在不同的文件夹中。如:BasicElements(基本元素)中包含有一些最基本的功能IP,比较器,计数器,编码器/译码器,格式转换,逻辑门/缓冲器,各种存储器,复选器,寄存器,移位寄存器等。IP核还包含有:Communication&Networking(通讯和网络)IPDigitalSignalProcessing(数字信号处理)IPMathFunctions(数学功能)IPMemories&StorageElements(存储器)IPPrototype&DevelopmentHardwareProduct(原形和开发硬件产品)IPStandardBusinterfaces(标准总线接口)IPIP核生成器操作界面窗口中按钮的含义6.IP参数设置双击IP名BinaryCounter参数设置对话框6.IP参数设置7.生成IP7.生成IP报告显示,生成的计数器将占用5个LUT(查找表),5个寄存器;设计100%的是RPM(RelationallyPlacedMacro),这是一种相关元素的布局方式(采用这些布局方式有一定的好处,有兴趣的读者可以参考相关书籍)。设计有1个CLB(可配置逻辑块)宽,3个CLB高,一共使用了3个CLB或者3个slices(切片)。7.生成IP将生成好的IP文件加入工程后SourcesinProject和ProcessesforCurrentSource中的变化如左图所示。8.译码器设计(1)定义端口8.译码器设计(2)编写VHDL源程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydecoderisPort(din:instd_logic_vector(3downto0);dout:outstd_logic_vector(6downto0));enddecoder;architectureBehavioralofdecoderisbeginwithdinselectdout=1000000when0000,--01111001when0001,--10100100when0010,--20110000when0011,--30011001when0100,--40010010when0101,--50000010when0110,--61111000when0111,--70000000when1000,--80010000when1001,--91111111whenothers;endBehavioral;9.顶层映射(1)定义端口9.顶层映射(2)编写VHDL源程序libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisPort(clk:instd_logic;reset:instd_logic;dout:outstd_logic_vector(6downto0));endtop;architectureBehavioraloftopiscomponentdiv30Port(clkin:instd_logic;reset:instd_logic;clkout:outstd_logic);endcomponent;componentmy_couport(Q:OUTstd_logic_VECTOR(3downto0);CLK:INstd_logic);endcomponent;componentdecoderPort(din:instd_logic_vector(3downto0);dout:outstd_logic_vector(6downto0));endcomponent;signalclk1hz:std_logic;signalq:std_logic_vector(3downto0);beginu1:div30portmap(clkin=clk,reset=reset,clkout=clk1hz);u2:my_couportmap(clk=clk1hz,q=q);u3:decoderportmap(din=q,dout=dout);endBehavioral;到此已经使用IP完成了整个设计。
本文标题:FPGA详细教程_IP复用(题104)
链接地址:https://www.777doc.com/doc-2874149 .html