16位vhdl乘法器详解,加仿真图

16位vhdl乘法器详解,加仿真图
16位vhdl乘法器详解,加仿真图

控制模块:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity cont_modu is

port(

Clk : in std_logic ;

Start : in std_logic; //数据输入开始信号

en_sig : out std_logic; //控制运算信号,为‘1’运算数据

out_sig : out std_logic // 运算完成信号

);

end entity;

architecture rlt_cont_modu of cont_modu is

signal cnt :integer range 0 to 15 :=0;//定义从0到15

type state is(S_idle,S_work,S_1d,S_2d);//运算状态信号,状态机

signal st_ty : state :=S_idle;

begin

process(Clk)

begin

if rising_edge(Clk) then

case st_ty is选择语句;S_idle为空闲状态,当输入数据后Start信号为1就开始工作

when S_idle => if Start ='1' then如果为1就跳转到S_work状态,并且使能信号置1

st_ty <= S_work;

en_sig <='1';

else不然继续在S_idle状态

st_ty <= S_idle;

en_sig <='0';

end if;

out_sig <='0';

when S_work => if cnt =15 then在S_work状态下,cnt信号一直加1,加满16个数就跳转到S_1d,然后使能信号en_sig 就为0。

st_ty <= S_1d;

cnt <= 0;

en_sig <='0';

else如果没到16个数继续加1

st_ty <= S_work;

cnt <= cnt +1;

en_sig <='1';

end if;

out_sig <='0';

when S_1d => st_ty <= S_2d;这是S_1d状态,主要是用来延迟一个时钟

en_sig <='0';

out_sig <='0';

when S_2d => st_ty <= S_idle;S_2d状态,信号结束,out_sig为1

en_sig <='0';

out_sig <='1';

end case;

end if;

end process;

end rlt_cont_modu;

控制RLT图

其状态图

数据流移位信号模块

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity data_path is

port(

Clk : in std_logic;

Data_a : in std_logic_vector(15 downto 0); //乘法A数据输入

Start : in std_logic; //数据开始信号

en_sig : in std_logic;//使能信号

shift : out std_logic //输出信号,移位输出

);

end entity;

architecture rlt_data_path of data_path is

signal temp_data : std_logic_vector(15 downto 0);定义一个16bit的数

begin

process(Clk)

begin

if rising_edge(Clk)then

if Start ='1' then当开始信号为1,即数据进来时,就把乘数A的数据放入temp_data temp_data <= Data_a;把输入数据A放入temp_data

elsif en_sig ='1' then上面代码产生的使能信号,en_sig为1时,temp_data就左移动一位,一直会移动16位,一再强调仿真图对照看

temp_data <= '0' & temp_data(15 downto 1) ;//数据左移位一次

end if;

end if;

end process;

process(Clk)

begin

if rising_edge(Clk)then

if en_sig ='1' then当使能信号为1时,把temp_data的最低位输出,因为temp_data一直在移位,所以说shift实际是第一次输出的乘数A的最低位,然后倒数第二、第三位。。。。。

shift <= temp_data(0); //移位信号输出

else

shift <= '0';当没有工作的时候shift保持为0

end if;

end if;

end process;

end rlt_data_path;

数据流RLT图

加法器模块(移位信号为1是做加法)

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity add_path is

port(

Clk : in std_logic;

Data_b : in std_logic_vector(15 downto 0);//数据B输入

over_sig : in std_logic;//结束信号

Start_sig : in std_logic;//开始信号

en_sig : in std_logic;//运算有效信号

shift : in std_logic;//移位信号

tt_data : out std_logic_vector(31 downto 0);//数据B移位后的信号

data_o : out std_logic_vector(31 downto 0)//乘法结果数据输出信号

);

end entity;

architecture rlt_add_path of add_path is

signal tmep_data : std_logic_vector(31 downto 0);定义32位的数,作为累计的数据

signal tmep_da : std_logic_vector(31 downto 0);定义32位的数,作为数据B输入数据的移位

signal tmep_da_1d : std_logic_vector(31 downto 0);定义32位的数,作为tmep_da延迟一个时钟后的数据,这里是时钟对齐处理,

begin

process(Clk)

begin

if rising_edge(Clk) then

if Start_sig ='1' then开始信号时,首先把累加值清零

tmep_data <=(others =>'0');

elsif shift ='1' then然后数据A移位的数据为1时,就把数据B对应移位的数据相加

tmep_data <= tmep_data + tmep_da_1d;//shift为1然后做加法

else

tmep_data <= tmep_data;当数据A移位数据为0时不变

end if;

end if;

end process;

process(Clk)

begin

if rising_edge(Clk) then

if Start_sig ='1' then当开始信号时,把乘数B的数据赋值给tmep_da,高为补0 tmep_da <= x"0000" & Data_b;这个就是赋值,把高16位直接给0

tmep_da_1d <= x"00000000";

elsif en_sig ='1' then当使能工作信号为1时,把数据tmep_da的值直接移位操作

tmep_da <= tmep_da(30 downto 0) & tmep_da(31);//把数据左移动以位

tmep_da_1d <= tmep_da;把数据tmep_da的数据给tmep_da_1d,

end if;

end if;

end process;

process(Clk)

begin

if rising_edge(Clk) then

if over_sig ='1' then当工作完成后信号,就是乘法运算已经做完后,把数据tmep_data的值输出

data_o <= tmep_data;//完成信号,数据输出

end if;

end if;

end process;

tt_data <= tmep_da_1d;这个是测试信号,测试B数据的移位后的值

