八位加法器

八位加法器
八位加法器

大庆石油学院课程设计

课程硬件课程设计

题目八位加法器设计

院系计算机与信息技术学院

专业班级计算机科学与技术07-1班

学生姓名张媛媛

学生学号080702140405

指导教师李军

2010年7 月20 日

大庆石油学院课程设计任务书

课程硬件课程设计

题目八位加法器设计

专业计算机科学与技术姓名张媛媛学号 080702140405

主要内容、基本要求等

一、主要内容:

利用EL教学实验箱、微机和QuartusⅡ软件系统,使用VHDL语言输入方法设计八位加法器。要求可以利用层次设计方法,分为秒模块、分模块,时模块、扫描模块、LED和扬声器编码模块等,规定好模块与模块之间的接口,最后用原理图输入法连接各模块,将各模块合起来联试,仿真;也可以不分模块的直接编写整个程序,最后进行调试仿真和测试。

二、基本要求:

1.掌握多位计数器相连的设计方法。

2.掌握十进制,六进制,二十四进制计数器的设计方法。

3.继续巩固多位共阴级扫描显示数码管的驱动,及编码。

4.掌握扬声器的驱动。

5.LED灯的花样显示。

6.掌握EPLD技术的层次化设计方法。

7.按照规范写出论文,要求字数在4000字以上,并进行答辩。论文内容包括概述(学习、调研、分析、设计的内容摘要)、EDA技术的现状和发展趋势、对EL教学实验箱和Quartus Ⅱ软件的掌握程度、八位加法器的设计过程(包括原理图或程序设计、编译、仿真分析、硬件测试的全过程),论文中含有原理图、程序、仿真波形图及其分析报告。

完成期限第20周

指导教师李军

专业负责人袁满

2009年6 月29日

摘要

本文介绍了利用EL教学实验箱和微机上的QuartusⅡ等软件系统,使用VHDL语言输入方法和原理图设计八位加法器。

VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。

本文简单介绍EDA技术的发展史、说明QuartusⅡ的使用过程,阐述了八位加法器的设计与实现的相关过程。

关键词:EDA(电子设计自动化);VHDL(硬件描述语言);八位加法器;QuartusⅡ

目录

第1章概述 (1)

1.1EDA的概念 (1)

1.1.1 EDA技术及应用 (2)

1.1.2 EDA技术发展趋势 (2)

1.2EDA的工作平台 (3)

1.2.1 EDA硬件工作平台 (3)

1.2.2 EDA 的软件工作平台 (3)

第2章数字钟原理图设计 (4)

2.1数字钟原理流程图: (4)

2.2数字钟原理图: (5)

第3章数字钟程序设计 (6)

3.1数字钟详细分析 (6)

3.1.2实验原理 (6)

3.2数字钟的设计过程 (6)

3.2.1设计规划 (6)

3.2.2设计说明 (7)

3.3VHDL设计 (7)

3.3.1 数字钟源程序(VHDL语言编译) (7)

结论 (13)

参考文献 (14)

第1章概述

1.1 EDA的概念

EDA是电子设计自动化(Electronic Design Automation)的缩写。由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义[1]。但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片[2]。

EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。大致可以分为三个发展阶段。20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB布同布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。20世纪80年代的QAE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能[3]。20世纪90年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成[4]。

EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图;在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。特别是支持硬件描述语言的EDA 工具的出现,使复杂数字系统设计自动化成为可能,只要用硬件描述语言将数字系统的行为描述正确,就可以进行该数字系统的芯片设计与制造[5]。21世纪将是EDA技术的高速发展期,EDA技术将是对21世纪产生重大影响的十大技术之一。

硬件描述语言 : 硬件描述语言(HDL)是一种用于进行电子系统硬件设计的计算

机高级语言,它采用软件的设计方法来描述电子系统的逻辑功能、电路结构和连接形式。常用硬件描述语言有HDL、Verilog和VHDL语言[6]。

1.1.1 EDA技术及应用

电子EDA技术发展迅猛,逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。在教学方面:几乎所有理工科(特别是电子信息)类的高校都开设了EDA 课程。主要是让学生了解EDA的基本原理和基本概念、硬件描述系统逻辑的方法、使用EDA工具进行电子电路课程的模拟仿真实验并在作毕业设计时从事简单电子系统的设计,为今后工作打下基础。具有代表性的是全国每两年举办一次的大学生电子设计竞赛活动。在科研方面:主要利用电路仿真工具进行电路设计与仿真;利用虚拟仪器进行产品调试;将FPGA器件的开发应用到仪器设备中。在产品设计与制造方面:从高性能的微处理器、数字信号处理器一直到彩电、音响和电子玩具电路等,EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在后期的制作、电子设备的研制与生产、电路板的焊接、器件的制作过程等有重要作用。可以说电子EDA技术已经成为电子工业领域不可缺少的技术支持[7]。

1.1.2 EDA技术发展趋势

EDA技术在进入21世纪后,由于更大规模的FPGA器件的不断推出,在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断更新、增加,使电子EDA 技术得到了更大的发展。电子技术全方位纳入EDA领域,EDA使得电子领域各学科的界限更加模糊,更加互为包容,突出表现在以下几个方面:使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;基于EDA工具的ASIC设计标准单元已涵盖大规模电子系统及IP核模块;软硬件IP核在电子行业的产业领域、技术领域和设计应用领域得到进一步确认;SoC高效低成本设计技术的成熟。随着半导体技术、集成技术和计算机技术的迅猛发展,电子系统的设计方法和设计手段都发生了很大的变化。可以说电子EDA技术是电子设计领域的一场革命。传统的“固定功能集成块十连线”的设计方法正逐步地退出历史舞台,而基于芯片的设计方法正成为现代电子系统设计的主流。作为高等院校有关专业的学生和广大的电子工程师了解和掌握这一先进技术是势在必行,这不仅是提高设计效率的需要,更是时代发展的需求,只有掌握了EDA技术才有能力参与世界电子工业市场的竞争,才能生存与发展。随着科技的进步,电子产品的更新日新月异,EDA技术作为电子产品开发研制的源动力,已成为现代电子设计的核心。所以发展EDA技术将是电子设计领域和电子产业界的一场重大的

技术革命,同时也对电类课程的教学和科研提出了更深更高的要求。特别是EDA技术在我国尚未普及,掌握和普及这一全新的技术,将对我国电子技术的发展具有深远的意义。

1.2 EDA的工作平台

1.2.1 EDA硬件工作平台

1.计算机

2.EDA实验开发系统:EL教学实验箱。

1.2.2 EDA 的软件工作平台

PLD(Programmable Logic Device)是一种由用户根据需要而自行构造逻辑功能的数字集成电路。目前主要有两大类型:CPLD(Complex PLD)和FPGA(Field Programmable Gate Array)。它们的基本设计方法是借助于EDA软件,用原理图、状态机、布尔表达式、硬件描述语言等方法,生成相应的目标文件,最后用编程器或下载电缆,由目标器件实现。生产PLD的厂家很多,但最有代表性的PLD厂家为Altera、Xilinx和Lattice 公司。

