重庆科创职业学院 实验7 三位乘法器(VHDL).ppt

重庆科创职业学院 实验7 三位乘法器(VHDL).ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重庆科创职业学院 实验7 三位乘法器(VHDL)

根据二进制数的乘法法则:0*0=0,0*1=0,1*0=0,1*1=1更可将算式中的结果进行简化。例如若B0=1, 则(A2B0)(A1B0)(A0B0)=A2A1A0;若B0=0,则(A2B0)(A1B0)(A0B0)=0 由于三位二进制数相乘的最大结果为111*111=110001,即数位为6位。而从算式中看经错位累加后数位还只有5位,故在程序设计中还应注意数位的处理。 计算过程中,乘数的每一位与被乘数相乘的中间结果需要进行一次加法运算。由于VHDL语言中对电路的输入端口的数据类型一般处理为逻辑型数据,所以此处出现了逻辑型数据做加法运算的情况。这也是在程序中需要处理的一个问题。 * 任务分析:三位乘法器的设计原理 1 知识准备:库与程序包 2 任务实施:三位乘法器的VHDL设计 3 任务七 三位乘法器的VHDL设计 * 一、任务分析:三位乘法器的设计原理 本次任务中所说的三位乘法器是指能实现三位二进制数的乘法运算的器件;其实二进制数的乘法与十进制数乘法类似,均可采用乘数的每一位均与被乘数相乘后错位累加。故也可与十进制乘法类似用算式的方式来表示运算过程,具体见下页图所示: 知识准备:电路工作原理 2 1、普通的赋值语句 将一个值或者一个表达式传递给某一个数据对象,如信号,变量,或由此组成的数组。 信号赋值语句 变量赋值语句 分类: 注意信号和变量的定义位置 赋值目标 赋值符号 组成: 赋值源 基本元素只能是信号和变量 变量“:=”信号“=” 可以是一个数值或者是一个逻辑或运算表达式 赋值目标与赋值源的数据类型必须严格一致。 2、VHDL库和程序包 库(Library)是用于存放预先编译好的程序包(Package),程序包中定义了数据集合体、逻辑操作和元件等。主要是声明在设计或实体中将用到的常量,数据类型,元件及子程序等。 库可以使设计者共享已经编译好的设计结果。 IEEE库:IEEE标准库 使用需声明 STD库:VHDL标准库 使用无需声明 ASIC库:EDA厂商提供库 使用需声明 WORK库:现行作业库,当前工作目录的所有设计 使用无需声明 USER库:用户自定义库 使用需声明 VHDL库的种类 库的用法 USE语句的使用有两种常用格式: USE 库名.程序包名.项目名 ; USE 库名.程序包名.ALL ; 例: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ; USE IEEE.STD_LOGIC_1164.ALL; 格式:LIBRARY 库名; USE 库名. 程序包名. All; 库说明的作用范围 从一个实体说明开始到其所属的结构体、配置为止。 当一个源程序中出现两个以上的实体时,必须重复说明。 例: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY example1 IS (……) END LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY example2 IS (……) END 返回 1、IEEE.STD_LOGIC_1164 程序包 用于说明STD_LOGIC数据类型; 2、IEEE.STD_LOGIC_ARITH 程序包 可用于说明rising_edge函数 3、IEEE.STD_LOGIC_UNSIGNED 程序包 可用于说明算术运算符的重载,即使得逻辑 数据可以实现算术运算 常用的VHDL库与程序包 任务实施:三位乘法器的VHDL设计 3 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; --进行加法运算符的重载 entity mul3 is port(a,b:in std_logic_vector(2 downto 0); y:out std_logic_vector(5 downto 0)); end mul3; --实体端口为三位的乘数和被乘数以及六位的积。 architecture behave of mul3 is signal temp1:std_logic_vector(2 downto 0); signal temp2:std_logic_vector(3 downto 0); signal temp3:std_logic_vector(4 downto 0);

您可能关注的文档

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档