end rlt_add_path;

加法器的电路图

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity mult_top is

port(

Clk : in std_logic ;

Start : in std_logic;

Data_a : in std_logic_vector(15 downto 0);

Data_b : in std_logic_vector(15 downto 0);

t_shift : out std_logic;

t_en_sig : out std_logic;

t_out : out std_logic;

tt_data : out std_logic_vector(31 downto 0);

Data_o : out std_logic_vector(31 downto 0)

);

end entity;

architecture rlt_mult_top of mult_top is component cont_modu is

port(

Clk : in std_logic ;

Start : in std_logic;

en_sig : out std_logic;

out_sig : out std_logic

);

end component;

signal en_sig : std_logic;

signal out_sig : std_logic;

component data_path is

port(

Clk : in std_logic;

Data_a : in std_logic_vector(15 downto 0);

Start : in std_logic;

en_sig : in std_logic;

shift : out std_logic

);

end component;

signal shift : std_logic;

component add_path is

port(

Clk : in std_logic;

Data_b : in std_logic_vector(15 downto 0);

over_sig : in std_logic;

Start_sig : in std_logic;

en_sig : in std_logic;

shift : in std_logic;

tt_data : out std_logic_vector(31 downto 0);

data_o : out std_logic_vector(31 downto 0)

);

end component;

begin

t_shift <= shift;

t_en_sig <= en_sig;

t_out <= out_sig;

这里面全是顶层模块的调用,这个看不懂,就看书就是一个端口的例化过程cont_U : cont_modu

port map (

Clk => Clk,

Start => Start,

en_sig => en_sig,

out_sig => out_sig

);

data_U : data_path

port map(

Clk => Clk,

Data_a => Data_a,

Start => Start,

en_sig => en_sig,

shift => shift

);

add_U : add_path

port map (

Clk => Clk,

Data_b => Data_b,

over_sig => out_sig,

Start_sig => Start,

en_sig => en_sig,

shift => shift,

tt_data => tt_data,

data_o => Data_o

);

end rlt_mult_top;

仿真图分析:

当输入数据5,15时输出为75。其中shift=‘1’时把tt_data相加就是15+60 =75;en_sig 是控制信号输出,start信号是开始信号。注意看图,小学生都能看懂,都能会的东西。

例如输入数据A:5,其二进制为0000000000000101

输入数据B :15,其二进制为0000000000001111

首先A数据移位出最低位为1,就是图中的t_shift信号,然后B的数据为0000000000001111,做加法(就是图中的15)图中的tt_data信号

然后A再右移动一位变为0000000000000010,最低位为0,然后B的左移动一位为0000000000011110,因为A最低位为0,所以不加,

然后A再右移动一位变为0000000000000001,最低位为1,然后B的左移动一位为0000000000111100,因为A最低位为1,所以相加,(就是图中的60)

其它的继续处理。。。。。

输入信号为85,255时,输出为21675,具体分析同上

实验一1位二进制全加器的设计

龙岩学院实验报告 班级学号姓名同组人 实验日期室温大气压成绩 实验题目:基于原理图输入法的1位二进制全加器的设计 一、实验目的 1、学习、掌握QuartusⅡ开发平台的基本使用。 2、学习基于原理图输入设计法设计数字电路的方法,能用原理图输入设计法 设计1位二进制半加器、1位二进制全加器。 3、学习EDA-V型实验系统的基本使用方法。 二、实验仪器 装有QuartusⅡ软件的计算机一台、EDA系统实验箱、导线若干 三、实验原理 半加器只考虑两个1位二进制数相加,而不考虑低位进位数相加。半加器的逻辑函数 为 式中A和B是两个相加的二进制数,S是半加和,C是向高位的进位数。表1为半加器真值表。 表1 A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 显然,异或门具有半加器求和的功能,与门具有进位功能。 其逻辑图跟逻辑符号如下图:

全加器除了两个1位二进制数相加以外,还与低位向本位的进位数相加。表2为全加器的真值表。 表2 A i B i C I-1 C i S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 由真值表可得出逻辑函数式 式中,A i 和B i 是两个相加的1为二进制数,C i-1 是由相邻低位送来的进位数, S I 是本位的全加和,C I 是向相邻高位送出的进位数。其逻辑图跟逻辑符号如下图所示: 四、实验内容 1、根据1位二进制半加器、1位二进制全加器的真值表,设计并画出1位二进制半加器的原理框图,由半加器及门电路设计并画出1位二进制全加器的原理框图(最终设计的是1位二进制全加器)。

一位全加器电路版图设计-11页精选文档

目录 1 绪论 (1) 1.1 设计背景 (1) 1.2 设计目标 (1) 2一位全加器电路原理图编辑 (2) 2.1 一位全加器电路结构 (2) 2.2 一位全加器电路仿真分析波形 (2) 2.3 一位全加器电路的版图绘制 (3) 2.4一位全加器版图电路仿真并分析波形 (3) 2.5 LVS检查匹配 (3) 总结 (4) 参考文献 (4) 附录一:电路原理图网表 (5) 附录二:版图网表 (6)