我们采用了QuartusⅡ软件作为开发工具。

第2章数字钟原理图设计2.1 数字钟原理流程图:

图2-1 数字钟流程图时钟输入信号

秒模块时模块

分模块分频模块

8段数码管显示

时间设置模块进

报时模块显示模块

置数/位选

2.2 数字钟原理图:

图2-2 数字钟原理图

第3章数字钟程序设计

3.1 数字钟详细分析

3.1.1数字钟原理:

数字钟由分频器、计数器、译码显示、报时等电路组成。数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。BCD码经译码,驱动后接数码管显示电路。秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。分频器将输入的频率分为设计所需的两个时钟。

为了实现手动调整时间,在外部增加了S2(调整分钟),S1(调整小时)按键,当这两个按键为高电平时,电路正常计时,当为低电平时,分别调整分钟和小时。同时在外部还增加了一个复位按键Rst和扬声器SPK(整点报时)。

3.1.2实验原理

在同一EPLD芯片EPF10K10上集成了如下电路模块:

1.时钟计数:秒——60进制BCD码计数;

分——60进制BCDD码计数;

时——24进制BCDD码计数;

同时整个计数器有清零,调分,调时功能。在接近整数时间能提供报时信号。

2.具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。编码和扫描可参照“实验四”。

3.扬生器在整点时有报时驱动信号产生。

4. LED灯按个人口味在整点时有花样显示信号产生。

3.2 数字钟的设计过程

3.2.1设计规划

基于硬件描述语言(VHDL),利用EL教学实验箱及QuartusⅡ软件设计数字钟,实现实验要求的时钟计数功能,清零、调节分钟和小时功能,扬声器整点报时功能,8位八段共阴扫描数码管显示和LED花样显示。

3.2.2设计说明

本章节主要介绍用VHDL语言来描述数字钟,使用的是整体程序法,所有功能集成在同一程序中。

3.3 VHDL设计

3.3.1 数字钟源程序(VHDL语言编译)

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

------------------------------------------------------------------------------------------------------------ entity daclk is

port( Clk : in std_logic; --时钟输入

Rst : in std_logic; --复位输入

S1,S2 : in std_logic; --时间调节输入

SPK : out std_logic; --扬声器输出

Display : out std_logic_vector(7 downto 0); --八段码管显示输出

SEG_SEL : buffer std_logic_vector(2 downto 0) ;--八段码管扫描驱动

lam :out std_logic_vector(2 downto 0) );

end daclk;

--------------------------------------------------------------------------------------------------------- architecture behave of daclk is

signal Disp_Temp : integer range 0 to 15;

signal Disp_Decode : std_logic_vector(7 downto 0);

signal SEC1,SEC10 : integer range 0 to 9;

signal MIN1,MIN10 : integer range 0 to 9;

signal HOUR1,HOUR10 : integer range 0 to 9;

signal Clk_Count1 : std_logic_vector(13 downto 0);

signal Clk1Hz : std_logic;

signal Music_Count : std_logic_vector(2 downto 0);

signal count : std_logic_vector(1 downto 0);

signal lamp :std_logic_vector(2 downto 0);

begin

process(Clk) --产生1Hz 时钟的分频计数器begin

