参数可设置宏功能模块lpm的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2、实验原理

二、利用lpm-rom设计一个乘法器

设置存储单元数目与数据宽度
存储单 元数目 数据位 宽
二、利用lpm-rom设计一个乘法器
3、实验步骤

配置乘法表数据文件
File→New→Memory Files→Memory Initialization File (或者Hexadecimal Intel Format File)

由地址线(adderss)数量确定存储单元个数,如:8根地址 线address(7..0),共有256个存储单元 每个存储单元能够保存一定位数的二进制数,成为数据位 宽 写存储单元时,地址和数据的表达形式 地址:数据
8位地址 高 4位 8位地址 低 4位 0010,1000 : 0001,1000 乘数 a=2 乘数 b=8 乘积 C=16 存储的 数据

一、参数可设置模块库(续1)
1、ALTERA提供的宏功能模块
算术组件
如:累加器、加法器、乘法器、LPM算 术函数
门电路
如:多路复用器和LPM门函数
I/O组件
如:时钟数据恢复(CDR)、锁相环(PLL)、千兆位 收发器块(GXB)、LVDS接收器和发送器等
存储组件和存储器编译器
如:LPM_ROM、RAM
一、参数可设置模块库(续5)

存储组件
序号 1 2 3 4 模块名称 lpm_dff lpm_ff lpm_fifo lpm_fifo_dc 功能描述 参数化D触发器和移位寄存器模块 参数化触发器宏模块 参数化单时钟FIFO宏模块 参数化双时钟FIFO宏模块
5
6 7
lpm_latch
lpm_ram_dp lpm_rom
参数化锁存器宏模块
参数化双端口RAM模块 参数化ROM宏模块
一、参数可设置模块库(续6)
2、调用宏功能模块的方法
新建原理图编辑文件,双 击打开Symbol对话框调用
也可通过菜单Tools→MegaWizard Plug-In Manager
二、利用lpm-rom设计一个乘法器
1、ROM工作原理

保存,文件名romdata.hex
二、利用lpm-rom设计一个乘法器

定制lpm_rom元件 Tools→MegaWizard Plug-In Manager
二、利用lpm-rom设计一个乘法器

选择元件及保存位置等
二、利用lpm-rom设计一个乘法器

设置lpm_rom参数
数据 位宽 存储单 元数目
二、利用lpm-rom设计一个乘法器

设置lpm_rom参数(续)
是否添加 使能信号
是否添加 清零信号
本例中可以不选择使 能信号和清零信号, 直接NEXT进入下一 步设置
二、利用lpm-rom设计一个乘法器

设置lpm_rom参数(续)
单击 Browse 选择数 据文件
二、利用lpm-rom设计一个乘法器

波形仿真(续) 设置乘数、被乘数
分离窗口 选择工具 文字编辑 移动工具 全屏 查找 未初始化 设置低电平0 高阻态 弱逻辑0 无关 数据总线设置 未定义信号 设置高电平1 弱未知 弱逻辑1 反转 时钟设置 随机值
选择数制 设置数值 取消数值加1操作
二、利用lpm-rom设计一个乘法器

波形仿真(续) 设置完成后保存波形文件,仿真

波形仿真 新建波形文件→调入节点端口→设置仿真激励(过程同全 加器波形仿真) 设置时钟信号
分离窗口 选择工具 文字编辑 移动工具 全屏 查找 未初始化 设置低电平0 高阻态 弱逻辑0 无关 数据总线设置 未定义信号 设置高电平1 弱未知 弱逻辑1 反转 时钟设置 随机值
时钟周期 设置
二、利用lpm-rom设计一个乘法器
一、参数可设置模块库(续4)

I/O组件
序号 1
2 3 4 5 6
模块名称 alt4gxb
altdq altdqs altlvds_rx altlvds_tx altpll
功能描述 千兆位收发器模块
数据滤波模块 参数化的双向数据滤波器模块 低电压差分信号接收器 低电压差分信号发送器 参数化的锁相环模块
实验2
参数ke 设置宏功能 模块LPM的应用
一、参数可设置模块库

参数可设置模块库(Library of Parameterized Modules, LPM)是Altera公司提供的以图形或者硬件描述语言模块 形式方便调用的宏功能块