1 绪论 1.1 设计背景 Tanner集成电路设计软件是由Tanner Research 公司开发的基于Windows 平台的用于集成电路设计的工具软件。早期的集成电路版图编辑器L-Edit在国内已具有很高的知名度。Tanner EDA Tools 也是在L-Edit的基础上建立起来的。整个设计工具总体上可以归纳为电路设计级和版图设计级两大部分,即以S-Edit为核心的集成电路设计、模拟、验证模块和以L-Edit为核心的集成电路版图编辑与自动布图布线模块。Tanner软件包括S-Edit,T-Spice, L-Edit与LVS[1]。 L-Edit Pro是Tanner EDA软件公司所出品的一个IC设计和验证的高性能软件系统模块,具有高效率,交互式等特点,强大而且完善的功能包括从IC设计到输出,以及最后的加工服务,完全可以媲美百万美元级的IC设计软件。L-Edit Pro包含IC设计编辑器(Layout Editor)、自动布线系统(Standard Cell Place & Route)、线上设计规则检查器(DRC)、组件特性提取器(Device Extractor)、设计布局与电路netlist的比较器(LVS)、CMOS Library、Marco Library,这些模块组成了一个完整的IC设计与验证解决方案。L-Edit Pro丰富完善的功能为每个IC设计者和生产商提供了快速、易用、精确的设计系统。 1.2 设计目标 1.用tanner软件中的原理图编辑器S-Edit编辑一位全加器电路原理图 2.用tanner软件中的TSpice对一位全加器的电路进行仿真并分析波形 3.用tanner软件中的版图编辑器L-Edit进行一位全加器电路的版图绘制,并进行DRC验证 4.用tanner软件中的TSpice对一位全加器的版图进行仿真并分析波形 5.用tanner软件的layout-Edit中的lvs功能对一位全加器进行LVS检验观察原理图与版图的匹配程度

用门电路设计一位的全加器

实验二组合逻辑设计 一、实验目的 1、掌握组合电路设计的具体步骤和方法; 2、巩固门电路的运用和电路搭建能力; 3、掌握功能表的建立与运用; 4、为体验MSI(中规模集成电路)打基础。 二、实验使用的器件和设备 四2输入异或门74LS86 1片 四2输入正与非门74LS00 1片 TDS-4数字系统综合实验平台1台 三、实验内容 1.测试四2输入异或门74LS86 一个异或门的输入和输出之间的逻辑关系。 2.测试四2输人与非门74LS00一个与非门的输入和输出之间的逻辑关系。 3.等价变换Si=Ai○十Bi○十Ci-1 Ci=AiBi +(Ai○十Bi)Ci-1 4.画出变换后的原理图和接线图。 四、实验过程 1、选择实验题目,分析逻辑功能 用门电路设计一位的全加器 一位全加器:在进行两个数的加法运算时不仅要考虑被加数和加数而且要考虑前一位(低位)向本位的进位的一种逻辑器件。 2、根据逻辑功能写出真值表;

3、根据真值表写出逻辑函数表达式; Si=Ai○十Bi○十Ci-1 Ci=AiBi +(Ai○十Bi)Ci-1 4、利用卡诺图法或布尔代数法对逻辑函数表达式进行化简; 不需化简 Si=Ai○十Bi○十Ci-1 Ci=AiBi +(Ai○十Bi)Ci-1 5、将化简的逻辑表达式等价变换,统计出实验所需芯片; Si=Ai○十Bi○十Ci-1 所需芯片: 四2输入异或门74LS86 1片 四2输入正与非门74LS00 1片 6、根据各芯片的引脚图,测试所有需用芯片的功能,画出各芯片的功能表; VCC VCC 74LS86接线图 74LS00接线图74LS 86芯片测试结果 74LS00 芯片测试结果

全加器设计

学院:计算机学院 专业:信息与计算科学 姓名:方荣华 学号:0908060223 班级:0902 全加器 一位全加器 全加器是能够计算低位进位的二进制加法电路 一位全加器(FA)的逻辑表达式为: S=A⊕B⊕Cin Co=AB+BCin+ACin 其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出; 如果要实现多位加法可以进行级联,就是串起来使用;比如32位+32位,就需要32个全加器;这种级联就是串行结构速度慢,如果要并 行快速相加可以用超前进位加法, 超前进位加法前查阅相关资料; 如果将全加器的输入置换成A和B的组合函数Xi和Y(S0 (3) 制),然后再将X,Y和进位数通过全加器进行全加,就是ALU的逻辑结构 结构。 即 X=f(A,B) Y=f(A,B) 不同的控制参数可以得到不同的组合函数,因而能够实现多种算术 运算和逻辑运算。 半加器、全加器、数据选择器及数据分配器 1.验证半加器、全加器、数据选择器、数据分配器的逻辑功能。 2.学习半加器、全加器、数据选择器的使用。 3.用与非门、非门设计半加器、全加器。 4.掌握数据选择器、数据分配器扩展方法。 1.半加器和全加器 根据组合电路设计方法,列出半加器的真值表,见表7。逻辑表达式为: S =AB + AB= A⊕B C = AB 半加器的逻辑电路图如图17所示。 用两个半加器可组成全加器,原理图如图18所示。 在实验过程中,我们可以选异或门74LS86及与门74LS08来实现半加器的逻辑功能;也可用全与非门如74LS00、反相器74LS04组成半加器。这里全加器不用门电路构成,而选用集成的双全加器74LS183。其管脚排列

实验一 一位二进制全加器设计实验