if(Clk'event and Clk='1') then

if(Clk_Count1<10000) then

Clk_Count1<=Clk_Count1+1;

else

Clk_Count1<="00000000000001";

end if;

end if;

end process;

Clk1Hz<=Clk_Count1(13);

process(Clk1Hz,Rst)

begin

if(Rst='0') then --系统复位

SEC1<=0;

SEC10<=0;

MIN1<=0;

MIN10<=0;

HOUR1<=0;

HOUR10<=0;

elsif(Clk1Hz'event and Clk1Hz='1') then

if(S1='0') then --调节小时

if(HOUR1=9) then

HOUR1<=0;

HOUR10<=HOUR10+1;

elsif(HOUR10=2 and HOUR1=3) then

HOUR1<=0;

HOUR10<=0;

else

HOUR1<=HOUR1+1;

end if;

elsif(S2='0') then --调节分钟

if(MIN1=9) then

MIN1<=0;

if(MIN10=5) then

MIN10<=0;

else

MIN10<=MIN10+1;

end if;

else

MIN1<=MIN1+1;

end if;

elsif(SEC1=9) then

SEC1<=0;

if(SEC10=5) then

SEC10<=0;

if(MIN1=9) then

MIN1<=0;

if(MIN10=5) then

MIN10<=0;

if(HOUR1=9) then

HOUR1<=0;

HOUR10<=HOUR10+1;

elsif(HOUR10=2 and HOUR1=3) then

HOUR1<=0;

HOUR10<=0;

else

HOUR1<=HOUR1+1;

end if;

else

MIN10<=MIN10+1;

end if;

else

MIN1<=MIN1+1;

end if;

else

SEC10<=SEC10+1;

end if;

else

SEC1<=SEC1+1;

end if;

end if;

end process;

process(Clk) --整点报时

begin

if(Clk'event and Clk='1') then

Music_Count<=Music_Count+1;

if(MIN10=5 and MIN1=9 and SEC10=5) then

if((SEC1 MOD 2)=0) then

SPK<=Music_Count(2);

else

SPK<='0';

end if;

elsif(MIN10=0 and MIN1=0 and SEC10=0 and SEC1=0) then SPK<=Music_Count(1);

else

SPK<='0';

end if;

end if;

end process;

process(clk1Hz) --LED灯

begin

lam<=lamp;

if (rising_edge(clk1Hz)) then

count <= count + 1;

if (count <= "10") then

if (count ="00") then

lamp <= "001" ;

elsif (count = "01") then

lamp<= "010" ;

elsif(count="10") then

lamp <= "100" ;

end if;

else

count <= "00";

end if;

end if;

end process ;

process(SEG_SEL) --显示排序begin

case (SEG_SEL+1) is

when "111"=>Disp_Temp<=HOUR10;

when "110"=>Disp_Temp<=HOUR1;

when "101"=>Disp_Temp<=10;

when "100"=>Disp_Temp<=MIN10;

when "011"=>Disp_Temp<=MIN1;

when "010"=>Disp_Temp<=10;

when "001"=>Disp_Temp<=SEC10;

when "000"=>Disp_Temp<=SEC1;

end case;

end process;

process(Clk) --扫描累加

begin

if(Clk'event and Clk='1') then

SEG_SEL<=SEG_SEL+1;

Display<=Disp_Decode;

end if;

end process;

process(Disp_Temp) --显示转换

begin

case Disp_Temp is

when 0=>Disp_Decode<="00111111";

when 1=>Disp_Decode<="00000110";

when 2=>Disp_Decode<="01011011";

when 3=>Disp_Decode<="01001111";

when 4=>Disp_Decode<="01100110";

when 5=>Disp_Decode<="01101101";

when 6=>Disp_Decode<="01111101";

when 7=>Disp_Decode<="00000111";

when 8=>Disp_Decode<="01111111";

when 9=>Disp_Decode<="01101111";

when 10=>Disp_Decode<="01000000";

when others=>Disp_Decode<="00000000";

end case;

end process;

end behave;

3.3.2 实验连线:

输入接口:

1.清零,调小时,调分钟信号Rst,S1,S2的引脚分别连接按键开关。

2.计数时钟信号CLK引脚同32HZ(或更高)时钟源相连。

输出接口:

1.扫描显示的驱动信号管脚SEG_SEL1,SEG_SEL2,SEG_SEL3接实验箱上的SEL0~

SEL2,Display(7 downto 0)分别接八位数码管显示模块的A~G。

2.扬声器驱动信号的管脚SPK同扬声器驱动接口SPEAKER IN相连。

3.到时花样LED灯显示的信号管脚LAMP0…LAMP2同3个LED灯相连。

4.到时LED灯闪烁提示的ENHOUR接LED灯。

结论

通过此次课程设计,让我对EDA这门技术有了更深的体会,并更好的学会了使用QuartusⅡ软件进行硬件设计。

此次课程设计时基于VHDL语言进行的数字钟设计,在课程设计时,我逐渐掌握了VHDL语言的语句及语法等的使用。但在学习过程中,也遇到了很多困难,由于刚刚学习EDA不久,所以很多细节内容都不是很了解,尤其时VHDL语言的运用。我先上网找了一些资料和程序,一点点的看,慢慢摸索着学习写语句。最后在老师和同学的帮助下,终于完成了数字钟的设计。

以后我会利用更多时间来学习EDA技术。

EDA技术有着非常好的发展前景,是进几年电子工业的发展趋向,中国的EDA行业发展十分迅速,有着很大的潜力。

参考文献

[1] 李国丽,朱维勇.电子技术实验指导书.合肥:中国科技大学出版社,2000

[2] 潘松,黄继业.EDA技术实用教程.北京:科学出版社,2002

[3] 郑家龙,王小海,章安元.集成电子技术基础教程.北京:高等教育出版社,2002

[4] 宋万杰,罗丰,吴顺君.CPLD技术及其应用.西安:西安电子科技大学出版社,

1999

[5] 卢杰,赖毅.VHDL与数字电路设计.北京:科学出版社,2001

[6] 王金明,杨吉斌.数字系统设计与Verilog HDL.北京:电子工业出版社,2002

[7] 刘明业,将敬旗,刁岚松等译.硬件描述语言Verilog.北京:清华大学出版社,

2001

[8] 孙富明,李笑盈.基于多种EDA工具的FPGA设计,电子技术应用,2002年1月,

第1期

[9] Altera Corporation,“QuartusII Help Version 2.0”

[10] Synopsys Incorporated,“FPGA Compiler II/FPGA Express VHDL Reference

Manual Version 1999,05”

大庆石油学院课程设计成绩评价表课程名称硬件课程设计

题目名称数字钟设计

学生姓名康艺学号070702140105 指导教

师姓名

李军职称副教授

序号评价项目指标满分评分

1 工作量、工作态

度和出勤率

按期圆满的完成了规定的任务,难易程度和工作

量符合教学要求,工作努力,遵守纪律,出勤率

高,工作作风严谨,善于与他人合作。

20

2 课程设计质量课程设计选题合理,计算过程简练准确,分析问

题思路清晰,结构严谨,文理通顺,撰写规范,

图表完备正确。

45

3 创新工作中有创新意识,对前人工作有一些改进或有

一定应用价值。

5

4 答辩能正确回答指导教师所提出的问题。30 总分

评语:

指导教师:年月日

实验一 八位全加器的设计

电子科技大学电子工程学院标准实验报告(实验)课程名称EDA技术与应用 姓名:孙远 学号:2010021030002 指导教师:窦衡 电子科技大学教务处制表

实验一八位全加器的设计 一、预习内容 1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程; 2.八位全加器设计原理。 二、实验目的 1.掌握图形设计方法; 2.熟悉QuartusⅡ软件的使用及设计流程; 3.掌握全加器原理,能进行多位加法器的设计。 三、实验器材 PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干 四、实验要求 1、用VHDL设计一个四位并行全加器; 2、用图形方式构成一个八位全加器的顶层文件; 3、完成八位全加器的时序仿真。 五、实验原理与内容 1、原理: 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。

2、实现框图: 1)四位加法器 四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。 通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。因此,减小进位的延迟对提高运算速度非常有效。下图是减少了进位延迟的一种实现方法。可见,将迭代关系去掉,则各位彼此独立,进位传播不复存在。因此,总的延迟是两级门的延迟,其高速也就自不待言。 2)八位加法器 用两个并行四位加法器实现一个八位加法器的框图如下:

采用kogge-stone tree 实现的32位超前进位加法器

采用kogge-stone tree 实现的32位超前进位加法器。 经过modelsim验证正确可用,在DC下综合成功 优点:速度快 缺点:运用了过多的寄存器,造成加法器面积较大 //文件名:add_4.v //模块名:add_4 // module add_32 (a,b,cin,s,co); input [31:0] a,b; input cin; output [31:0] s; output co; reg [31:0] G1,P1,G2,P2,G3,P3,G4,P4,G5,P5; reg [31:0] cout; wire[31:0] s,G0,P0; assign P0=a^b; assign G0=a&b; assign s=P0^{cout[31:0],cin}; assign co=cout[31]; always @(P0 or G0 or P1 or G1 or P2 or G2 or P3 or G3 or P4 or G4 or P5 or G5 ) begin P1[31:1]=P0[31:1]&P0[30:0]; G1[31:1]=G0[31:1]|P0[31:1]&G0[30:0]; G1[0]=G0[0]; P1[0]=P0[0]; P2[31:2]=P1[31:2]&P1[29:0]; G2[31:2]=G1[31:2]|P1[31:2]&G1[29:0]; G2[1:0]=G1[1:0]; P2[1:0]=P1[1:0]; P3[31:4]=P2[31:4]&P2[27:0]; G3[31:4]=G2[31:4]|P2[31:4]&G2[27:0]; G3[3:0]=G2[3:0]; P3[3:0]=P2[3:0]; P4[31:8]=P3[31:8]&P3[23:0]; G4[31:8]=G3[31:8]|P3[31:8]&G3[23:0]; G4[7:0]=G3[7:0]; P4[7:0]=P3[7:0]; P5[31:16]=P4[31:16]&P4[15:0]; G5[31:16]=G4[31:16]|P4[31:16]&G4[15:0]; G5[15:0]=G4[15:0]; P5[15:0]=P4[15:0]; cout=G5|P5&cin; end endmodule

8位全加器的设计

课程设计报告 课程名称数字逻辑课程设计 课题8位全加器的设计 专业计算机科学与技术 班级1202 学号34 姓名贺义君 指导教师刘洞波陈淑红陈多 2013年12月13日

课程设计任务书 课程名称数字逻辑课程设计 课题8位全加器的设计 专业班级计算机科学与技术1202 学生姓名贺义君 学号34 指导老师刘洞波陈淑红陈多审批刘洞波 任务书下达日期:2013年12月13日 任务完成日期:2014年01月21日

一、设计内容与设计要求 1.设计内容: 本课程是一门专业实践课程,学生必修的课程。其目的和作用是使学生能将已学过的数字电子系统设计、VHDL程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL或者Verilog HDL设计电子系统的流程和方法,采用Quartus II等工具独立应该完成1个设计题目的设计、仿真与测试。加强和培养学生对电子系统的设计能力,培养学生理论联系实际的设计思想,训练学生综合运用数字逻辑课程的理论知识的能力,训练学生应用Quartus II进行实际数字系统设计与验证工作的能力,同时训练学生进行芯片编程和硬件试验的能力。 题目一4线-16线译码器电路设计; 题目二16选1选择器电路设计; 题目三4位输入数据的一般数值比较器电路设计 题目四10线-4线优先编码器的设计 题目五8位全加器的设计 题目六RS触发器的设计; 题目七JK触发器的设计; 题目八D触发器的设计; 题目九十进制同步计数器的设计; 题目十T触发器的设计; 每位同学根据自己学号除以10所得的余数加一,选择相应题号的课题。 参考书目 1 EDA技术与VHDL程 序开发基础教程 雷伏容,李俊,尹 霞 清华大学出版 社 978-7-302-22 416-7 201 TP312VH/ 36 2 VHDL电路设计雷伏容清华大学出版 社 7-302-14226-2 2006 TN702/185 3 VHDL电路设计技术王道宪贺名臣? 刘伟 国防工业出版 社 7-118-03352-9 2004 TN702/62 4 VHDL 实用技术潘松,王国栋7-8106 5 7-81065-290-7 2000 TP312VH/1 5 VHDL语言100 例详解 北京理工大学A SIC研究所 7-900625 7-900625-02-X 19 99 TP312VH/3 6 VHDL编程与仿真王毅平等人民邮电出版 社 7-115-08641-9 20 00 7 3.9621/W38V 7 VHDL程序设计教程邢建平?曾繁泰清华大学出版 社 7-302-11652-0 200 5 TP312VH/27 /3

16位超前加法器实验报告

16位超前加法器设计实验 一、实验分析: 四位超前进位加法器HDL程序: module add4_head ( a, b, ci, s, pp, gg); input[3:0] a; input[3:0] b; input ci; output[3:0] s; output pp; output gg; wire[3:0] p; wire[3:0] g; wire[2:0] c; assign p[0] = a[0] ^ b[0]; assign p[1] = a[1] ^ b[1]; assign p[2] = a[2] ^ b[2]; assign p[3] = a[3] ^ b[3]; assign g[0] = a[0] & b[0]; assign g[1] = a[1] & b[1]; assign g[2] = a[2] & b[2]; assign g[3] = a[3] & b[3]; assign c[0] = (p[0] & ci) | g[0]; assign c[1] = (p[1] & c[0]) | g[1]; assign c[2] = (p[2] & c[1]) | g[2]; assign pp = p[3] & p[2] & p[1] & p[0]; assign gg = g[3] | (p[3] & (g[2] | p[2] & (g[1] | p[1] & g[0]))); assign s[0] = p[0] ^ ci; assign s[1] = p[1] ^ c[0]; assign s[2] = p[2] ^ c[1]; assign s[3] = p[3] ^ c[2]; endmodule p表示进位否决信号(pass),如果p为0就否决调前一级的进位输入。否决的意思就是即使前一级有进位,本级也不会向后一级产生进位输出。 g表示进位产生信号(generate),如果g为1就表示一定会向后一级产生进位输出。p[n] = a[n] ^ b[n]这句话的意思是说,当a=1,b=0或a=0,b=1时前一级的进位输入信号不能否决。这样就有个问题了,即当a=1,b=1时前一级的进位输入信号也不能否决啊,怎么没有体现出来?其实当a=1,b=1时产生了进位产生信号g,它的优先级高于p信号,就忽略了p信号,直接产生了向后一级产生进位输出,是没有逻辑错误的。 g[n] = a[n] & b[n] 这句话的意思是说,如果a=1,b=1时就直接向后一级产生进位输出信号,而不用考虑其它的任何因素。

四位超前进位加法器原理

超前进位加法器原理 74283为4位超前进位加法器,不同于普通串行进位加法器由低到高逐级进位,超前进位加法器所有位数的进位大多数情况下同时产生,运算速度快,电路结构复杂。其管脚如图1所示: 图1 74283管脚图 其真值表如下所示: 表1 4位超前进位加法器真值表

由全加器的真值表可得S i 和C i 的逻辑表达式: 定义两个中间变量G i 和P i : 当A i =B i =1时,G i =1,由C i 的表达式可得C i =1,即产生进位,所以G i 称为产生量变。若P i =1,则A i ·B i =0,C i =C i-1 ,即P i =1时,低位的进位能传 送到高位的进位输出端,故P i 称为传输变量,这两个变量都与进位信号无关。 将G i 和P i 代入S i 和C i 得: 进而可得各位进位信号的逻辑表达如下:

根据逻辑表达式做出电路图如下: 逻辑功能图中有2输入异或门,2输入与门,3输入与门,4输入与门,2输入或门,3输入或门,4输入或门,其转化成CMOS晶体管图如下:

电路网表如下: *xor 2 .subckt xor2 a b c d f mxorpa 1 a vdd vdd pmos l=2 w=8 mxorpb f d 1 vdd pmos l=2 w=8 mxorpc 2 b vdd vdd pmos l=2 w=8 mxorpd f c 2 vdd pmos l=2 w=8 mxorna f a 3 0 nmos l=2 w=4 mxornb 3 b 0 0 nmos l=2 w=4 mxornc f c 4 0 nmos l=2 w=4 mxornd 4 d 0 0 nmos l=2 w=4 .ends xor2 *and2 .subckt and2 a b f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=4 mandnb 1 b 0 0 nmos l=2 w=4 .ends and2 *and3 .subckt and3 a b c f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandpc f c vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=6 mandnb 1 b 2 0 nmos l=2 w=6 mandnc 2 c 0 0 nmos l=2 w=6 .ends and3 *and4 .subckt and4 a b c d f mandpa f a vdd vdd pmos l=2 w=4 mandpb f b vdd vdd pmos l=2 w=4 mandpc f c vdd vdd pmos l=2 w=4 mandpd f d vdd vdd pmos l=2 w=4 mandna f a 1 0 nmos l=2 w=8 mandnb 1 b 2 0 nmos l=2 w=8 mandnc 2 c 3 0 nmos l=2 w=8 mandnd 3 d 0 0 nmos l=2 w=8 .ends and4

8位全加器设计

基于原理图的8位全加器设计 实验目的:熟悉利用Quartus II的原理图输入方法设计简单的组合电路,掌握层次化设 计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。 实验原理:一个8位全加器可以由8个1位全加器串行构成,即将低位加法器的进位输 出cout与相临的高位加法器的最低位输入信号cin相接。 试验任务:1.完成半加器和全加器的设计。 2.建立一个更高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,完成编译、综合、适配、仿真和硬件测试。 实验步骤: 一、1位全加器设计 1.建立工程文件夹adder,路径d:\adder。 2.输入设计项目和存盘 原理图编辑输入流程如下: (1)打开Quartus II,选择file—>new命令,在弹出的窗口中选择block diagram/schematic file 选项,单击ok按钮后将打开原理图编辑窗口。 (2)在编辑窗口中的任何一个位置上右击,将弹出快捷菜单,选择inset—>symbol命令,将弹出元件输入对话框。 (3)单击“…”按钮,找到基本元件库路径d:/altera/90/quartus/libraries/primitives/logic项(假设软件安装在D盘),选中需要的元件,单击“打开”按钮,此元件即显示在窗口中,然后单击symbol窗口中的ok按钮,即可将元件调入原理图编辑窗口中。也可以在name栏输入需要的元件名。调入好元件和引脚后,连接好电路,再输入各引脚名。 (4)选择file—>save as命令,选择刚才为自己的工程建立的目录d:\adder,将已设计好的原理图取名为h_adder.bdf,并存盘此文件夹内。 3.将设计好的项目设置成可调用的元件 为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成可调用的元件。在打开半加器原理图文件的情况下,选择file—>create/update—>create symbol file for current file命令,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待高层次设计中调用。4.设计全加器顶层文件 打开一个原理图编辑窗口,方法同前。在新打开的原理图窗口中双击,在弹出的窗口中选择project选项,选择h_adder.bdf,并调入其他元件,连接好电路。以f_adder.bdf名存在同一路径d:\adder中。 二、8位全加器设计 1.将刚设计好的1位全加器设置成可调用的元件,方法同上。 2.调入元件,连接电路图,以8f_adder.bdf保存于同一路径d:\adder中的文件夹中。 3.将顶层文件8f_adder.bdf设置为工程。 4.编译与仿真 原理图与仿真波形分析:

四位二进制加法器课程设计

课题名称与技术要求 课题名称: 四位二进制加法器设计 技术要求: 1)四位二进制加数与被加数输入 2)二位数码管显示 摘要 本设计通过八个开关将A3,A2,A1,A0和B3,B2,B1,B0信号作为加数和被加数输入四位串行进位加法器相加,将输出信号S3,S2,S1,S0和向高位的进位 C3通过译码器Ⅰ译码,再将输出的Y3,Y2,Y1,Y0和X3,X2,X1,X0各自分别通过一个74LS247译码器,最后分别通过数码管BS204实现二位显示。 本设计中译码器Ⅰ由两部分组成,包括五位二进制译码器和八位二进制输出器。信号S3,S2,S1,S0和向高位的进位C3输入五位二进制-脉冲产生器,将得到的n(五位二进制数码对应的十进制数)个脉冲信号输入八位二进制输出器,使电路的后续部分得以执行。 总体论证方案与选择 设计思路:两个四位二进制数的输入可用八个开关实现,这两个二进制数经全加器求和后最多可以是五位二进制数。本题又要求用两个数码管分别显示求和结果的十进制十位和各位,因此需要两个译码器Ⅱ分别译码十位和