设计者可以根据设计电路的需要,选择LPM库中的适当模 块,通过对其设置参数,完成自己的设计需要。 不必进行重复模块的设计,而将更多的精力放在其他功能 的实现上,极大地提高了电子设计的效率和可靠性。
二、利用lpm-rom设计一个乘法器
例2:采用原理图
需要在打开rom0.vhd文件的情况下,选择File→Create/Update→Create Symbol Files for Current File,将其转化为原理图元件
注意:另存为与 rom0不同名的文件 名即可!
总线形式结构
二、利用lpm-rom设计一个乘法器
一、参数可设置模块库(续2)

算数组件
序号 模块名称 1 2 3 4 5 6 7 8 9 10 11 12 13 altfp_add_sub altfp_div altfp_mult altmemmult altmult_accum altmult_add altfp_sqrt divide lpm_abs lpm_add_sub lpm_compare lpm_counter lpm_divide 功能描述 浮点加法器、减法器模块 浮点参数化除法器宏模块 浮点参数化乘法器宏模块 参数化存储乘法器宏模块 参数化乘累加器宏模块 参数化乘加器宏模块 参数化整数平方根运算宏模块 参数化除法器宏模块 参数化绝对值运算宏模块( Altera 推荐使用) 参数化加法器-减法器宏模块(Altera推荐使 用) 参数化比较器宏模块(Altera推荐使用) 参数化计数器宏模块(Altera推荐使用) 参数化除法器宏模块(Altera推荐使用)
一、参数可设置模块库(续3)

门电路
序号
1 2 3 4 5 6 7
模块名称
ቤተ መጻሕፍቲ ባይዱ功能描述
lpm_and/or/xor 参数化与门模块/或门/异或门模块 lpm_bustri lpm_clshift lpm_constant lpm_decode lpm_inv lpm_mux 参数化三态缓冲器模块 参数化组合逻辑转化模块 参数化常数发生器模块 参数化解码器模块 参数化反向器模块 参数化多路转化器模块

硬件验证:用8个按键来表示乘数和被乘数(高4位和低4位) 如2*3,0010 0011,用8个LED表示乘机,00000110 。 该 部分请同学们自行完成
三、利用lpm_multi设计一个8位有 符号乘法器
主要参数表
序号 1 2 3 4 5 6 7 8 9 10 11 12 端口名称 dataa datab sum Clock Clken aclr result Lpm-widtha Lpm-widthb Lpm-widths LPMREPRESENTATION LPM-PIPELINE 功能描述 被乘数 乘数 部分和 输出时钟 时钟使能 异步清零 result=data*datab+sum dataa端口数据线宽度 datab端口数据线宽度 sum端口数据线宽度 选择“有符号数乘法”或者“无符号 数乘法” 流水线实现乘法器时,一次运算所需 时钟周期数

完成lpm_rom设置
添加定制 结果到当 前工程中
二、利用lpm-rom设计一个乘法器
例1 :采用 VHDL语言 顶层文件的设计
library ieee; use ieee.std_logic_1164.all; 两种形式:VHDL语言或者原理图调用lpm_rom模块 entity multip is --定义顶层实体 port(clk :in std_logic; a :in std_logic_vector(3 downto 0); --乘数a,即rom地址低4位 b :in std_logic_vector(3 downto 0); --乘数b,即rom地址高4位 q :out std_logic_vector(7 downto 0)); --乘积q ,即存储单元内存储数据为a×b end; architecture one of multip is component rom0 --调用rom0,即rom0.vhd声明 port(address :in std_logic_vector(7 downto 0); clock :in std_logic; q :out std_logic_vector(7 downto 0)); end component; begin u1:rom0 port map (clock=>clk,address(7 downto 4)=>b,address(3 downto 0)=>a,q=>q); end;
二、利用lpm-rom设计一个乘法器

设置数据文件显示格式 View→Cells Per Row
改变表格每行 显示单元个数
地址显示进制
存储数据显示 进制
二、利用lpm-rom设计一个乘法器

完成数据文件(九九乘法表)
地址低4位, 十六进制表示 9
地址高4位, 十六进制表示 9
存储数据 9 ×9=81
相关文档
最新文档