南昌大学实验报告 学生姓名: 学 号: 专业班级: 中兴101 实验类型:■ 验证 □ 综合 □设计 □ 创新 实验日期: 2012 9 28 实验成绩: 实验一 一位二进制全加器设计实验 一.实验目的 (1)掌握Quartus II 的VHDL 文本设计和原理图输入方法设计全过程; (2)熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件测试结果; (3) 熟悉设备和软件,掌握实验操作。 二.实验内容与要求 (1)在利用VHDL 编辑程序实现半加器和或门,再利用原理图连接半加器和或门完成全加器的设计,熟悉层次设计概念; (2)给出此项设计的仿真波形; (3)参照实验板1K100的引脚号,选定和锁定引脚,编程下载,进行硬件测试。 三.设计思路 一个1位全加器可以用两个1位半加器及一个或门连接而成。而一个1位半加器可由基本门电路组成。 (1) 半加器设计原理 能对两个1位二进制数进行相加而求得和及进位的逻辑电路称为半加器。或:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。图1为半加器原理图。其中:a 、b 分别为被加数与加数,作为电路的输入端;so 为两数相加产生的本位和,它和两数相加产生的向高位的进位co 一起作为电路的输出。 半加器的真值表为 表1 半加器真值表 由真值表可分别写出和数so ,进位数co 的逻辑函数表达式为: b a b a b a so ⊕=+=- - (1) ab co = (2) 图1半加器原理图 (2) 全加器设计原理 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图2全加器原理图。全加器的真值表如下:

一位全加器

存档资料成绩: 华东交通大学理工学院 课程设计报告书 所属课程名称计算机组成原理 题目一位全加器的设计 分院电信分院 专业班级 15计算机科学与技术3班 学号20150210440313 学生姓名张子辰 指导教师王莉 2016 年 12 月 19 日

课程设计(论文)评阅意见 评阅人 王莉 职称 讲师 2016年12月19日 序号 项 目 等 级 优秀 良好 中等 及格 不及格 1 课程设计态度评价 2 出勤情况评价 3 任务难度评价 4 工作量饱满评价 5 任务难度评价 6 设计中创新性评价 7 论文书写规范化评价 8 综合应用能力评价 综合评定等级

目录 引言 (2) 一.全加器的介绍 (2) 1.1 全加器的基本概念 (2) 1.2全加器仿真设计分析 (3) 1.3 全加器的原理 (3) 二.课程设计目的 (3) 三.不同方法的一位全加器设计 (4) 3.1用逻辑门设计全加器 (4) 3.2 用74LS38译码器设计全加器 (6) 3.3用74LS153D数据选择器设计全加器 (8) 四.观测仿真电路 (10) 4.1逻辑门仿真电路的分析 (10) 4.2 74LS138译码器仿真电路的分析 (12) 4.3 74LS153D数据选择器仿真电路的分析 (13) 五.两位全加器的实现 (15) 5.1.原理 (15) 5.2创建电路 (18) 5.3 仿真电路的输出信号分析 (19) 六.收获与心得 (19) 参考文献 (20)

一位全加器的设计 引言 MAX+PLUS II是一个专门用于电路设计与仿真的工具软件。它以界面形象直观、操作方便、分析功能强大、易学易用等突出优点,迅速被推广应用。MAX+PLUS II仿真软件能将电路原理图的创建、电路的仿真分析及结果输出都集成在一起,并具有绘制电路图所需的元器件及其仿真测试的仪器,可以完成从电路的仿真设计到电路版图生成的全过程,从而为电子系统的设计、电子产品的开发和电子系统工程提供一种全新的手段和便捷的方法。 数字系统的基本任务之一就是进行算术运算。而常见的加、减、乘、除等运算均可以利用加法运算来实现。所以,加法器就成为数字系统中最基本的运算单元,可广泛用于构成其它逻辑电路。 一.全加器的介绍 1.1 全加器的基本概念 加法器是一种常见的组合逻辑部件,有半加器和全加器之分。半加器是只考虑两个加数本身,而不考虑来自低位进位的逻辑电路,就是两个相加数最低位的加法运算。全加器不仅考虑两个一位二进制数相加,还要考虑与低位进位数相加的运算电路。两个数相加时,除最低位之外的其余各位均是全加运算

1位全加器的电路和版图设计

集成电路设计基础 论文题目:CMOS全加器设计学院:信息科学与工程学院专业:集成电路工程 姓名:耿烨亮 学号:1311082135

CMOS全加器设计 摘要:现代社会随着电路的集成度越来越高,功耗和信号延迟成为超大规模集成电路的关键。加法运算是数字系统中最基本的运算,为了更好地利用加法器实现减法、乘法、除法等运算,需要对全加器进行功能仿真设计和分析。另外通过全加器可以对其它相关电路有所了解。因此只有深刻理解了全加器的性能才能进一步减小功耗和信号延迟[1]。本文用对一位全加器进行了全面的分析。并且通过使用Cadence公司的工具IC 5141与Hspice来实现全定制的整个设计流程。 关键词:全加器;全定制;Cadence

As the circuit’s integration is increasing in the modern society,Power consumption and signal delay is crucial to the design of high-performance very large scale integration circuits. Addition operation is the basic operation of the digital system, In order to achieve much better use of the adder subtraction, multiplication, division and other operations, The need for full adder functional simulation design and analysis is necessary .what’s more, we can understand the other related circuitry through the full adder , Therefore, only a deep understanding of the performance of the full adder can we reduce the power consumption and signal delay.The paper has a comprehensive analysis to the full adder. And through the use of Cadence tool IC 5141 and Hspice to achieve full custom throughout the design process. Key words: the full adder ; Full – Custom; Cadence

1位全加器的设计