个位。综上所述,需要设计一个译码器Ⅰ,能将求和得到的五位二进制数译成八位,其中四位表示这个五位二进制数对应十进制数的十位,另四位表示个位。而译码器Ⅱ有现成的芯片可选用,此处可选74LS247,故设计重点就在译码器Ⅰ。 加法器选择 全加器:能对两个1位二进制数进行相加并考虑低位来的进位,即相当于3个1位二进制数相加,求得和及进位的逻辑电路称为全加器。或:不仅考虑两个一位二进制数相加,而且还考虑来自低位进位数相加的运算电路,称为全加器。 1)串行进位加法器 构成:把n位全加器串联起来,低位全加器的进位输出连接到相邻的高位全加器的进位输入。 优点:电路比较简单。 最大缺点:进位信号是由低位向高位逐级传递的,运算速度慢。 2)超前进位加法器 为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所消耗的时间,于是制成了超前进位加法器。 优点:与串行进位加法器相比,(特别是位数比较大的时候)超前进位加法器的延迟时间大大缩短了。 缺点:电路比较复杂。 综上所述,由于此处位数为4(比较小),出于简单起见,这里选择串行进位加法器。 译码器Ⅱ选择 译码是编码的逆过程,将输入的每个二进制代码赋予的含意“翻译”过来,给出相应的输出信号。译码器是使用比较广泛的器材之一,主要分为:变量译码器和码制译码器,其中二进制译码器、二-十进制译码器和显示译码器三种最典型,使用十分广泛。显示译码器又分为七段译码器和八段

