ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:72.49KB ,
资源ID:8898116      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8898116.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(乘法器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

乘法器.docx

1、乘法器乘法器用时序电路实现有两种方法:一种是被乘数累加法,将被乘数做乘数次的加法。当乘数较大时,加法的次数较多;另一种方法是移位相加法。做加法的次数少于等于乘数的位数,这是下面要介绍的。1. 算法:设乘数和被乘数的位数r(1) 两个r位的数相乘,乘积为2r位。(2) 积= r个“部分积”只和。(3) 当乘数的第i 位为0时,第i位的部分积为0。当乘数的第i 位为0时,第i位的部分积为乘数左移i1次。例: 另一种计算过程如下 2、处理器结构根据算法可以得到乘法器的结构。其中M是被乘数寄存器,Q是乘数寄存器、A是累加器,CNT是计数器。在A0AQ中放部分积。in1是乘数信号,in2是被乘数信号。3

2、、硬件描述语言(1) 系统描述(2) 寄存器M(mreg , 具有并入功能)当sl=0时保持;当sl=1时,在时钟触发时将输入信号存入,并送到加法器的一个入口。(3) 寄存器A、Q(areg、qreg具有并入功能、右移位功能、清零)当m=00时保持、当m=01时右移、当m=10时清零、当m=11时并入。图中e =q(0)(4) 计数器CNT(conut,有清零功能的模4计数器)当cr=00时同步清零,当cr=01时同步计数,当cr=11时保持。(5) 1位寄存器A0(adreg, 有清零功能)当a=0时同步清零,当a=1时锁存。(6) 加法器(add)(7) 状态机(contr)状态S0:等待

3、in1、in2信号就位,st为开始信号当st=1时,sl=0、m1=00、m2=00、a=0、cr=00,done=0并保持在S0;当st=0时,sl=1、m1=10、m2=11、a=0、cr=00,done=0进入S1状态。状态S1:当Q1=0时,sl=0、m1=00、m2=00、a=0、cr=11,done=0。当Q1=1时,sl=0、m1=11、m2=00、a=1、cr=11,done=0。在时钟触发后进入S2状态。状态S2:当q11时,sl=0、m1=01、m2=01、a=0、cr=01,done=0进入S1状态;当q=11时,sl=0、m1=01、m2=01、a=0、cr=01,do

4、ne=1进入S0状态。其中done=0表示计算未完成,done=1表示计算已完成。状态图如下和框图如下: 硬件描述语言如下:顶层(系统结构)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_Arith.ALL;ENTITY multiplier IS PORT( in1,in2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); st,clk : IN STD_LOGIC; done : OUT STD_LOGIC; product : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0)