1位全加器的设计 一、实验目的 1.熟悉QUARTUSII软件的使用; 2.熟悉实验箱的使用; 3.掌握利用层次结构描述法设计电路。 二、实验原理及说明 由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中ain,bin,cin信号可采用实验箱上SW0,SW1,SW2键作为输入,并将输入的信号连接到红色LED管LEDR0,LEDR1,LEDR2上便于观察,sum,cout信号采用绿色发光二极管LEDG0,LEDG1来显示。 图1.1 全加器原理图 三、实验步骤 1.在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP2C35F672C6 注意工程路径放到指定的数据文件夹,不可放到软件安装目录中; 2.新建Verilog语言文件,输入如下半加器Verilog语言源程序; module half_adder(a,b,s,co); input a,b; output s,co; wire s,co;

assign co=a & b; assign s=a ^ b; endmodule 3.保存半加器程序为half_adder.v,进行功能仿真、时序仿真,验证设计的正确性 4.选择菜单Fil e→Create/Update→Create Symbol Files for current file,创建 半加器模块; 5.新建一原理图文件,在原理图中调用半加器、或门模块和输入,输出引脚,按照图 1所示连接电路。并将输入ain,bin,cin连接到FPGA的输出端,便于观察。完成后另保存full_adder。 6.对设计进行全编译,如出现错误请按照错误提示进行修改。 7.分别进行功能与时序仿真,验证全加器的逻辑功能。 9.下载 采用JATG方式进行下载,通过SW0,SW1,SW2输入,观察的LEDR[0],LEDR[1],LEDR[2],LEDG[0],LEDG[1]亮灭验证全加器的逻辑功能。 四、思考题 1.为什么在实验步骤3中,将半加器保存为half_adder,可否保存为full_adder? 2.对电路进行功能仿真与时序仿真时,发现二者有什么样的区别? 3.为什么要进行引脚锁定? 4.采用层次结构法描述电路有什么样的优点?

1位全加器原理图输入设计

南昌航空大学实验报告 年月日 课程名称: EDA技术实验课程名称: 1位全加器原理图输入设计 班级:_09083114___姓名: 同组人:___________________________ 指导老师评定:___________________________签名:________________________ 实验目的 1、熟悉利用Quartus II的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个全加器的设计把握利用EDA软件进行电子线路设计的详细步骤; 2掌握利用EDA工具进行原理图输入这几、仿真、综合的方法。 实验原理 1位全加器可由两个半加器及或门连接而成;多为全加器可以由多个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 实验步骤 1.要设计的半加器为h_adder,如图4-1所示,a为被加数,b为加数,so为何,co为进位输出。 图4-1 1为半加器原理图 原理图设计完成后进行编译,编译通过进行下一步操作。 2.波形仿真如图4-2

图4-2 半加器波形仿真图 由波形图可以看出,当a和b都为1是,产生进位,此时co为1,so为0,只有a或者b为1时,不产生进位,co为0,so为1,a和b 都为0时,co和so都为0。 3、1位全加器由两个半加器及或门连接而成,如图4-3所示,ain为被加数,bin 为加数,cin为进位输入,sum为和,cout为进位输出。 图4-3 1位全加器原理图 原理图设计完成后进行编译,编译通过进行下一步操作。 4、1位全加器波形仿真如图4-4所示 图4-4 1位全加器波形仿真图 由波形图的1位全加器的真值表如表4.1所示

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 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.编译与仿真 原理图与仿真波形分析:

一位全加器的版图设计

一位全加器的版图设计 暴鑫-1152613 一. 实验名称 一位全加器的版图设计 二. 实验目的与内容 绘制电路图:理解instance 、电路的层次结构、CDF 参数、sheet 等概念;掌握从电路图抽取网表后用于Hspice 仿真的方法;理解电路设计的概念;对1位全加器进行电路设计与仿真;进一步掌握Virtuoso 软件使用和版图设计技巧。进行一位加法器的版图设计。进一步掌握使用Dracula 进行DRC 、LVS 的方法;完成一位全加器版图验证。 三. 实验相关知识 1. 一位全加器 一位全加器是计算A 、B 、Cin (进位信号输入)三个二进制数相加的结果,得出sum (和)、cout (进位输出) 2. 反相器 是数字逻辑中实现逻辑非的逻辑门 反相器的版图如下 i ⊕⊕=A =BC i ABC i ABC i ABC i +++C o AB BC i AC i ++=A B Cout Sum Cin Full adder

四.实验步骤 1.完成了一位加法器电路的电路设计、电路图输入、电路仿真。 2.在版图设计阶段,就是将完成的电路的版图绘制完成。 3.一位全加器版图的DRC、LVS检查。 五.实验结果 版图做出来是这个样子的 然后进行验证后出现了很多错误

改了很久还是有错误,最后就放弃掉了TAT 还是对版图设计规则的不熟悉,不熟练 通过Hspice仿真得到反相器的输入输出波形: 一位全加器的电路图:

用Hspice仿真上述电路得到的结果 五.实验体会 这个实验做了好几周,耗时也是非常长,对这个实验实在是印象相当深刻。刚开始的时候自己画版图,花了半天也就把反相器的画出来了,然后发现二选一和反相器在库里面都是有的。于是就放弃了自己创作,用库里面的原件去画,三个二选一,三个反相器。看了月勇的布局以后就模仿他的做了,基本我俩的版图是一样的,因为后来我拷到u盘中的文件坏了,用了他的半成品进行版图最后的链接,但是验证时候除了许多问题,大部分都是尺寸问题,有的会改,但是有的地方就不知道该怎么下手,一点头绪都没有。还是在做实验的时候有的偷懒,结果到了最后的期限发现自己在版图设计这方面很不熟练。最后改错改不出来了也就放弃了TAT,后面的一致性检测我也就没有进行下去,目测就算错误检查完也不会MATCH。 这个实验还是非常的实用,我们以后在设计元器件,设计电路时候都会用到,熟练这个操作平台进行版图设计都是非常必须的。虽然后面两节课是韩老师带我们上的,但我还是比较喜欢张老师的诙谐幽默= =谢谢老师的悉心教导,以后试验都会好好做,不再偷懒了= =

