第 7 章 宏功能模块与 ip 应用
DESCRIPTION
第 7 章 宏功能模块与 IP 应用. LPM. 参数可设置模块库 Library of Parameterized Modules 是一个 EDA 标准 参考: www.eda.org. IP (知识产权). 设计可重用 缩短设计时间 经验证 设计加密 SoC 、 SOPC 的基础 最成功的 IP 提供商之一:. 7.1 宏功能模块概述. Altera 提供的宏功能模块与 LPM 函数有: 算术组件: 包括累加器、加法器、乘法器和 LPM 算术函数; 门电路: 包括多路复用器和 LPM 门函数。 - PowerPoint PPT PresentationTRANSCRIPT
第 7 章
宏功能模块与 IP 应用
LPM • 参数可设置模块库• Library of Parameterized Modules
• 是一个 EDA 标准• 参考: www.eda.org
IP (知识产权)• 设计可重用• 缩短设计时间• 经验证• 设计加密
• SoC 、 SOPC 的基础• 最成功的 IP 提供商之一:
Altera 提供的宏功能模块与 LPM 函数有: 算术组件: 包括累加器、加法器、乘法器和 LPM 算术
函数; 门电路: 包括多路复用器和 LPM 门函数。 I/O 组件: 包括时钟数据恢复 (CDR) 、锁相环 (PLL) 、
双数据速率 (DDR) 、千兆位收发器块 (GXB) 、 LVDS 接收器和发送器、 PLL 重新配置和远程更新宏功能模块。
存储器编译器:包括 FIFO Partitioner 、 RAM 和ROM 宏功能模块。
存储组件: 包括存储器、移位寄存器宏模块和 LPM存储器函数。
7.1 宏功能模块概述
使用 MegaWizard Plug-In Manager
MegaWizard Plug-In Manager 输出文件
< 输出文件 >.inc : 宏功能模块包装文件中模块的 AHDL 包含文件。 < 输出文件 >.tdf : 要在 AHDL 设计中实例化的宏功能模块包装文件。 < 输出文件 >.vhd : 要在 VHDL 设计中实例化的宏功能模块包装文件。 < 输出文件 >.v : 要在 VerilogHDL 设计中实例化的宏功能模块包装文件。 < 输出文件 >_bb.v : VerilogHDL 设计所用宏功能模块包装文件中模块的空
体或• black-box 申明,用于在使用 EDA 综合工具时指定端口方向。 < 输出文件 >_inst.tdf : 宏功能模块包装文件中子设计的 AHDL 例化示例。 < 输出文件 >_inst.vhd : 宏功能模块包装文件中实体的 VHDL 例化示例。 < 输出文件 >_inst.v : 宏功能模块包装文件中模块的 VerilogHDL 例化示
例。• 可以在命令提示符下键入以下命令,实现在 Quartus II 软件之外使用
MegaWizard• Plug-In Manager : qmegawiz r
在 QuartusII 中对 LPM 进行例化
• 1 、在 VerilogHDL 和 VHDL 中例化• 2 、使用端口和参数定义• 3 、使用端口和参数定义生成宏功能模
块
Altera 的 LPM 计数器 加法 / 减法器 乘法器 乘 - 累加器和乘 - 加法器 RAM 移位寄存器
7.2 宏模块应用实例
图 7-1 正弦信号发生器 结构框图
f = f0 /64
定制 LPM_ROM 初始化数据文件
• 首先确定图 7-1 中 ROM 内的波形数据文件。 QuartusII 能接受的 LPM_ROM 中的初始化数据文件的格式有 2 种: Memory Initialization File ( .mif )格式和Hexadecimal ( Intel-Format ) File ( .hex )格式。以下以 64点正弦波形数据为例分别说明。
1 .建立 .mif 格式文件【例 7-1 】WIDTH = 8;DEPTH = 64;ADDRESS_RADIX = HEX;DATA_RADIX = HEX;CONTENT BEGIN0 : FF;1 : FE;2 : FC;3 : F9;4 : F5;… (数据略去)3D : FC;3E : FE;3F : FF;END;
可以使用 C/C++ 来生成Sin 数据
【例 7-2 】#include <stdio.h>#include "math.h"main(){int i;float s;for(i=0;i<1024;i++) { s = sin(atan(1)*8*i/1024); printf("%d : %d;\n",i,(int)((s+1)*1023/2)); }}把上述程序编译成程序后,可在 DOS 命令行下执行命令:romgen > sin_rom.mif;
2 .建立 .hex 格式文件
使用 C/C++ 编程生成使用通用编程器
sdata.hex 文件的放置路径
定制 LPM_ROM 元件
定制新的宏功能块
LPM 宏功能块设定
选择 data_rom 模块数据线和地址线宽度
选择地址锁存信号 inclock
调入 ROM 初始化数据文件并选择在系统读写功能
LPM_ROM 设计完成
波形数据 ROM 文件
完成顶层设计【例 7-4 】正弦信号发生器顶层设计LIBRARY IEEE; --正弦信号发生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SINGT IS PORT ( CLK : IN STD_LOGIC; --信号源时钟 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8位波形数据输出
END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom --调用波形数据存储器 LPM_ROM文件:data_rom.vhd声明
PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);--6位地址信号 inclock : IN STD_LOGIC ;--地址锁存时钟 q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );
END COMPONENT;
SIGNAL Q1 : STD_LOGIC_VECTOR (5 DOWNTO 0); -- 设定内部节点作为地址计数器 BEGINPROCESS(CLK ) --LPM_ROM 地址发生器进程 BEGINIF CLK'EVENT AND CLK = '1' THEN Q1<=Q1+1; --Q1 作为地址发生器计数器END IF;END PROCESS;u1 : data_rom PORT MAP(address=>Q1, q => DOUT,inclock=>CLK);-- 例化END;
仿真测试
图 7-11 仿真波形输出
图 7-12 嵌入式逻辑分析仪获得的波形
7.3 在系统存储器数据读写编辑器应用
In-System Memory Content Editor 编辑窗
与实验系统上的 FPGA 通信正常情况下的编辑窗界面
从 FPGA 中的 ROM 读取波形数据
编辑波形数据
下载编辑数据后的 SignalTap II 采样波形
7.4 编辑 SignalTapII 的触发信号
选择高级触发条件
进入“触发条件函数编辑”窗口
编辑触发函数
7.5 其它存储器模块的定制与应用
7.5.1 RAM 定制
编辑定制 RAM
LPM_RAM 的仿真波形
7.5.2 FIFO 定制
FIFO 编辑窗
FIFO 的仿真波形
7.6 流水线乘法累加器的混合输入设计( 1 )用 VHDL 设计 16 位加法器【例】 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER16B IS
PORT ( CIN : IN STD_LOGIC;
A , B : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
COUT : OUT STD_LOGIC );
END ADDER16B;
ARCHITECTURE behav OF ADDER16B IS
SIGNAL SINT : STD_LOGIC_VECTOR(16 DOWNTO 0);
SIGNAL AA,BB : STD_LOGIC_VECTOR(16 DOWNTO 0);
BEGIN
AA<='0'&A; BB<='0'&B;
SINT <= AA + BB + CIN; S <= SINT(15 DOWNTO 0); COUT <= SINT(4);
END behav;
( 2 )顶层原理图文件设计
在原理图编辑窗加入 LPM 元件
编辑 LPM 乘法器
加入所有相关元件
乘法累加器电路
( 3 )仿真
muladd 工程仿真波形
7.7 LPM 嵌入式锁相环调用
7.7.1 建立嵌入式锁相环元件
选择参考时钟为 16MHz
选择控制信号
选择 c0 的片内时钟倍频为 2
7.7.2 测试锁相环
PLL 元件的仿真波形