超前进位加法器设计报告

存档资料成绩: 华东交通大学理工学院 课程设计报告书 所属课程名称EDA课程设计 题目超前进位加法器设计 分院 专业班级 学号 学生姓名 指导教师 2013 年7月2日

目录 第一章设计内容与要求 (3) 第二章超前进位加法器设计原理 (3) 第三章详细设计流程 (4) 3.1.创建工程文件 (4) 3.2.程序的编译 (5) 3.3.波形的仿真 (7) 第四章设计结果分析 (11) 第五章源程序代码 (12) 第六章心得体会 (14) 第七章参考文献 (15)

第一章设计内容与要求 加法运算是最重要也是最基本的运算,所有的其他基本运算,如减、乘、除运算最终都能归结为加法运算。但因为加法运算存在进位问题,使得某一位计算结果的得出和所有低于他的位相关。因此为了减少进位传输所消耗的时间,提高计算速度,人们设计了多种类型的加法器,如跳跃进位加法器、进位选择加法器、超前进位加法器等。本设计采用的是超前进位加法器。通过Verilog 设计一个超前8位加法器。 要求在Quartus II软件下,利用Verilog编程完成层次式电路设计,电路中的元件可以用Verilog设计也可以用库元件连线构成再封装。8位超前进位加法器,借助EDA工具中的综合器,适配器,时序仿真器和编程器等工具进行相应处理。适配采用Cyclone系列的EP1C6Q240C8。 要求综合出RTL电路,并进行仿真输入波形设计并分析电路输出波形. 试比较并阐述数据类型reg型和wire型的区别。 第二章超前进位加法器设计原理 将n个全加器相连可得n位加法器,但是加法时间较长。解决的方法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。超前进位产生电路是根据各位进位的形成条件来实现的 首先对于1位加法器基本位值和与进位输出为1;如果a,b有一个为1,则进位输出等于cin; 令G=ab,P=a+b,则有: Cout==ab+(a+b)cin=G+P?cin 由此可以G和P来写出4位超前进位链如下(设定四位被加数和加数为A

八位二进制加法器课程设计

长安大学电子技术课程设计 课题名称______________ 班级______________ 姓名______________ 指导教师 日期______________

前言 8位二进制加法器,它的功能主要是实现两个8位二进制数的相加,其结果的范围应该在00000000到111111110之间,即000到510之间。加法器在实际应用中占据着十分重大的地位,从我们呱呱坠地起,到小学,到初中,到高中,到大学,到工作,等等。我们能离开加法吗,不能!加法可以说是一切运算的基础,因此8位二进制加法器的设计是很有必要的。 那么我们如何设计一个8位二进制加法器呢?在实际应用中,我们通常输入的是十进制数,一个八位二进制数所对应的最大的十进制数是255,于是输入两个范围在000到255之间的数,首先通过二-十进制编码器将输入的三位十进制数的个位、十位、百位分别转换为8421BCD码,得到两个十二位字码,再通过加法器将它们相加,逢10进1,得到一个新的十二位字码,再用7447数字显示译码器将这个十二位字码还原到原来的三位十进制数。最后输出的就是一个三位十进制数,其范围在000到510之间。通过上述方法我们实现了八位二进制数的相加,从而达到了题目的要求。 为实现上述目的,我们需要查阅相关资料。通过查阅,理解以及加以运用,我们认识到了收集资料的不易性,但同时也得到了不少收获,可以说是有苦有甜。同时,虽然我们基本设计出了这个八位二进制加法器,但是不必可避免地会产生一些问题,比如说在连线上可能有更简便的途径,在元件的选用上可能还有其它更简便的方法,在控制上可能还不够精简,等等。我们希望在以后的实践中能找出更好的方法,也希望能吸取这次设计中的不足,逐渐改善。另外,在电子设计的过程中,与同组同学之间的合作配和是十分重要的。我在此次设计中也充分认识到这一点的重要性,我相信这次的电子设计能够为我们将来的工作奠定一定的基础。

作业-基于verilog HDL的八位超前进位加法器

基于verilog HDL的八位超前进位加法器 Verilog 综合作业陈孙文 2011-10-25 指导老师:邓婉玲老师目录: 1. 超前进位加法器原理 2. 算法代码 3. modelsim SE软件实现功能仿真 4. synplify pro软件实现综合 正文: 一、原理 (1)、全加器 列出真值表如表所示,若Ai、Bi两个一位二进制数相加,以Ci表示来自低位的的进位,Si表示和,Ci表示向高位的进位,可以看出该电路考虑来低位的进位,是一个一位数的全加器电路,其逻辑符号如图所示。 串并行超前进位加法器的特点是:各级进位信号同时产生,减小或消除因进位信号逐级传递所用的时间。每一位的进位信号不依赖于从低位逐级传递,而是—开始就能确定。 全加器真值可以得到逻辑表达式: 为表达简单,定义两个中间变量Gi和Pi 得出 得到各位进位信号的逻辑表达式为:

当实际位数较多时,往往将全部数位按4位一组分成若干组,组内采用超前进位,组间采用串行进价,组成所谓的串并行进位加法器。 二、算法代码:有4bits.v、8bits.v、testbench.v三个文件; 4bits.v实现输入为4位数的加法器;8bits.v中调用4bits.v中的函数来实现8位数相加;testbench.v 为测试代码; 实现四位加法4bits.v部分: module fast_adder4b(ina,inb,carry_in,sum_out,clk,rst_n); parameter ADDER_WIDTH=4; parameter SUM_WIDTH=5; input [ADDER_WIDTH-1:0]ina; //输入数ina,8位 input [ADDER_WIDTH-1:0]inb; //输入数inb,8位 input carry_in; input rst_n; input clk; output [SUM_WIDTH-1:0] sum_out; reg [SUM_WIDTH-1:0] sum_out; wire [ADDER_WIDTH-1:0]sg; wire [ADDER_WIDTH-1:0]sp; wire [ADDER_WIDTH-1:0]sc; assign sg[0]=ina[0]&inb[0]; //中间变量G0=ina0&inb0; assign sg[1]=ina[1]&inb[1]; assign sg[2]=ina[2]&inb[2]; assign sg[3]=ina[3]&inb[3]; assign sp[0]=ina[0]^inb[0]; //中间变量P0=ina0^inb0; assign sp[1]=ina[1]^inb[1]; assign sp[2]=ina[2]^inb[2]; assign sp[3]=ina[3]^inb[3]; assign sc[0]=sg[0]|(sp[0]&carry_in); //进位位C0 assign sc[1]=sg[1]|(sp[1]&(sg[0]|(sp[0]&carry_in))); assign sc[2]=sg[2]|(sp[2]&(sg[1]|(sp[1]&(sg[0]|(sp[0]&carry_in))))); assign sc[3]=sg[3]|(sp[3]&(sg[2]|(sp[2]&(sg[1]|(sp[1]&(sg[0]|(sp[0]&carry_in))))))); always@(posedge clk or negedge rst_n) begin if(!rst_n) sum_out<=5'b00000; else

用原理图方法设计8位全加器

实验报告一 一、实验目的 熟悉利用QuartusII的原理图输入方法设计简单电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。 二、实验内容 1.根据工作原理,完成1位半加器和全加器的设计; 2.建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成 编译、综合、适配、仿真。 三、实验环境 计算机、QuartusII软件 四、实验步骤 1.根据半加器工作原理,建立电路并仿真,并将元件打包。 (1)电路 (2)仿真: 仿真结果分析:S为和信号,当A=1,B=0或A=0,B=1时,和信号S为1,否则为0.当A=B=1时,产生进位信号,及CO=1。 (3)打包后的文件:

2.利用半加器构成一位全加器,并打包。 (1)电路 (2)仿真 仿真结果分析:CI为来自低位的进位,S=A xor B xor CI,即:当A,B,CI中有一位为高电平‘1’或者三位同时高电平为‘1’,则S=1,否则S=0;当A,B,CI有两位或者三位同为高电平‘1’时,产生进位信号CO=‘1’。 (3)打包后的文件 3.利用全加器构成8位全加器,并完成编译、综合、适配、仿真。 (1)电路

(2)仿真 仿真结果分析:八位全加器,和S分别与A,B 对应。当来自第七位的进位信号为‘1’、A 的最高位和B的最高位三者有两个位高电平‘1’时,则产生进位信号CO=‘1’。 五、实验结果与讨论 实验的仿真结果与预计的结果一致,所以所设计的电路是正确的。不足的地方有: 1、对软件还不够熟悉,所以操作的有点慢;

2、设计电路时,由于数字电路的知识有些开始淡忘了,所以应当及时去补 缺补弱。 六、总结 思考题:为了提高加法器工作速度,如何改进以设计的进位方式? 答:采用超前进位。串行加法器的第i位进位是由0~(i-1)决定的,而超前进位是事先得出每一位全加器的进位输出信号,而无需再从低位开始向高位逐位传递进位信号了,这就有效地提高了工作速度了。

超前进位加法器设计实验

四川大学计算机学院、软件学院 实验报告学号:姓名:专业:班级:第周 课程 名称 计算机组成原理实验课时 实验 项目 超前进位加法器设计实验实验时间 实验目的1.掌握超前进位加法器的原理及其设计方法。 2.熟悉CPLD应用设计及EDA软件的使用 实验 环境 TD-CMA实验系统一台,PC机一台 实验内容(算法、程序、步骤和方法)1.实验原理: 加法器是执行二进制加法运算的逻辑部件,也是CPU运算器的基本逻辑部件(减法可以通过补码相加来实现)。加法器又分半加器和全加器,不考虑低位的进位,只考虑两个二进制数相加,得到和以及向高位进位的加法器叫半加器,而全加器是在半加器的基础上又考虑了低位进来的进位信号。 全加器的逻辑表达式为:S=ABCi+ABCi+ABCi+ABCi C0=AB+ACi+BCi 串行加法器运算速度慢,其根本原因是每一位的结果都要依赖于低位的进位,因而可以通过并行进位的方式来提高效率。只要能设计出专门的电路,使得每一位的进位能够并行地产生 而与低位的运算情况无关,就能解决这个问题。可以对加法器进位的逻辑表达式做进一步

的推 导: C0 = 0 C i+1 = A i B i + A i C i + B i C i = A i B i + (A i + B i)C i 设 g i = A i B i p i = A i + B i 则有: C i+1 = g i + p i C i = g i + p i(g i-1 + p i-1C i-1) = g i + p i(g i-1 + p i-1(g i-2 + p i-2C i-2)) … = g i + p i (g i-1 + p i-1(g i-2 + p i-2(…(g0 + p0C0)…))) = g i + p i g i-1 + p i p i-1g i-2 + … + p i p i-1…p1g0 + p i p i-1…p1p0C0 由于g i、p i 只和A i、B i 有关,这样C i+1 就只和A i、A i-1、…、A0,B i、B i-1、…、B0 及C0 有关。所以各位的进位C i、C i-1、…、C1 就可以并行地产生,这种进位就叫超前进位。根据上面的推导,随着加法器位数的增加,越是高位的进位逻辑电路就会越复杂,逻辑器件使用也就越多。事实上我们可以继续推导进位的逻辑表达式,使得某些基本逻辑单元能够复 用,且能照顾到进位位的并行产生。 定义 G i,j = g i + p i g i-1 + p i p i-1g i-2 + … + p i p i-1…p j+1g j P i,j = p i p i-1…p j+1p j 则有 G i,i = g i P i,i = p i

利用Quartus II软件和原理图输入法设计八位加法器

摘要 Quartus II是最高级和复杂的,用于system-on-a-programmable-chip (SOPC)的设计环境。Quartus II提供完善的timing closure 和LogicLock 基于块的设计流程。QuartusII design是唯一一个包括以timing closure 和基于块的设计流为基本特征的programmable logic device (PLD)的软件。Quartus II 设计软件改进了性能、提升了功能性、解决了潜在的设计延迟等,在工业领域率先提供FPGA与mask-programmed devices开发的统一工作流程。 本文介绍了微机上的QuartusⅡ软件系统的使用,并用该软件分别设计半加器,全加器,并编译连接设计一个8位加法器的过程。 关键词:8位加法器;EDA(电子设计自动化);QuartusⅡ(可编程逻辑软件)

目录 第1章概述 (1) 1.1EDA的概念 (1) 1.2硬件描述语言概述 (2) 第2章QUARTUS II (4) 2.1QUARTUSII概述 (4) 2.2QUARTUSII建立工程项目 (4) 2.3QUARTUSII建立原理图输入文件 (6) 2.4QUARTUSII层次化项目设计 (9) 第3章8位加法器设计 (12) 3.18位加法器分析 (12) 3.2设计过程 (12) 参考文献 (15) 结论 (16)

第1章概述 1.1 EDA的概念 EDA是电子设计自动化(Electronic Design Automation)的缩写,从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义。但从EDA技术的几个主要方面的内容来看,可以理解为EDA技术就是以计算机为工具,设计者在EDA软件平台上,以硬件描述语言为系统逻辑描述的主要表达方式完成设计文件,然后由计算机自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度[1]。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。 EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。大致可以分为三个发展阶段。20世纪70年代的CAD(计算机辅助设计)阶段:这一阶段的主要特征是利用计算机辅助进行电路原理图编辑,PCB 布同布线,使得设计师从传统高度重复繁杂的绘图劳动中解脱出来。20世纪80年代的QAE(计算机辅助工程设计)阶段:这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能[2]。20世纪90年代是EDA(电子设计自动化)阶段:这一阶段的主要特征是以高级描述语言,系统级仿真和综合技术为特点,采用“自顶向下”的设计理念,将设计前期的许多高层次设计由EDA工具来完成[3]。 1.1.1 EDA的发展 从目前的EDA技术来看,中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板和小型ASIC领域,仅有小部分的设计人员工发复杂的片上系

超前进位加法器设计

湖南师范大学职业技术学院(工学院)实验数据报告单 实验课程:计算机组成原理 实验题目:超前进位加法器设计 实验日期: 2011年 10 月 25 日 专业:计算机科学与技术年级:09级班级:04班姓名:涂小康学号:2009180414 一.实验目的 (1)掌握超前进位加法器的原理及其设计方法。 (2)熟悉CPLD应用设计及EMA软件的使用。 二.实验内容 (1)设计电路原理图. (2)了解加法器的工作原理,掌握超前进位产生电路的设计方法. (3)正确将电路原理图下载到试验箱中. (4)正确通过实验箱连线实现4位二进制数的相加并得到正确结果 三.实验原理 加法器是执行二进制加法运算的逻辑部件,也是CPU运算器的基本逻辑部件(减法可以通过补码相加来实现)。加法器又分半加器和全加器,不考虑低位的进位,只考虑两个二进制数相加,得到和以及向高位进位的加法器叫半加器,而全加器是在半加器的基础上又考虑了低位进来的进位信号。 串行加法器运算速度慢,其根本原因是每一位的结果就要依赖于低位的进位,因而可以通过并行进位的方式来提高效率。只要能设计出专门的电路,使得每一位的进位能够并行地产生而与低位的运算情况无关,就能解决这个问题。可以对加法器进位的逻辑表达式做进一步的推导: C o=0 C i+1=A i B i+A i C i+B i C i=A i B i+(A i+B i)C i 设 G i=A i B i P i=A i+B i 则有: C i+1=g i+p i C i =g i+p i(g i-1+p i-1C i-1) =g i+p i(g i-1+p i-1(g i-2+p i-2C i-2)) … =g i+p i g i-1+p i p i-1g i-2+…+p i p i-1… p1p0+p i p i-1…p1p0C0 由于g i、p i只和A i、B i有关,这样C i=1就只和A i、A i-1、…、A0,B i、B i-1、…、B0及C0有关。所以各位的进位C i、C i-1…、C1就可以并行产生,这种进位就叫超前进位。 根据上面的推导,随着加法器位数的增加,越是高位的进位逻辑电路就会越复杂,逻辑器件使用也就越多。事实上我们可以继续推导进位的逻辑表达式,使得某些基本逻辑单元能够复用,且能照顾到进位位的并行产生。 定义:G i,j=g i+P i g i-1+p i p i-1g i-2+…+p i p i-1…p j+1g j P i,j=p i p i-1…p j+1p j 则有 G i,j=g i P i,j=p i

八位加法器设计实验报告

实验四:8位加法器设计实验 1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。 2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 3.实验任务:完成半加器,全加器,八位加法器设计,使用例化语句,并将其设计成一个原件符号入库,做好程序设计,编译,程序仿真。 1)编译成功的半加器程序: module h_adder(a,b,so,co); input a,b; output so,co; assign so=a^b; assign co=a&b; endmodule 2)编译成功的全加器程序: module f_adder(ain,bin,cin,cout,sum); output cout,sum;input ain,bin,cin; wire net1,net2,net3; h_adder u1(ain,bin,net1,net2); h_adder u2(.a(net1),.so(sum),.b(cin),.co(net3));