原理图方式设计一位全加器

实验报告 实验名称:EDA技术与FPGA应用设计实验题目:原理图方式设计一位全加器实验地点: 专业班级:学号: 学生姓名:ALXB 指导教师: 年月日

一、实验目的 1.熟悉ispDesignEXPERT System原理图设计流程的全过程。2.学习简单组合电路的设计方法、输入步骤。 3.学习层次化设计步骤。 4.学习EDA设计的仿真和硬件测试方法。 二、实验原理 1位全加器可以用两个半加器及一个或门连接而成。 三、实验任务: 1.用原理图输入方法设计半加器电路。 2.建立顶层原理图电路。 3.对全加器电路进行仿真分析、引脚锁定、硬件测试 四、实验步骤: 1、建立设计项目: a、启动 b、创建设计项目 c、选择器件 2、原理图源文件输入: a、增加原理图输入源文件 b、添加元器件符号 c、添加输入、输出符号 d、连线 e、连线命名 f标记输入、输出 g、定义元器件的属性 h、保存已完成的设计 3、功能和时序仿真 a、建立波形仿真源文件 b、编辑波形文件 c、功能、时序仿真

4、器件适配 5、器件编程 a、结构文件 b、添加JEDEC文件c器件编程 五、实验结果记录 1、半加器: 2、全加器:

3全加器功能仿真: 4全加器时序仿真:

六、实验分析: 由图知,本实验的目标已达成,及通过硬件仿真实现一个一位二进制全加器。通过图可知,对输入量a, b, cin三者来说可以通过a与b的频率相等,而输出波形则完全符合理论值。 由于本实验是给定源代码,也就是说本次实验只是一个简单的验证实验,只是让我们熟悉max plus II的操作环境与这个软件的使用方法。在实验中,还出现过这样的问题:输出波形出现很多毛刺,比对输入也有延迟。后来知道这只是因为max plus II原本就是按照元器件的真实特性进行的仿真,如果想要得到如图一般的理想输出波形,只需在使用波形输出工具时选择理想波形再进行编译就可以了。

一位全加器

一位全加器的设计 一、实验要求 (1)用原理图输入设计方法或者硬件描述语言设计方法皆可 (2)如果是原理图,把图贴出来,如果是代码,附上代码 (3)写清楚设计过程 (4)用仿真波形说明全加器功能正确 二、实验目的 1、学会在仿真平台上进行设计实验验证及时序仿真。 2、进一步熟悉利用quartusⅡ进行电路系统设计的一般流程。 3、掌握1位全加器原理图输入设计的基本方法及过程。 4、进一步提高学生运用所掌握的数字电子电路的分析方法与分析实际电路的基本技能,并了解基本逻辑单元电路在生活中的应用。 三、实验原理 全加器是一个能对两个一位二进制数及来自低位的“进位”进行相加,产生本位“和”及向高位“进位”的逻辑电路。该电路有3个输入变量,分别是2个加数A、B及1个低进位Cin,两个输出变量,分别是本位S和向高进位Co。 用原理图输入法构造一位全加器,并进行时序仿真。 1、全加器真值表分析: 输入A 输入B 输入Cin 输出S 输出Co 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 由真值表写逻辑函数表达式S=A⊕B⊕Cin Co=ACin+BCin+AB 画原理图时,用到2个异或门,3个二端口与门,一个三端口或门。 2、设计原理图:

四、实验结果 连接时没有错误,进行波形仿真,输入端A、B、Cin周期分别为10ns、20ns、30ns 得到波形图如下: 仿真波形分析: 输入:A=0、B=0、Cin=0时,输出S=0、Co=0 输入:A=1、B=0、Cin=0时,输出S=1、Co=0 输入:A=0、B=1、Cin=0时,输出S=1、Co=0 输入:A=1、B=1、Cin=1时,输出S=1、Co=1 五、实验结论 本实验实现的是简单层面上设计加法器的功能,而没有考虑到从加法器的性能上选择实验。虽然设计上没有实现,但是我们理论上分析和讨论不同的加法器选择不同门电路在性能上的差别。从而得知在不同的计算机内部采用不同的加法器机制,在具体设计时需要根据具体的应用环境和实现工艺确定采用哪一种加法器。加法器的性能可以从延迟、功耗、面积等方面进行分析。具体的分析方法有三种:一是通过门级模拟器来估算加法器的性能;二是采用标准单元库对每种加法器进行逻辑综合和布局布线来设计电路,然后从版图中反提取电路参数,针对其参数进行电路的模拟,从中得出各种加法器的比较结果;三是通过物理实验在芯片上实现各种加法器,然后通过实际测量进行比较。 六、实验小结 课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践

1位全加器原理图输入设计

附表1: 广州大学学生实验报告 开课学院及实验室:物理与电子工程学院-电子楼317室2016年 4 月25 日 图1-1连接好原理图并存盘 现在利用已设计好的半加器,完成顶层项目全加器的设计,详细步骤如下: 、打开一个新的原理图编辑窗,然后在本工程目录中找到已包装好的半加器元件h_adder,并将它调入原理图编辑窗中。这时如果对编辑

