—— ip 复用

24
—IP 复复 FPGA 系 系系系系系 复复 ISE5.2 复复复复复复复

Upload: desiree-becker

Post on 15-Mar-2016

41 views

Category:

Documents


2 download

DESCRIPTION

FPGA 系统设计与实践. —— IP 复用. 基于 ISE5.2 的设计输入方法. 3.1.4 IP 复用. IP( 知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如 FIR 滤波器、 SDRAM 控制器、 PCI 接口等设计做成一个“黑盒”或者是可修改参数的模块,供设计者使用。 IP 核包括硬 IP 与软 IP。 调用 IP 核能避免重复劳动,大大减轻设计人员的工作量。. 3.1.4 IP 复用. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: —— IP 复用

——IP 复用

FPGA系统设计与实践

基于 ISE5.2 的设计输入方法

Page 2: —— IP 复用

3.1.4 IP 复用

IP (知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如 FIR 滤波器、 SDRAM 控制器、 PCI 接口等设计做成一个“黑盒”或者是可修改参数的模块,供设计者使用。 IP 核包括硬 IP 与软IP 。调用 IP 核能避免重复劳动,大大减轻设计人员的工作量。

Page 3: —— IP 复用

3.1.4 IP 复用 Xilinx Core Generator 采用了 Smart IP 技术和友好的用户参数设置界面。使 IP 从生成到使用的过程简单,灵活,易用,高效,而且可以对 IP 使用的资源做一定估计。

Page 4: —— IP 复用

3.1.4 IP 复用 下面以一个 10 进制计数器为例,讲解如何在

ISE5.2 中生成 IP 和使用 IP ,实现设计。

Page 5: —— IP 复用

1. 设计要求 设计一个 10 进制计数器 : ( 1 )计数频率为 1Hz ( 2 )外部晶振为 30MHz ( 3 )使用 7 段 LED 显示计 数器的值。 其原理框图如右图所示。

Page 6: —— IP 复用

2. 新建工程

Page 7: —— IP 复用

3. 新建 VHDL (分频器)文件

Page 8: —— IP 复用

4. 编写分频器的 VHDL 源程序 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity div30 is Port ( clkin : in std_logic; reset : in std_logic; clkout : out std_logic); end div30;architecture Behavioral of div30 is signal Reg_clk : std_logic :='0'; begin clkout <= Reg_clk ;

process(clkin,reset)

variable cnt : integer range 0 to 15000000 :=0;

begin

if reset = '0' then cnt :=0 ;

Reg_clk <= '0';

elsif rising_edge(clkin) then cnt := cnt + 1;

if cnt = 15000000 then cnt := 0;

Reg_clk <= not Reg_clk ;

end if;

end if;

end process;

end Behavioral;

Page 9: —— IP 复用

5. 建立一个 IP 文件

Page 10: —— IP 复用

IP 初始化窗口

Page 11: —— IP 复用

IP 核生成器操作界面

Page 12: —— IP 复用

IP 核 在 Xilinx Core Generator ( IP 核生成器)操作界面左边的窗口中包含了很多文件夹,文件夹下又有子 文 件 夹 , 子 文 件 夹 中 装 的 就 是 各 种 功 能 的

IP 。 Core Generator 中的 IP 相当丰富,而且已经分门别类装在不同的文件夹中。如: Basic Elements( 基本元素 ) 中包含有一些最基本的功能 IP ,比较器,计数器,编码器 / 译码器,格式转换,逻辑门 / 缓冲器,各种存储器,复选器,寄存器,移位寄存器等。

Page 13: —— IP 复用

IP 核 还包含有: Communication & Networking( 通讯和网络 ) IP Digital Signal Processing( 数字信号处理 ) IP Math Functions (数学功能 ) IP Memories & Storage Elements( 存储器 ) IP Prototype & Development Hardware Product( 原形和开发硬 件产品 ) IP Standard Bus interfaces( 标准总线接口 ) IP

Page 14: —— IP 复用

IP 核生成器操作界面窗口中按钮的含义

Page 15: —— IP 复用

6. IP 参数设置 双击 IP 名 Binary Counter 参数设置对话框

Page 16: —— IP 复用

6. IP 参数设置

Page 17: —— IP 复用

7. 生成 IP

Page 18: —— IP 复用

7. 生成 IP

报告显示,生成的计数器将占用 5 个 LUT (查找表), 5个寄存器;设计 100% 的是RPM(Relationally Placed Macro) ,这是一种相关元素的布局方式(采用这些布局方式有一定的好处,有兴趣的读者可以参考相关书籍)。设计有 1 个 CLB (可配置逻辑块)宽, 3 个 CLB 高,一共使用了 3 个 CLB 或者 3 个slices (切片)。

Page 19: —— IP 复用

7. 生成 IP

将生成好的 IP 文件加入工程后 Sources in Project 和 Processes for Current Source 中的变化如左图所示。

Page 20: —— IP 复用

8. 译码器设计 ( 1 )定义端口

Page 21: —— IP 复用

8. 译码器设计 ( 2 )编写 VHDL 源程序

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity decoder isPort ( din : in std_logic_vector(3 downto 0); dout : out std_logic_vector(6 downto 0));end decoder;architecture Behavioral of decoder isbeginwith din select

dout<="1000000"when"0000",--0

"1111001"when"0001",--1

"0100100"when"0010",--2

"0110000"when"0011",--3

"0011001"when"0100",--4

"0010010"when"0101",--5

"0000010"when"0110",--6

"1111000"when"0111",--7

"0000000"when"1000",--8

"0010000"when"1001",--9

"1111111"when others;

end Behavioral;

Page 22: —— IP 复用

9. 顶层映射 ( 1 )定义端口

Page 23: —— IP 复用

9. 顶层映射 ( 2 )编写 VHDL 源程序

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort ( clk : in std_logic; reset : in std_logic; dout : out std_logic_vector(6 downto 0));end top;architecture Behavioral of top iscomponent div30 Port ( clkin : in std_logic; reset : in std_logic; clkout : out std_logic);end component;

component my_cou

port ( Q : OUT std_logic_VECTOR(3 downto 0);

CLK : IN std_logic);

end component;

component decoder

Port ( din : in std_logic_vector(3 downto 0);

dout : out std_logic_vector(6 downto 0));

end component;

signal clk1hz : std_logic;

signal q : std_logic_vector(3 downto 0);

begin

u1: div30 port map( clkin => clk , reset => reset ,

clkout => clk1hz);

u2: my_cou port map( clk => clk1hz , q => q );

u3: decoder port map( din => q , dout => dout );

end Behavioral;

Page 24: —— IP 复用

到此已经使用 IP 完成了整个设计。