or u3(cout,net2,net3); endmodule 3)编译成功的八位加法器程序: module f_adder8(ain,bin,cin,cout,sum); output [7:0]sum; output cout;input [7:0]ain,bin;input cin; wire cout0, cout1, cout2 ,cout3, cout4,cout5,cout6; f_adder u0(.ain(ain[0]),.bin(bin[0]),.cin(cin),.sum(sum[0]),.cout(cout0)); f_adder u1(.ain(ain[1]),.bin(bin[1]),.cin(cout0),.sum(sum[1]),.cout(cout1 )); f_adder u2(.ain(ain[2]),.bin(bin[2]),.cin(cout1),.sum(sum[2]),.cout(cout2 )); f_adder u3(.ain(ain[3]),.bin(bin[3]),.cin(cout2),.sum(sum[3]),.cout(cout3 )); f_adder u4(.ain(ain[4]),.bin(bin[4]),.cin(cout3),.sum(sum[4]),.cout(cout4 )); f_adder

超前进位加法器的设计分解

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计课程设计题目:超前进位加法器的设计院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2014年01月10日

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (2) 1.1设计原理 (2) 1.2设计思路 (3) 1.3设计环境 (3) 第2章详细设计方案 (4) 2.1顶层方案图的设计与实现 (4) 2.1.1顶层方案的整体设计 (4) 2.1.2元器件选择和引脚锁定 (5) 2.2功能模块的设计与实现 (6) 2.2.1 八位超前进位加法器的设计与实现 (6) 2.3功能仿真调试 (8) 第3章编程下载与硬件测试 (10) 3.1编程下载 (10) 3.2硬件测试及结果分析 (10) 参考文献 (12) 附录 (13)