5、; END multiplier;ARCHITECTURE arc_multiplier OF multiplier IS SIGNAL x1,y1,sum1,pp : STD_LOGIC_VECTOR(3 downto 0); SIGNAL a1,b1,c1,d1,e1,s : STD_LOGIC; SIGNAL m11,m21,cr1,qq1 : STD_LOGIC_VECTOR(1 downto 0);COMPONENT mreg PORT( sl, clk : IN STD_LOGIC; in1 : IN STD_LOGIC_VECTOR(3 downto 0); out1 : OUT

6、 STD_LOGIC_VECTOR(3 downto 0);END COMPONENT;COMPONENT qreg PORT( clk,dsr : IN STD_LOGIC; m : IN STD_LOGIC_VECTOR(1 DOWNTO 0); d : IN STD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); e : OUT STD_LOGIC);END COMPONENT;COMPONENT count PORT( clk : IN STD_LOGIC; cr : IN STD_LOGIC_VECTOR

7、(1 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT;COMPONENT adreg PORT( clk,a,c : IN STD_LOGIC; b : OUT STD_LOGIC);END COMPONENT;COMPONENT contr PORT( clk,st,q1 : IN STD_LOGIC; qq : IN STD_LOGIC_VECTOR(1 DOWNTO 0); sl,a,done : OUT STD_LOGIC; m1,m2,cr : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)

8、;END COMPONENT;COMPONENT add PORT( x, y : IN STD_LOGIC_VECTOR(3 downto 0); sum : OUT STD_LOGIC_VECTOR(3 downto 0); cout : OUT STD_LOGIC); END COMPONENT;BEGIN u1 : mreg port map(s,clk,in1,x1); u2 : qreg port map(clk,b1,m11,sum1,y1,d1); u3 : qreg port map(clk,d1,m21,in2,pp,e1); u4 : add port map(x1,y1

9、,sum1,c1); u5 : count port map(clk,cr1,qq1); u6 : adreg port map(clk,a1,c1,b1); u7 : contr port map(clk,st,e1,qq1,s,a1,done,m11,m21,cr1); product=y1&pp; END arc_multiplier;寄存器mregLIBRARY IEEE;USE IEEE.std_Logic_1164.ALL;ENTITY mreg IS PORT( sl, clk : IN STD_LOGIC; in1 : IN STD_LOGIC_VECTOR(3 downto

10、0); out1 : OUT STD_LOGIC_VECTOR(3 downto 0);END mreg;ARCHITECTURE arc_mreg OF mreg ISBEGIN PROCESS (clk) BEGIN IF clkEVENT AND clk=1 THEN IF sl=1 THEN out1q_tempq_tempq_tempq_tempNULL; END CASE; END IF; END PROCESS; q=q_temp; e=q_temp(0);END arc_qreg;计数器conutLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

11、ENTITY count IS PORT( clk : IN STD_LOGIC; cr : IN STD_LOGIC_VECTOR(1 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END count;ARCHITECTURE arc_count OF count ISSIGNAL cnt : STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS (clk) BEGIN IF (clkEVENT AND clk=1) THEN IF cr=00 THEN cnt cntcntcntcntNULL; END CA

12、SE; END IF; END IF; q = cnt; END PROCESS;END arc_count;1位寄存器adregLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY adreg IS PORT( clk,a,c : IN STD_LOGIC; b : out STD_LOGIC);END adreg;ARCHITECTURE arc_adreg OF adreg ISBEGIN PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN IF a=0 THEN b=0; ELSE b=c; END IF

13、; END IF; END PROCESS;END arc_adreg;加法器addLIBRARY IEEE;USE IEEE.Std_Logic_1164.all;ENTITY add IS PORT( x, y : IN STD_LOGIC_VECTOR(3 downto 0); sum : OUT STD_LOGIC_VECTOR(3 downto 0); cout : OUT STD_LOGIC);END add;ARCHITECTURE arc_add OF add IS SIGNAL g,p,c : STD_LOGIC_VECTOR(3 downto 0);BEGIN p(0) =

14、 x(0) XOR y(0); p(1) = x(1) XOR y(1); p(2) = x(2) XOR y(2); p(3) = x(3) XOR y(3); g(0) = x(0) AND y(0); g(1) = x(1) AND y(1); g(2) = x(2) AND y(2); g(3) = x(3) AND y(3); c(0) = g(0); c(1) = g(1) OR (p(1) AND g(0); c(2) = g(2) OR (p(2) AND g(1) OR (p(2) AND p(1) AND g(0); c(3) = g(3) OR (p(3) AND g(2

15、) OR (p(3) AND p(2) AND g(1) OR (p(3) AND p(2) AND p(1) AND p(0); cout = c(3); sum(0) = x(0) XOR y(0); sum(1) = x(1) XOR y(1) XOR c(0); sum(2) = x(2) XOR y(2) XOR c(1); sum(3) IF st=1 THEN sl=0; m1=00; m2=00; a=0; cr=00; done=0; ELSE sl=1; m1=10; m2=11; a=0; cr=00; done IF q1=0 THEN sl=0; m1=00; m2=

16、00; a=0; cr=11; done=0; ELSE sl=0; m1=11; m2=00; a=1; cr=11; done IF qq=11 THEN sl=0; m1=01; m2=01; a=0; cr=00; done=1; ELSE sl=0; m1=01; m2=01; a=0; cr=01; done NULL; END CASE; END PROCESS con; clo: PROCESS(clk) BEGIN IF clkEVENT AND clk=1 THEN CASE sta IS WHEN S0 = IF st=1 THEN sta=S0; ELSE stasta IF qq=11 THEN sta=S0; ELSE sta NULL; END CASE; END IF; END PROCESS clo; END arc_contr;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1