窗中的半加器元件h_adder双击,即可弹出此元件内部的原理图。 2、完成全加器原理图设计(图1-2),并以文件名f_adder.bdf存在同一目录中。 图1-2 在顶层编辑窗中设计好全加器 3、将当前文件设置成Project,并选择目标器件为CycloneIII系列的EP3C40Q240C8N。 4、编译此顶层文件f_adder.bdf,然后建立波形仿真文件。 5、对应f_adder.bdf的波形仿真文件如图1-3所示,参考图中输入信号cin、bin和ain输入信号电平的设置,启动仿真器Simulator,观察输出波形的情况。 6、锁定引脚、编译并编程下载,硬件实测此全加器的逻辑功能。 三、实验HDL描述: module add_1bit (ain, bin, cin, sum, cout) input ain, bin, cin; //cin为上个进位。 output reg sum, cout; //cout为当前的进位,sum为加结果 always@(*) begin cout = (ain & bin) | (bin & cin) | (cin & ain); if (cin) s = ! (ain^bin); else s = (ain^bin); end endmodule 四、仿真结果:

实验一 一位二进制全加器设计

南昌大学实验报告 学生姓名:学号:6100210173专业班级:中兴101班 实验类型:□验证□综合□设计□创新实验日期:2012、10、22 实验一一位二进制全加器设计实验 一、实验目的 1、学习Quartus II的文本和原理图输入方法设计简单组合电路以熟悉QuartusII的使用; 2、熟悉设备和软件,掌握实验操作。 二、实验内容与要求 (1)在利用VHDL编辑程序实现半加器和或门,再利用原理图连接半加器和或门完 成全加器的设计,熟悉层次设计概念; (2)给出此项设计的仿真波形; (3)参照实验板的引脚号,选定和锁定引脚,编程下载,进行硬件测试。 三、设计思路 一个1位全加器可以用两个1位半加器及一个或门连接而成。而一个1位半加器可由 其中a为被加数,b为加数,so为本位和,co为本位向高位进位, 因而可得表达式为:so=NOT(a XOR (NOT b)) ;而co=a AND b ; 其原理图形如下

而全加器的真值表如下; 其中ain cout为本位和 其原理图如图所示: 四、原理图输入法设计 1、首先设计半加器 (1)、在File菜单中选择New项,将出现新建文件对话框。选择“Device Design File->Block Diagram->Schematic File”项。点击“OK”,在主界面中将打开“Block Editor”窗口。 (2)元件的添加:在绘图区点击鼠标右键->Insert->Symbol…或双击鼠标左键,弹出相应的Symbol对话框,在name栏输入需添加的元件,input(输入引脚),and2(二输入与非门),not(非门),xor(异或)、output(输出引脚)等,回车或点击ok,此时在鼠标光标处将出现该元件图标,并随鼠标的移动而移动,在合适的位置点击鼠标左键,放置一个元件。 也可以利用插入器件工具来添加元器件,方法类似。设计好的半加器如下图所示

一位全加器HSPICE设计

设计一·四路与非电路的Hspice设计。 设计二·一位全加器电路的Hspice设计。 专业电子科学与技术 学号 学生姓名 指导老师汪再兴

设计一·四路与非门的设计 一·设计目的: 1、学习使用电路设计与仿真软件HSPICE ,练习用网表文件来描述模拟电路,并熟悉应用HSPICE 内部元件库; 2、熟悉用MOS 器件来设计四位逻辑输入与非门电路。 二·原理(说明) 1.与非门 与非门是与门和非门的结合,先进行与运算,再进行非运算。与运算输入要求有两个,如果输入都用0和1表示的话,那么与运算的结果就是这两个数的乘积。如1和1(两端都有信号),则输出为1;1和0,则输出为0;0和0,则输出为0 2.4路与非门结构及原理: A D C B 当输入端A 、B 、C 、D 中只要有一个为低电平时,就会使与它相连的NMOS 管截止,与它相连的PMOS 管导通,输出为高电平;仅当A 、B 、C 、D 全为高电平时,才会使四个串联的NMOS 管都导通,使四个并联的PMOS 管都截止,输出为低电平。

4路与非门mos管的电路图: 三·设计过程: Hspice要进行仿真的时候,应事先编写好网表文件,再通过导入网表文件进行仿真。 输入的网表文件(.sp)包含以下内容: (1)电路网表(子电路和宏,电源等) (2)声明所要使用的库 (3)说明要进行的分析 (4)说明所要求的输出 输入的网表文件和库文件可以由原理图的网表生成器或者文本编写产生。输入的网表文件中的第一行必须是标题行,并且.ALTER辅助模型只能出现在文件最后的.end语句之前,除此之外,其他语句可任意排列。 通过文本编写好的网表文件如下 4NAND CMOS .OPTIONS LIST NODE POST .OP .TRAN 200P 60N M1 OUT 4 VCC VCC PCH L=1U W=20U

一位全加器的设计.