第1章总体设计方案 1.1 设计原理 将n个全加器相连可得n位加法器,但是加法时间较长。解决的方法之一是采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。超前进位产生电路是根据各位进位的形成条件来实现的。 四位超前进位加法器的设计: ①只要满足下述两个条件中的任一个,就可形成C1,(1)X1,Y1均为1;(2)X1,Y1任一个为1,且进位C0为1。由此,可以得到C1的表达式为:C1=X1*Y1+(X1+Y1)*C0; ②只要满足下述条件中任一个即可形成C2,(1)X2,Y2均为1;(2)X2,Y2任一为1,且X1,Y1均为1;(3)X2,Y2任一为1,同时X1,Y1任一为1,且C0为1。由此,可以得到C2的表达式为:C2=X2*Y2+(X2+Y2)*X1*Y1+(X2+Y2)*(X1+Y1)*C0; ③同理,有C3,C4表达式如下: C3=X3*Y3+(X3+Y3)*X2*Y2+(X3+Y3)*(X2+Y2)*X1*Y1 +(X3+Y3)*(X2+Y2)*(X1+Y1)*C0; C4=X4*Y4+(X4+Y4)*X3*Y3+(X4+Y4)*(X3+Y3)*X2*Y2 +(X4+Y4)*(X3+Y3)*(X2+Y2)*X1*Y1+(X4+Y4)*(X3+Y3)*(X2+Y2)*(X1+Y1)*C0。 引入进位传递函数Pi和进位产生函数Gi。它们的定义为: Pi=Xi+Yi Gi=Xi*Yi P1的意义是:当X1,Y1中有一个为1时,若有进位输入,则本位向高位传送此进位,这个进位可以看成是低位进位越过本位直接向高位传递的。G1的意义是:当X1,Y1均为1时,不管有无进位输入,本位定会产生向高位的进位。 将Pi、Gi代入C1到C4式子中,便可得到: C1=G1+P1*C0;式(1.1.1)

