Download ppt - —— IP 复用

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 完成了整个设计。


Recommended