组合运算模块的VHDL设计.ppt

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

在硬件逻辑电路中,实际面对的数据对象总是逻辑量,能够直接形成的运算是逻辑运算。 算术运算可以看作是一种抽象的行为描述。组合运算电路主要包括加法器(adder)和 乘法器(multipliers)。 组合运算模块的VHDL设计 组合运算模块的设计特点 VHDL的算术运算可以采用不同方式进行: 利用算术量和算术运算进行行为描述。 利用signed和unsigned类型直接进行二 进制加减运算(对应于加法器); 直接设计加法的基本逻辑单元,再通过结构设计方式形成加法器和乘法器等功能单元。 组合运算模块的行为设计 直接利用VHDL中的加法运算和乘法运算可以对integer类型的数据进行运算。 例:一个4抽头的FIR滤波器的直接实现。 组合运算模块的行为设计 entity fir4 is port (x0,x1,x2,x3: in integer; h0,h1,h2,h3: in integer; y: out integer); end fir4; architecture beh of fir4 is begin y=x3*h0+x2*h1+x1*h2+x0*h3; end beh; 综合结果:需要使用15800个LUT ! 组合运算模块的行为设计 在数字逻辑电路中,通常进行的运算采用二进制形式,通过符号数或无符号数的运算规则进行; 为了体现这一特点,在算术运算包集合IEEE.std_logic_arith中,定义了signed和 unsinged 两种数据类型。 组合运算模块的行为设计 library ieee; use ieee.std_logic_arith.all; entity fir4 is port (x0,x1,x2,x3: in unsigned ( 15 downto 0 ); h0,h1,h2,h3: in unsigned ( 15 downto 0 ); y: out unsigned ( 31 downto 0 ) ); end fir4; architecture beh of fir4 is begin y=x3*h0+x2*h1+x1*h2+x0*h3; end beh; 综合结果:需要使用8194个LUT ! 组合运算模块的行为设计 y: out unsigned ( 15 downto 0 ) ); ---- architecture beh of fir4 is signal y0,y1,y2,y3: unsigned (31 downto 0); begin y0=x3*h0;y1=x2*h1;y2=x1*h2;y3=x0*h3; y=y0(31 downto 16)+y1(31 downto 16)+y2(31 downto 16)+y3(31 downto 16); end beh; 综合结果:需要使用7959个LUT ! 采用二进制符号数或无符号数,可以对运算过程进行更准确的描述。 signed和unsigned类型的特点 当两个二进制量进行相加时,若运算量中存在signed类型,结果就为signed类型;否则为unsinged 类型; 若结果被指定为std_logic_vector、 std_logic等类型,则signed或unsigned 类型的运算结果可以自动转为指定类型; signed和unsigned类型的特点 3 两个运算量长度不同时,运算结果的长度自动取为最长运算量的长度; 4 但若unsigned 类型与signed类型运算,会自动变为后一类型,则其长度会增加1(在最高位增加符号位‘0’); signed和unsigned类型的特点 对于通常所用的sdt_logic_vector类型的数据d,进行算术运算时,可以采用函数signed(d)将其转换为signed类型,或采用函数unsigned(d)将其转换为unsigned类型,运算完毕后,通过赋值语句将结果直接赋值给sdt_logic_vector类型的信号,即可恢复通用的类型; 各种运算结果的类型 entity vadd is port (a,b: in unsigned( 7 downto 0 ); c : in signed ( 7 downto 0 ); d : in std_logic_vector( 7 downto 0 ); s : out unsigned (8 downto 0);

文档评论(0)

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

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

1亿VIP精品文档

相关文档