四位二进制乘法器课程设计报告_第1页
四位二进制乘法器课程设计报告_第2页
四位二进制乘法器课程设计报告_第3页
四位二进制乘法器课程设计报告_第4页
四位二进制乘法器课程设计报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、4位二进制乘法器课程设计报告目录 1 设计任务31.1 设计的目的31.2 设计要求32硬件描述语言VHDL32.1 VHDL简介33 设计规划过程63.1四位二进制乘法器的组成原理63.2乘法器的设计74 心得体会105 参考文献101 设计任务1.1 设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过对四位二进制乘法器的设计,巩固和综合运用所学课程,加深对数字电路和VHDL基本单元的理

2、解,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标,乘法器的设计可以使对计算机怎样工作有了更深了解,其实当初想到设计这个课题。1.2 设计要求1)构造一个4位二进制乘法器;2)受按键控制由4bit输入端口先后输入四位乘数和被乘数(乘数,被乘数均由HDB3码表示);3)用两个七段数码管显示积,以十进制显示;2硬件描述语言VHDL2.1 VHDL简介VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。

3、但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。 VHDL的英文全写是:VHSIC(Very High eed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/E

4、PLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL比其它硬件描述语言相比有以下

5、优点: (1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的

6、把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2 VHDL语言特点应用VHDL进行系统设计,有以下几方面的特点。(一)功能强大VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。(二)可移植性VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作

7、平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。(三)独立性VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。(四)可操作性由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。(五)灵活性VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行

8、仿真模拟。所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。3 设计规划过程3.1四位二进制乘法器的组成原理 本实验学习VHDL中乘法的使用。在VHDL语言中,一般有c(7 downto 0)=a(3 downto 0)*b(3 downto 0)。所以4位二进制数的乘积是8位二进制数,为了更符合习惯,我们把结果转化成了十进制。所以结果范围是0225,即015*15。 本实验采用的三位数在数码管上显示的方法是:分别确定百位、十位和个位。送数码管动态显示。采用与各个数逐一比较的方法确定。如百位的确定可以将结果与200和100比

9、较,若比200大则百位为2,在100到200之间则百位为1,小于100则百位为0,不显示。十位的确定可以将结果去掉百位,然后与10,20,.90比较而得。本文设计的四位二进制乘法器系统框图如图3.2所示。 clk led_data7.0a3.0 seg_sel2.0b3.0 multiply 图3.2 乘法器系统框图3.2乘法器的设计 四位二进制加法器和乘法器由VHDL实现后,利用EDA工具对各模块进行了时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程。VHDL语言设计如下:library ieee;use ieee.std_logic_1164.

10、all;use ieee.std_logic_unsigned.all; entity multiply is -构造体描述4位乘法器 port( clk:in std_logic; a,b:in std_logic_vector(3 downto 0); led_data:out std_logic_vector(7 downto 0); seg_sel:out std_logic_vector(2 downto 0) );end multiply; architecture rtl of multiply is signal led_data2,led_data1,led_data0: s

11、td_logic_vector(7 downto 0);-LED显示代码,寄存十位个位的数 signal displayclk: std_logic; beginprocess(a,b) variable s: std_logic_vector(7 downto 0);-乘积 variable bai,shiwei,gewei: std_logic_vector(3 downto 0);-乘积的十位个位 begin s(7 downto 0):=a(3 downto 0)*b(3 downto 0); if s=11001000 then bai:=0010;s:=s-11001000; -2

12、00以上 elsif s=01100100 then bai:=0001;s:=s-01100100; -100以上 else bai:=0000; end if; if s=01011010 then shiwei:=1001;s:=s-01011010;gewei:=s(3 downto 0);-90以上 elsif s=01010000 then shiwei:=1000;s:=s-01010000;gewei:=s(3 downto 0);-80以上 elsif s=01000110 then shiwei:=0111;s:=s-01000110;gewei:=s(3 downto 0

13、); -70以上 elsif s=00111100 then shiwei:=0110;s:=s-00111100;gewei:=s(3 downto 0);-60以上 elsif s=00110010 then shiwei:=0101;s:=s-00110010;gewei:=s(3 downto 0);-50以上 elsif s=00101000 then shiwei:=0100;s:=s-00101000;gewei:=s(3 downto 0);-40以上 elsif s=00011110 then shiwei:=0011;s:=s-00011110;gewei:=s(3 dow

14、nto 0);-30以上 elsif s=00010100 then shiwei:=0010;s:=s-00010100;gewei:=s(3 downto 0);-20以上 elsif s=00001010 then shiwei:=0001;s:=s-00001010;gewei:=s(3 downto 0);-10以上 else gewei:=s(3 downto 0);shiwei:=0000; end if; case bai is when 0001 = led_data2 led_data2 led_data2 led_data1 led_data1 led_data1 led

15、_data1 led_data1 led_data1 led_data1 led_data1 led_data1 led_data1 led_data1 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0 led_data0=11111111; end case;end process;process(clk) variable cnt:integer range 0 to 20000; -1KHZ扫描显示时钟begin if clkevent a

16、nd clk=1 then cnt:=cnt+1; if cnt10000 then displayclk=1; elsif cnt20000 then displayclk=0; else cnt:=0;displayclk=0; end if; end if;end process; process (displayclk) -显示两位 variable cnt2: std_logic_vector(1 downto 0);begin if displayclkevent and displayclk=1 then cnt2:=cnt2+1; if cnt2=01 then seg_sel

17、=001; led_data=led_data0; elsif cnt2=010 then seg_sel=010; led_data=led_data1; elsif cnt2=11 then cnt2:=00; seg_sel=100; led_data=led_data2; end if; end if;end process; end rtl;实验引脚分配如下:四位二进制乘法器仿真图如下所示: 仿真分析:clk为时钟脉冲输入信号,a,b是输出信号表示要参与运算的两个数,Led_data,seg_set为输出信号,表示计算的结果。144 心得体会通过这一段时间的紧张学习,最后完成了我的设

18、计任务四位二进制乘法器的设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识完成工作的能力。加法器和乘法器虽然是比较简单的设计课程,但它给了我一个锻炼的机会和检验的机会,也给我复习计算机组成原理这门课提供了方便。希望学校以后多安排一些类似的实践环节,让同学们学以致用。加法器和乘法器的设计让我对门电路更有清楚了解,对VHDL语言也有了一定的了解。加法器是计算机运算中的重要组成部分,而且是其他运算实现的基础。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,感谢肖晓丽老师耐心

19、的给我指出了错误,让我面对错误的检查有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,用来进行数字系统的设计方便灵活。5 参考文献1David A.Patterson.计算机组成和设计M.清华大学出版社,2003年12月2William Stallings.计算机组织与结构M.高等教育出版社,2001年8月3 曾繁泰,陈美金.VHDL程序设计M.清华大学出版社,2001

20、4 计算机毕业设计网.VHDL实用教程M.20125王爱英.计算机组成与结构M.清华大学出版社.2001年2月附件:加法器的VHDL语言设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add1 is - 1位全加器 port( a,b:in std_logic; cin:in std_logic; cout:out std_logic; s:out std_logic );end add1;architecture rt

21、l of add1 is begin process(a,b,cin) -列举所有情况对应的输出variable temp,temp1:std_logic; begin temp:=a xor b; temp1:= temp xor cin; cout=(temp and cin)or (a and b); s=temp1;end process;end rtl; -以上是对add1的定义library ieee; -整体组装use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.

22、all;entity adder4 is - 4位全加器 port( a0,a1,a2,a3:in std_logic; -四位二进制输出 b0,b1,b2,b3:in std_logic;-四位二进制输出 cin:in std_logic;-进位输入,本实验设为0 cout:out std_logic;-进位输出 s0,s1,s2,s3:out std_logic -和 );end adder4; architecture rtl of adder4 issignal cingnd:std_logic; -由于拨玛开关只有8个,故进位输入不接signal cout1,cout2,cout3:

23、std_logic;-第一位第二为第三位向高位进位输出component add1 is -元件例化语句,1位全加器 port( a,b:in std_logic; cin:in std_logic; cout:out std_logic; s:out std_logic );end component;begin cingnda0, -模块的名称映射 b=b0, cin=cingnd, cout=cout1, s=s0 );u2: add1 port map( a=a1, b=b1, cin=cout1, cout=cout2, s=s1 );u3: add1 port map( a=a2,

24、 b=b2, cin=cout2, cout=cout3, s=s2 );u4: add1 port map( a=a3, b=b3, cin=cout3, cout=cout, s=s3 );end rtl;乘法器的VHDL语言设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity multiply is -构造体描述4位乘法器 port( clk:in std_logic; a,b:in std_logic_vector(3 downto 0); led_data:out std

25、_logic_vector(7 downto 0); seg_sel:out std_logic_vector(2 downto 0) );end multiply; architecture rtl of multiply is signal led_data2,led_data1,led_data0: std_logic_vector(7 downto 0);-LED显示代码,寄存十位个位的数 signal displayclk: std_logic; beginprocess(a,b) variable s: std_logic_vector(7 downto 0);-乘积 variab

26、le bai,shiwei,gewei: std_logic_vector(3 downto 0);-乘积的十位个位 begin s(7 downto 0):=a(3 downto 0)*b(3 downto 0); if s=11001000 then bai:=0010;s:=s-11001000; -200以上 elsif s=01100100 then bai:=0001;s:=s-01100100; -100以上 else bai:=0000; end if; if s=01011010 then shiwei:=1001;s:=s-01011010;gewei:=s(3 downt

27、o 0);-90以上 elsif s=01010000 then shiwei:=1000;s:=s-01010000;gewei:=s(3 downto 0);-80以上 elsif s=01000110 then shiwei:=0111;s:=s-01000110;gewei:=s(3 downto 0); -70以上 elsif s=00111100 then shiwei:=0110;s:=s-00111100;gewei:=s(3 downto 0);-60以上 elsif s=00110010 then shiwei:=0101;s:=s-00110010;gewei:=s(3 downto 0);-50以上 elsif s=00101000 then shiwei:=0100;s:=s-00101000;gewei:=s(3 downto 0);-40以上 elsif s=00011110 then shiwei:=0011;s:=s-00011110;gewei:=s(3 downto 0);-30以上 elsif s=00010100 then shiwei:=0010;s:=s-00010100;gewei:=s(3 downto 0);-20以上 elsif s=00001010 then shiwei:=0001;s:=s-00001010;gewei:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论