课程设计任务书 学生姓名:袁海专业班级:电子1303班 指导教师:封小钰工作单位:信息工程学院 题目: 一位全加器的设计 初始条件: 计算机、ORCAD软件,L-EDIT软件 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、课程设计工作量:1周 2、技术要求: (1)学习ORCAD软件,L-EDIT软件。 (2)设计一个一位全加器电路。 (3)利用ORCAD软件对该电路进行系统设计、电路设计,利用L-EDIT软件进行版图设计,并进行相应的设计、模拟和仿真工作。 3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 时间安排: 2016.12.30布置课程设计任务、选题;讲解课程设计具体实施计划与课程设计报告格式的要求;课程设计答疑事项。 2016.12.31-2017.1.2学习ORCAD软件和L-EDIT软件,查阅相关资料,复习所设计内容的基本理论知识。 2017.1.3-2017.1.4对一位全加器电路进行设计仿真工作,完成课设报告的撰写。 2017.1.5 提交课程设计报告,进行答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要.................................................................................................................................................. I ABSTRACT ................................................................................................................................... II 1绪论. (1) 1.1集成电路发展现状 (1) 1.2集成电路版图工具L-edit简介 (1) 2全加器原理及一位全加器原理图设计 (3) 2.1一位全加器原理简介 (3) 2.2实现一位全加器功能的原理图设计 (4) 2.2.1一位全加器原理图 (4) 2.2.2基于ORCAD的一位全加器设计 (4) 2.2.3 一位全加器的电路图仿真 (7) 3一位全加器的版图设计 (9) 3.1确定一位全加器版图结构 (9) 3.2源漏共享缩小版图面积 (9) 3.3 版图所需基础器件绘制编辑 (11) 3.3.1 PMOS、NMOS等基础器件编辑 (11) 3.3.2 两输入与非门与异或门的绘制编辑 (12) 3.3.3源漏共享得到版图 (13) 3.4 绘制最终一位全加器版图 (14) 4心得体会 (17) 5参考文献 (18)

一位全加器原理图输入设计

第8章EDA实验 8.1 关于EDA实验开发系统 EDA实验开发系统不是我们学习的对象,而是学习的工具。各高校使用的EDA实验开发系统各不相同,各实验系统开发商均提供了线路连接图和引脚对应表,在教材中就不一一重复了(我们可以提供部分产品线路连接图和引脚对应表的电子文档)。另外EDA实验开发系统售价不菲,为方便大家学习,我们还为读者准备了基于MAX EPM7128芯片的实验板以及PCB图,读者自己组装成本在百元以内,可以做大部分基础实验,随着读者学习的深入,你也可以设计一个简单的实验板。欢迎来函索取。 8.2 EDA实验 EDA技术是一门实践性很强的学科,它包涵内容多,涉及知识面广。学而不练是学不会的,请大家注重实践、积累经验,早日EDA技术成为高手。 8.2.1 一位全加器原理图输入设计 1. 实验目的 1)熟悉EDA设计流程; 2)熟悉Max+plusII工具软件。 2. 实验内容 1) 建立文件夹 建立自己的文件夹(目录),如c:\myeda,进入Windows操作系统 ●MAX+plus II不能识别中文,文件及文件夹名不能用中文。 2) 原理图设计输入 打开MAX+plus II,选菜单File→New,在弹出的File Type窗口中选择Graphic editor File项,按OK后打开原理图编辑窗。 (1) 放置元件 在原理图编辑窗中的任何一个空白处双击鼠标左键或单击右键,跳出一个选择窗,选择此窗中的Enter Symbol项输入元件,出现元件选择窗口。 元件选择窗口窗口中Symbol Libraries:的路径c:\maxplus2\max2lib\prim下为基本逻辑元件库,双击之,在Symbol Files:下出现prim中的所有元件,选中你需要的元件(如:二与门,即and2);或者在Symbol Name:中直接输入元件名称(and2),单击OK键。你需要的元件(and2)会出现在原理图编辑窗中。 为了设计半加器,分别调入元件and2、not、xnor、input和output。 ●如果安放相同元件,只要按住CTRL键,同时用鼠标拖动该元件。 (2) 添加连线 把鼠标移到引脚附近,则鼠标光标自动由箭头变位十字,按住鼠标左键拖动,即可画出连线。然后用鼠标分别在input和output的PIN-NAME上双击使其变黑色,再用键盘分别输入

4位全加器设计

可编程逻辑器件设计大作业 题目四位全加器设计 学院自动化与电气工程学院 班级 姓名 学号 2104年12月30 日

目录 摘要 (1) 1.设计目的 (2) 2.设计要求 (2) 3.设计原理 (2) 3.1.四位全加器 (2) 3.2.四位全加器的原理图 (4) 4.设计方案 (4) 4.1.仿真软件 (4) 4.2.全加器原理 (5) 4.2.1一位全加器的设计与原理 (5) 4.2.2四位全加器的原理及程序设计 (5) 5.程序设计 (7) 6.仿真及结果 (8) 总结与体会 (10) 参考文献 (11)

摘要 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。 本次设计是用VHDL语言设计四位全加器,并用Quartus II仿真。 关键词:VHDL 四位全加器Quartus II

四位全加器设计 1.设计目的 复习加法器的原理,掌握加法器的设计实现方法,设计实现数字系统设计中常用的4位全加器,在此基础上进一步熟悉MAX+PLUSⅡ或Quartus II软件的使用方法,熟练掌握EDA的图形编程方法、开发流程、以及组合逻辑电路的设计、分析、综合、仿真方法。 2.设计要求 1)复习EDA的相关技术与方法; 2)掌握VHDL或者Verilog语言,并要求能编写程序。 3)Quartus软件的使用:掌握程序编辑、编译、调试、仿真方法。 4)设计相关简单的电路,完成既定的功能。 3.设计原理 3.1.四位全加器 加法器是数字系统中的基本逻辑器件。例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。 多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 四位全加器可对两个多位二进制数进行加法运算,同时产生进位。当两个二进制数相加时,较高位相加时必须加入较低位的进位项(Ci),以得到输出为和(S)和进位(C0)。 其中CIN表示输入进位位,COUT表示输出进位位,输入A和B分别表示

相关文档
最新文档