资源描述:
《乘法累加器的设计与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、深圳大学考试答题纸(以论文、报告等形式考核专用)二○一二~二○一三学年度第二学期课程编号2213100601课程名称EDA技术主讲教师邓小莺评分学号2011130101姓名陈林泳专业年级11级电子信息工程教师评语:题目:乘法累加器的设计与实现一总体结构图设计思路和基本原理:寄存器A,B,C具有异步清零功能,当rst为1时,三个寄存器复位,当rst为0时,当时钟信号clk的上升沿到来时,寄存器的输出等于输入。因为系统输出Z既是结果输出,也可被内部引用,因此Z为buffer,而不是out。5位被乘数和乘数x,y输入后,
2、暂存在寄存器A,B中,保证数据能够受同一个时钟的控制参与运算。寄存器A,B的输出首先相乘,得到10位乘积,10位乘积与寄存器C的输出相加,加法器的输出即为系统的输出。当sel为1时,将系统的结果存放到寄存器C当中,实现乘法累加功能。当sel为0时,寄存器C清零,实现乘法功能。二主要功能模块组成图1.5位乘法器第8页共8页2.10位加法器三代码设计1.5位乘法器---主代码---libraryIEEE;第8页共8页useIEEE.STD_LOGIC_1164.ALL;usework.my_component.all;
3、entitymulisport(a,b:instd_logic_vector(4downto0);prod:outstd_logic_vector(9downto0));endmul;architectureBehavioralofmulistypematrixisarray(0to4)ofstd_logic_vector(3downto0);signals,c:matrix;beginu1:componenttop_rowportmap(a(0),b,s(0),c(0),prod(0));u2:component
4、mid_rowportmap(a(1),b,s(0),c(0),s(1),c(1),prod(1));u3:componentmid_rowportmap(a(2),b,s(1),c(1),s(2),c(2),prod(2));u4:componentmid_rowportmap(a(3),b,s(2),c(2),s(3),c(3),prod(3));u5:componentmid_rowportmap(a(4),b,s(3),c(3),s(4),c(4),prod(4));u6:componentlower_ro
5、wportmap(s(4),c(4),prod(9downto5));endBehavioral;---top_row---libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;usework.my_component.all;entitytop_rowisport(a:instd_logic;b:instd_logic_vector(4downto0);sout,cout:outstd_logic_vector(3downto0);p:outstd_logic);endtop_row;ar
6、chitectureBehavioraloftop_rowisbeginu1:componentand_2portmap(a,b(4),sout(3));u2:componentand_2portmap(a,b(3),sout(2));u3:componentand_2portmap(a,b(2),sout(1));u4:componentand_2portmap(a,b(1),sout(0));u5:componentand_2portmap(a,b(0),p);cout(3)<='0';cout(2)<='0'
7、;cout(1)<='0';cout(0)<='0';endBehavioral;第8页共8页---mid_row---libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;usework.my_component.all;entitymid_rowisport(a:instd_logic;b:instd_logic_vector(4downto0);sin,cin:instd_logic_vector(3downto0);sout,cout:outstd_logic_vector(3dow
8、nto0);p:outstd_logic);endmid_row;architectureBehavioralofmid_rowissignaland_out:std_logic_vector(3downto0);beginu1:componentand_2portmap(a,b(4),sout(3));u2:componentand_2portmap(a,