8位全加器

目录 一、设计目的和要求 (1) 1.课程设计目的 (1) 2.课程设计的基本要求 (1) 3.课程设计类型 (1) 二、仪器和设备 (1) 三、设计过程 (1) 1.设计内容和要求 (1) 2.设计方法和开发步骤 (2) 3.设计思路 (2) 4.设计难点 (4) 四、设计结果与分析 (4) 1.思路问题以及测试结果失败分析 (4) 2.程序简要说明 (5) 五、心得体会 (9) 六、参考文献 (9)

一、设计目的和要求 1.课程设计目的 设计一个带进位的八位二进制加法计数器:要求在MAX+plusⅡ10.2软件的工作平台上用VHDL语言层次设计出一个带进位的八位二进制加法器,并通过编译及时序仿真检查设计结果。 2.课程设计的基本要求 全加器与带进位输入8位加法器设计要求我们通过8位全加器的设计掌握层次化设计的方法,充分理解全加器的设计过程,掌握一位全加器的程序,熟悉MAX+plusⅡ10.2软件的文本和原理图输入方法设计简单组合电路。 课程设计过程中要求能实现同步和异步的八位二进制全加器的设计。 3.课程设计类型 EDA课程设计 二、仪器和设备 PC机、MAX+plusⅡ10.2软件 三、设计过程 1.设计内容和要求 方法一: 1.原理图输入完成半加器和1位全加器的设计,并封装入库 2.层次化设计,建立顶层文件,由8个1位全加器串联构成8位全加器 3.每一层次均需进行编译、综合、适配及仿真 方法二: 1. 原理图输入完成一个四位全加器的设计 2.层次化设计,建立顶层文件,由2个4位全加器串联构成8位全加器 3.每一层次均需进行编译、综合、适配及仿真

2.设计方法和开发步骤 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。 因此这次课程设计中的8 位加法器可采用两个4位二进制并行加法器级联而成。此外我们还讨论了由八个一位全加器串联构成的八位二进制全加器。设计中前者设计为同步加法器,后者设计为异步加法器。 3.设计思路 方法一:异步八位全加器 设计流程图如下: 图 1异步八位流程图

相关文档
最新文档