计算机组成原理加减器实验报告

计算机组成原理加减器实验报告
计算机组成原理加减器实验报告

网工二班 陈衍席 1205110125

实验四 加减器实验

【实验环境】

1. Windows 2000 或 Windows XP

2. QuartusII9.1 sp2、DE2-115计算机组成原理教学实验系统一台,排线若干。

1.实验原理

加减器是以二进制方式进行数字的加法或减法运算的器件,它能进行加法或减法运算,

做减法运算时,是通过将减法运算转化为加法运算来实现的。它可以用全加器做成。

(1)1位加法器的原理图设计

两个二进制数字A ,B 和一个进位输入C 0相加,产生一个和输出S ,以及一个进位输出C 1,这种运算电路成为全加器(1位加法器)。1位加法器有两个输出S 和C1,其中S 为加法器的和,C1为进位位输出。下表中列出一位全加器进行加法运算的输入输出真值表: 加法器的真值表如下表所示:

根据以上真值表,可以得到1位加法器的输入与输出逻辑关系。 0

)(C B A S ⊕⊕= ; )()()())(()(0

1C A C B B A C B A B A C ?+?+?=?⊕+?=

1位加法器的原理图文件:

1位加法器的封装图为:

(2)8位加法器的原理图设计

8位加法器用于对两个8位二进制数进行加法运算,并产生进位。8位加法器真值表如下所示:

8位加法器真值表

表中 A[7..0]表示A 有8位输入端:A7-A0;B[7..0]表示B 有8位输入端:B7-B0;S[7..0]表示S 有8位输入端:S7-S0。8位加法器的A 、B 都有8个输入端,加上进位CIN ,共有17个输入端。它有9个输出端,即S7-S0和COUT ,因此8位加法器可由8个1位加法器构成。

建立8位加法器原理图文件:

输 入 输 出 A[7..0] B[7..0] CIN S[7..0] COUT A B 进位输入 A+B+CIN 进位输出

8位加法器的封装图为:

(3)32位加法器的原理图设计

32位加法器用于对两个32位二进制数进行加法运算,并产生进位。根据图中提示,完成32位加法器原理图的设计:

32位加法器的封装图为:

(4) 32位加减器的原理图设计

32位加减器用于对两个32位二进制数进行加法或减法运算。它先由4个8位加法器级联成32加法器,然后像1位加法器变换成1位加减器那样,经过变换,最后实现。

32位加减器有两个输出S 和COUT ,其中S 为加法器的和,COUT 用于判断减法运算的结果是否为负数。有3个输入A 、B 、和SUB ,其中SUB 用于标记是否做减法运算。32位加减器真值表如下所示:

表 32位加减器真值表

建立32位加减器的原理图文件:

32位加减器的封装图为:

2.总结组合逻辑电路的设计方法

先设计出最简单的2进制逻辑电路,然后逐级封装成元件,调用,最终达到你要的进制

级,然后根据级联描述及真值表创建原理图,完成设计。

3.实验结果的分析、讨论和总结

输 入 输 出 A[31..0] B[31..0] SUB S[31..0]

COUT

A B

符号标记

A+(B XOR SUB)+SUB 符号标记

如图所示,A,B,SUB为输入,S为结果,COUT用于判断减法运算的结果是否为负数,当S为0时,A,B执行“+”运算;当S为1时,A,B执行“-”运算。

这次试验和上次比较像,都是逐级完成原理图设计,最后用SUB的特殊输入端完成加减

法的运算,但是学会了用快捷键设置输入的值,还是有收获的。

长整数的运算算法与数据结构课程设计报告书

******************* 实践教学 ******************* 兰州理工大学 软件学院 2013年春季学期 算法与数据结构课程设计 题目:长整数的运算

专业班级:软件二班 姓名:齐祥荣 学号: 指导教师:王连相 成绩: 目录 摘要 (1) 前言 (2) 正文 (3) 1.采用类C语言定义相关的数据类型 (3) 2.各模块的伪码算法 (3) 3.函数的调用关系图 (6) 4.调试分析 (7) 5.测试结果 (7) 6.源程序(带注释) (8) 总结 (15) 参考文献 (16) 致谢 (17) 附件Ⅰ部分源程序代码 (18)

摘要 数据结构 该设计要求学生设计程序,实现两个任意长的整数求和及差的运算问题。通过该题目的设计过程,可以加深理解线性表的逻辑结构、存储结构,掌握线性表上基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养学生的动手能力 关键词:双循环链表;插入;删除;长整数加减

前言 利用双向循环链表来实现对长整数的存储。每个节点只存储四位十进制数字,即不超过9999的非负整数。双向链表有头指针,它的data值存储长整数的符号,1为正,-1为负,0代表长整数为0;它的over值存储除头节点外节点的个数。其他节点的data值存储四位整数,over存储该四位整数溢出0~~9999范围的情况,一般over>0表示四位数超出9999,over<0表示四位数小于0。 选择该数据结构来完成长整数的加减运算是因为要对长整数进行运算,需要对长整数进行存储,所以选择用链表对长整数存储,又由于存储的顺序是从左到右,而运算的顺序则是从右到左,这样位了操作方便选择循环链表,在运算过程中有进位和借位的操作,所以最终选择双向循环链表的数据结构。

4位全加器实验报告

四位全加器 11微电子黄跃21 【实验目的】 采用modelsim集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四位进位加法器。 【实验内容】 加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实现多位二进制数相加的电路称为加法器,它能解决二进制中1+1=10的功能(当然还有 0+0、0+1、1+0). 【实验原理】

表2 全加器逻辑功能真值表 图4 全加器方框图 图5 全加器原理图 多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。 四位全加器 如图9所示,四位全加器是由半加器和一位全加器组建而成: 图9 四位全加器原理图 【实验步骤】 (1)建立新工程项目: 打开modelsim软件,进入集成开发环境,点击File→New project建立一

个工程项目adder_4bit。 建立文本编辑文件: 点击File→New在该项目下新建Verilog源程序文件 并且输入源程序。 (2)编译和仿真工程项目: 在verilog主页面下,选择Compile— Compile All或点击工具栏上的按钮启动编译,直到project出现status栏全勾,即可进行仿真。 选择simulate - start simulate或点击工具栏上的按钮开始仿真,在跳出来的 start simulate框中选择work-test_adder_4bit测试模块,同时撤销Enable Optimisim前的勾,之后选择ok。 在sim-default框内右击选择test_adder_4bit,选择Add Wave,然后选择simulate-run-runall,观察波形,得出结论,仿真结束。 四位全加器 1、原理图设计 如图9所示,四位全加器是由半加器和一位全加器组建而成: 图9 四位全加器原理图 【仿真和测试结果】 下图为四位全加器的仿真图:

三年级整数加减法简便运算练习题

整数加减法简便计算分类练习题 一、利用加减法的带符号“搬家”进行简算: 378+527+73 167+289+33 427+58-27 123+86-23 58+39+42+61 427-89+73 136+57-36 239+233-139+67 438+34+162 35+13+65+87 183+256+117-156 367+278-267+123 867+234+133+166 258+232-158+168 135+147+165+153 355+260+140+245 287+135+123+165 258+143-158+157 199+124+201+176 278+463+22+37 285+633+115+67 742+129+158+171 368+139-168+261 732+580+268

218+523-23 136-29-61 336-45-55 272-36-64 786-38-48 618+147-47 318+52+48 418+143-43 172-65-35 318+544-44 236-66-34 318+155-55 372-23-77 686-29-61 518+88+12 618+333-33 636-47-53 118+123-23 772-56-44 886-43-57 318+41+59 843-(543-179) 771-(89+71) 576-(76+59) 576-(176-59) 246+(153-146) 546+(153-146) 544+(256-447) 976-(71+76)

337-(137-59) 888-(188-24) 576-(176+72) 666-(466-279) 678-(78+75) 218+299 218-199 286+199 218+98 136-198 272-199 780-101 619+102 318+103 418+198 318+199 236-98 318+198 372-103 686-197 518+103 171-102 336-299 618+198 636-299 118+99 749+5036+251 398+558+442 1814-378-422

实验一四位串行进位加法器的设计实验报告

实验一四位串行进位加法器的设计 一、实验目的 1.理解一位全加器的工作原理 2.掌握串行进位加法器的逻辑原理 3.进一步熟悉Quartus软件的使用,了解设计的全过程, 二、实验内容 1.采用VHDL语言设计四位串行进位的加法器 2.采用画原理图的方法设计四位串行进位加法器 三、实验步骤 1、使用VHDL语言设计 1.打开File—>New Project Wizard输入文件名adder4保存在D盘内,打开File—>New—>VHDL File,从模版中选择库的说明,use语句的说明,实体的说明,结构体的说明,编写VHDL代码,然后保存、编译。打开File—>New—>Other File—>Vector Waveform File,查找引脚,从Edit中选择End Time 输入40、ns 保存。从Assignments—>Settings—>Simulator Settings —>Functional 然后Processing—>Generate Functional Simnlation Netlist —>确定。选择Start Simulation保存最后的波形图,打开File —>close关闭工程。 底层文件: LIBRARY ieee;

USE fadder IS PORT ( a, b,cin : IN STD_LOGIC; s, co : OUT STD_LOGIC ); END fadder; ARCHITECTURE arc1 OF fadder IS BEGIN s<=a xor b xor cin; co<=((a xor b)and cin)or(a and b); END arc1; 顶层文件: LIBRARY ieee; USE adder4 IS PORT ( c0: IN STD_LOGIC; a,b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); c4 : OUT STD_LOGIC );

整数加减法简便运算练习题

整数加减法简便计算分类练习题 ( )小学四年级( )班学生:学号: 一、利用加减法的带符号“搬家”进行简算: 378+527+73167+289+33427+58-27 58+39+42+61427-89+73136+57-36 123+86-23438+34+16235+13+65+87 183+256+117-156367+278-267+123239+233-139+67 867+234+133+166258+232-158+168135+147+165+153 287+135+123+165258+143-158+157199+124+201+176 285+633+115+67742+129+158+171368+139-168+261 二、加减同级运算的添括号法则: 218+39+61218+138-38286-23-77 218+523-23136-29-61336-45-55 272-36-64786-38-48618+147-47

318+52+48418+143-43172-65-3 5 318+544-44236-66-34318+155-5 5 372-23-77686-29-61518+88+1 2 618+333-33636-47-53118+123-2 3 772-56-44886-43-57318+41+59 三、加减同级运算的去括号法则: 576+(187+24)576+(187-76)843-(543-179) 347+(153-129) 947+(372-447) 771-(89+71) 576-(76+59)576-(176-59)676-(155-24)

FPGA一位全加器设计实验报告

题目:1位全加器的设计 一.实验目的 1.熟悉QUARTUSII软件的使用; 2.熟悉实验硬件平台的使用; 3.掌握利用层次结构描述法设计电路。 二.实验原理 由于一位全加器可由两个一位半加器与一个或门构成,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中ain,bin,cin信号可采用实 验箱上SW0,SW1,SW2键作为输入,并将输 入的信号连接到红色LED管 LEDR0,LEDR1,LEDR2上便于观察,sum,cout 信号采用绿色发光二极管LEDG0,LEDG1来 显示。 三.实验步骤 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.保存半加器程序为,进行功能仿真、时序仿真,验证设计的正确性。 其初始值、功能仿真波形和时序仿真波形分别如下所示

4.选择菜单File→Create/Update→Create Symbol Files for current file,创建半加器模块; 5.新建一原理图文件,在原理图中调用半加器、或门模块和输入,输出引脚,按照图1所示连接电路。并将输入ain,bin,cin连接到FPGA的输出端,便于观察。完成后另保存full_adder。 电路图如下 6.对设计进行全编译,锁定引脚,然后分别进行功能与时序仿真,验证全加器的逻辑功能。其初始值、功能仿真波形和时序仿真波形分别如下所示

任意长整数加法运算

课程名称: 《数据结构》课程设计 课程设计题目: 任意长整数加法运算 姓名: XXX 专业: 计算机科技2班年级: 13级学号: E11314XXX 指导老师:XXX 2015年9月17 目录 1.课程设计的目的 (1) 2.需求分析 (1) 3任意长整数加法的设计 (2) 3.1概要设计 (2) 3.2详细设计 (3) 3.3调试分析 (9) 3.4用户手册 (10) 3.5测试结果 (10) 4总结 (11) 5、程序清单:(见附录) (11) 7、程序运行结果 (11) 附录1 (13) 1.课程设计的目的 (1) 熟练使用 C 语言编写程序,解决实际问题; (2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2.需求分析 (1)设计一个实现任意长的整数加法运算演示程序。 (2)利用双向链表实现长整数的存储,每个结点含一个整型变量。 (3)输入输出形式按中国对长整数的表示习惯,每四位一组,用逗号隔开。

3任意长整数加法的设计 3.1概要设计 (1)主界面设计 图 1 图2 主界面,如图1所示,包含四个菜单项,输入数字选择对应菜单,进入子项。其中选项2包含子菜单,如图2所示。 (2)存储结构 本系统用结构体linlist存储数据,该结构体由数据data、下一节点指针next、上一节点指针prior组成。data是short型变量,存放每个结点的数据。本系统中data 一般不超过10000。用结构体linlist构建链表,头结点的data域符号代表长整数的符号,绝对值表示链表结点数目。 (3)系统功能设计 本系统主菜单包含四个选项,功能描述如下: 菜单1:输入两个任意长的整数。可按照标准四位一组中间用逗号隔开输入,也可直接输入,输入的数字保存在文件中,结束后自动返回主菜单。 菜单2:实现两个任意长整数的加法。可直接输入两个数也可读入一个文件,获取两个加数,相加结果可保存在文件中,也可不保存,结束后返回菜单2。 菜单3:输入文件名称,查询文件中的数字。文件中可能保存的是两个加数,也可能保存的是某次两个任意长整数相加的结果。 菜单4:退出系统。

4位全加器实验报告.doc

四位全加器 11微电子黄跃1117426021 【实验目的】 采用modelsim集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四位进位加法器。 【实验内容】 加法器是数字系统中的基本逻辑器件。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。 实现多位二进制数相加的电路称为加法器,它能解决二进制中1+1=10的功能(当然还有 0+0、0+1、1+0). 【实验原理】 全加器 除本位两个数相加外,还要加上从低位来的进位数,称为全加器。图4为全 加器的方框图。图5全加器原理图。被加数A i 、加数B i 从低位向本位进位C i-1 作 为电路的输入,全加和S i 与向高位的进位C i 作为电路的输出。能实现全加运算 功能的电路称为全加电路。全加器的逻辑功能真值表如表2中所列。 信号输入端信号输出端 A i B i C i S i C i 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

表2 全加器逻辑功能真值表 图4 全加器方框图 图5 全加器原理图 多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。 四位全加器 如图9所示,四位全加器是由半加器和一位全加器组建而成: 图9 四位全加器原理图 【实验步骤】 (1)建立新工程项目: 打开modelsim软件,进入集成开发环境,点击File→New project建立一

长整数的加减运算系统说明文档11003601.

桂林电子科技大学综合设计说明书用纸 《数据结构与算法》 课程设计说明书 题目:长整数的加减运算 学院:计算机科学与工程学院 专业:信息安全 姓名:xxxxxxxx 学号:11003601xx 指导教师:张瑞霞老师

成绩评定标准及成绩 1、能按照格式进行写作,无抄袭现象(10分) 2、报告内容行文通畅,有条理性,无错别字,结构严谨。(10 分) 3、能够按照数据结构课设的格式要求、排版要求和字数要求 等,有需求分析,系统分析,详细设计,关键技术的介绍和参考文献。(10分) 4、在验收过程中,能合理的回答问题(20分) 5、软件能正常运行,实现所提出的功能(40分) 6、软件代码规范性较好(5分) 7、具有自己的创新或特色(5分) 总成绩:

目录 1、前言 (3) 2、需求分析 (4) 2.1.问题描述: (4) 2.2.基本要求: (4) 2.3.更高要求: (4) 2.4.测试数据: (4) 2.5.开发环境 Visual C++6.0(完整绿色版) (5) 3、系统概述 (5) 3.1.关键技术。 (5) 3.2.相关的函数接口 (6) 3.3.功能设计 (7) 4、系统分析 (7) 5、系统的调试与结果 (17) 5.1.调试过程出现的问题以及解决方法 (17) 5.2.成功的测试数据截图 (17) 6、课设小结 (20) 7、参考文献: (21)

1、前言 本系统主要内容是为数据结构长整数加法的实现,所以整个程序是为了实现长整数的加减法运算。设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加运算和减运算。长整数的长度没有限制,可以是任意长,正确处理好运算之后的进位和借位。 每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数4位,即不超过9999的非负整数,整个链表视为万进制数。 可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。 由于在某些工程上进行加减运算时,有时候需要对很大的长整数进行计算,但是计算机本身提供的数据类型无法保证存在几百位甚至几千位的数字,所以需要设计专门的算法系统对数据进行相应的计算。因此本系统的设计主要任务是:设计一个程序能够实现任意长整数的加减运算的程序,而且能够对一些错误异常进行辨别调整,从而迅速计算出正确无误的结果。程序输入格式是字符串,包含元素的范围是数字,都好,负号以及分号,保存时需要用到双链表将字符串每四位保存在循环链表中的一个结点中,然后在计算出运行结果。 虽然程序有些复杂,但使用方法十分简单,只需按照相关提示进行操作即可,能够为用户的学习和工作带来快捷与方便。

八位加法器设计实验报告

实验四: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

整数加减乘除简便运算

1、582-46-54 2、470-136-64 3、545-167-145 4、324+89-124 5、317+256+83 6、313-56+87 7、411-203 8、514-99 9、288+98 10、489+205 11、316-(216+88)12、514-(252-86)13、528+427-127 14、313-(159+113) 15、125×24 16、 25×36 17、25×44 18、125×88 19、25×12 20、125×56 21、25×(36×4) 22、(125×52)×8 23、125×32×25 24、35×25×4×2 25、(40+4)×25 26、125×(80-8)27、18×69+18×31 28、44×29+71×44 29、59×36-36×49 30、158×72-72×58 31、45×101 32、45×101-45 33、83×99 34、83×99+83

35、54×98 36、78×99+78 37、62×101-62 38、52×98 39、58×47+58×32+58×21 40、26×32+26×75-26×7 41、35×48+35×51+35 42、47×56+47×45-47 21000÷125 44、600÷25 45、(99+88)÷11 46、25÷13+14÷13 47、13÷9+5÷9 48、360×40÷60 49、99×88÷33÷22 50、27×8÷9 51、450÷(25×9)52、560÷(140÷4) 53、31000÷8÷125 54、62×50÷25 55、35×222÷111 56、4500÷4÷25

数电实验报告半加全加器

实验二 半加/减器与全加/减器 一、 实验目的: (1) 掌握全加器和半加器的逻辑功能。 (2) 熟悉集成加法器的使用方法。 (3) 了解算术运算电路的结构。 二、 实验设备: 1、 74LS00 (二输入端四与非门) 2、 74LS86 (二输入端四异或门) 3、 数字电路实验箱、导线若干。 Ver 4B 4A 4¥ 3B 3A 3Y 1A IB !Y 2A 2B 2Y GND (74LS86引脚图) 三、 实验原理: 两个二进制数相加,叫做半加,实现半加操作的电路,称为半加器。 A 表示 被加数,B 表示加数,S 表示半加和,Co 表示向高位的进位。 全加器能进行加数、被加数和低位来的信号相加,并给出该位的进位信号以 及和。 四、 实验内容: 用74LS00和74LS86实现半加器、全加器的逻辑电路功能。 (一)半加器、半减器 M=0寸实现半加,M=1时实现半减,真值表如下: (74LS00引脚 )

功能M A B S C 半加00000 00110 01010 01101 半减10000 10111 11010 11100 —s +/- ——co M (半加器图形符号) 2、 ⑴S真值表: 00011110 00110 11001 A ⑵C真值表: 00011110 00000 10101 C 二B(A二M)

(二)全加器、全减器 S CO C^BC i-1 ?(M 十 A )(B 十 C ) 、实验结果 半加器: S 二 AB AB = A 二 B C =B (A 二 M ) 全加器: S = A 二 B - C i-1 G 二GM C 2M CI B +/一

8位全加器实验报告

实验1 原理图输入设计8位全加器 一、实验目的: 熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。 二、原理说明: 一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现。即将低位加法器的进位输出cout与其相邻的高位加法器的最低进位输入信号cin相接。而一个1位全加器可以按照本章第一节介绍的方法来完成。 三、实验内容: 1:完全按照本章第1节介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真。 2:建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。 四、实验环境: 计算机、QuartusII软件。 五、实验流程: 实验流程: 根据半加器工作原 理,建立电路并仿 真,并将元件封装。 ↓ 利用半加器构成一位 全加器,建立电路并 仿真,并将元件封 装。 ↓ 利用全加器构成8位全 加器,并完成编译、综 合、适配、仿真。 图1.1 实验流程图

六、实验步骤: 1.根据半加器工作原理建立电路并仿真,并将元件打包。(1)半加器原理图: 图1.2 半加器原理图(2)综合报告: 图1.3 综合报告: (3)功能仿真波形图4: 图1.4 功能仿真波形图

时序仿真波形图: 图1.5 时序仿真波形图 仿真结果分析:sout为和信号,当a=1,b=0或a=0,b=1时,和信号sout为1,否则为0.当a=b=1时,产生进位信号,及cout=1。 (4)时序仿真的延时情况: 图1.6 时序仿真的延时情况 (5)封装元件: 图1.7 元件封装图 2. 利用半加器构成一位全加器,建立电路并仿真,并将元件封装。 (1)全加器原理图如图: 图2.1 全加器原理图

整数的加减乘除混合运算

整数的加减乘除混合运 算 Document serial number【KK89K-LLS98YT-SS8CB-SSUT-SST108】

整式的加减乘除混合运算 解:原式=x(x+4)(x﹣1)(x+5)﹣36 =[(x+2)2﹣4][(x+2)2﹣9]﹣36 =(x+2)2[(x+2)2﹣13] =(x+2)2(x2+4x﹣9). 2先化简再求值:(x+y+z)2+(x﹣y﹣z)(x﹣y+z)﹣z(x+y),其中x﹣y=6,xy=21.解:原式=(x+y+z)2+(6﹣z)(6+z)﹣z(x+y) =(x+y+z)2+(36﹣z2)﹣xz﹣yz =(x2+2xy+2xz+2yz+y2+z2)+18﹣z2﹣xz﹣yz =x2+xy+yz+xz+y2+z2+18﹣z2﹣xz﹣yz =x2+xy+y2+18=(x+y)2+18, 当x﹣y=6,xy=21时,原式=[(x﹣y)2+4xy]+18=(36+4×21)+18=78. 3计算:(1)3x2﹣[2x2y﹣(xy﹣x2)]+4x2y (2)化简求值:(x+2y)2﹣(x+y)(3x﹣y)﹣5y2,其中x=﹣2,. 1)解:原式=3x2﹣[2x2y﹣xy+x2]+4x2y, =3x2﹣2x2y+xy﹣x2+4x2y, =2x2+2x2y+xy, (2)解:原式=x2+4xy+4y2﹣(3x2+2xy﹣y2)﹣5y2, =x2+4xy+4y2﹣3x2﹣2xy+y2﹣5y2, =﹣2x2+2xy, 当x=﹣2,时, 原式=, =﹣8﹣2, =﹣10. 4先化简再求值其中,其中a=5 原式=21a-6,代入求值得99 5对于任意自然数,试说明代数式n(n+7)-(n-3)(n-2)的值都能被6除. 解:n(n+7)-(n-3)(n-2)=n2+7n-n2+5n-6 =12n-6 =6(2n-1). 因为n为自然数,所以6(2n-1)一定是6的倍数. 所以代数式n(n+7)-(n-3)(n-2)的值都能被6整除. 6先化简,再求值,其中x=-3 原式=-x2+19当x=-3时,原式=-x2+19=-(-3)2+19=10 7先化简,再求值3a(2a2﹣4a+3)﹣2a2(3a+4),其中a=﹣2 解:3a(2a2﹣4a+3)﹣2a2(3a+4) =6a3﹣12a2+9a﹣6a3﹣8a2 =﹣20a2+9a, 当a=﹣2时,原式=﹣20×4﹣9×2=﹣98. 8化简求值,其中a=1,b=2 ,-15

C语言 长整数加减乘

长整数加减乘 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define NULL 0 typedef int Status; //--链表定义-- typedef struct DuLNode{ Status data; //数据域 struct DuLNode *next,*prior; //指针域 }DuLNode,*DuLinkList; int i; char str[400]; Status turn(Status &data){ for(int j=0;i>=0;--i,j++) { if(str[i]=='-'&&i==0)break; if(j%4==0)data=str[i]-'0'; if(j%4==1)data+=10*(str[i]-'0'); if(j%4==2)data+=100*(str[i]-'0'); if(j%4==3){data+=1000*(str[i]-'0');--i; if(i==-1||str[i]=='-')return OK;return 0;} if(i==0)return OK; } return OK; } Status Input(Status &data){ return turn(data); } Status ListCreate_L(DuLinkList &L,DuLinkList &dl){ DuLNode *r,*q; //r指向尾结点,q指向新开辟结点 L=(DuLNode*)malloc(sizeof(DuLNode)); if(L==NULL)exit(-1); r=L;q=L; for(;;){

全加器实验报告

全加器设计实验报告 姓名: 班级: 学号:

实验目的: 1.熟悉QuartusⅡ原理图设计流程,学习简单电路的设计方法、输入步骤、层次化步骤。 2.掌握QuartusII的文本输入方式的设计过程,理解VHDL语言的结构级描述方法,学习元件例化语句的设计方法。 实验原理:一位全加器可以用两个半加器及一个或门连接而成。要求使用原理图输入的方法先进行底层半加器设计,再建立上层全加器设计文件,调用半加器和或门符号,连线完成原理图设计。 全加器可以用两个半加器和一个或门连接而成,在半加器描述的基础上,采用COMPONENT语句和PORT MAP语句就可以很容易地编写出描述全加器的程序。 一.原理图 1.半加器 实验步骤 1.打开Quartus Ⅱ软件,选择新建命令,在新建对话框中选择原理图文件编辑输入项,完成新建进入原理图编辑窗口。 2.在原理图编辑窗口任意位置右击鼠标,将出现快捷菜单,选择其中的输入元件项insert symbol,按照所设计的电路,放置器件,排版,连线,完成设计后选择另存为命令,命名为h_adder存放在指定文件夹中。

3.完成半加器的设计后,重复新建命令,开始进行全加器设计,在新建的原理图中,双击鼠标,在弹出的窗口中选择project选项,将之前存入的h_adder元件,放入原理图中。 2.全加器 实验步骤 1.新建工程,在新建的工程中建立VHDL语言编辑文件,在编辑窗口处,输入设计的半加器全加器程序。 2.将设计好程序进行编译,没有错误之后定义全加器五个引脚所对应耳朵硬件电路的引脚号。 3.烧录程序,调试,验证程序是否合理。

二.程序

加法器实验报告

加法器实验报告 篇一:加法器实验报告 实验 __一__ 【实验名称】 1位加法器 【目的与要求】 1. 掌握1位全加器的设计 2. 学会1位加法器的扩展 【实验内容】 1. 设计1位全加器 2. 将1位全加器扩展为4位全加器 3. 使4位的全加器能做加减法运算 【操作步骤】 1. 1位全加器的设计 (1)写出1位全加器的真值表 (2)根据真值表写出表达式并化简 (3)画出逻辑电路 (4)用quartusII进行功能仿真,检验逻辑电路是否正确,将仿真波形截图并粘贴于此 (5)如果电路设计正确,将该电路进行封装以用于下一个环节 2. 将1位全加器扩展为4位全加器 (1)用1位全加器扩展为4位的全加器,画出电路图

(2)分别用两个4位补码的正数和负数验证加法器的正确性(注意这两 个数之和必须在4位补码的数的范围内,这两个数包括符号在内共4位),用quartusII进行功能仿真并对仿真结果进行截图。 3. 将4位的全加器改进为可进行4位加法和减法的运算器 (1)在4位加法器的基础上,对电路进行修改,使该电路不仅能进行加 法运算而且还能进行减法运算。画出该电路 (2)分别用两个4位补码的正数和负数验证该电路的正确性(注意两个 数之和必须在4位补码的数的范围内),用quartusII进行功能仿真并对仿真结果进行截图。 【附录】 篇二:加法器的基本原理实验报告 一、实验目的 1、了解加法器的基本原理。掌握组合逻辑电路在Quartus Ⅱ中的图形输入方法及文本输入方法。 2、学习和掌握半加器、全加器的工作和设计原理 3、熟悉EDA工具Quartus II和Modelsim的使用,能够熟练运用Vrilog HDL语言在Quartus II下进行工程开发、调试和仿真。

长整数加减运算实验报告word资料20页

长整数加减的运算 一、需求分析 问题描述: 设计一个实现任意长的整数进行加法运算的演示程序 基本要求: 利用双向循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(2 15 -1)~(2 15 -1)。输入输出形式:按照中国对于长整数的表示习惯,每四位是一组,组间用逗号隔开 更高要求: (1)长整数的减法 (2)多个长整数的连续加减法,并带括号等。具体方式可以参见表达式的求值部分,利用栈 测试数据: (1)0;0;应输出“0” (2)-2345,6789;-7654,3211;应输出“-1,0000,0000” (3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001” (4)1,0001,0001;-1,0001,0001;应输出“0” (5)1,0001,0001;-1,0001,0000;应输出“1” (6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998” (7)1,0000,9999,9999;1;应输出“1,0001,0000,0000” 一、概要设计 1.数据结构 此实验采用的数据结构是双向循环链表。这样可以很容易的找到他的前驱以及它的后继。节

点采用结构体类型,代码如下:typedef struct Node // 双向链表的结构体定义 int data; struct Node *prior; struct Node *next; }DLNode; 2.使用函数 1)void ListInitiate(DLNode **head) 操作结果:初始化一个头结点为head的双向循环链表; 2)int ListLength(DLNode *head) 操作结果:计算以head为头结点的链表的长度 3)int ListInsert(DLNode *head,int i,int x) 操作结果:将节点数据为x的节点插到第i个位置上去。 4)int abs(int x) 操作结果:绝对值函数,返回x的绝对值。 5)int InputNumber(DLNode *head) 操作结果:将从键盘中接收数据并把得到的数据存入以head为头结点的链表中。四位一存,中间以逗号区分,结束符为分号。 6)void OutputNumber(DLNode *head,int sign) 操作结果:将以head为头结点的链表中的所有数据输出到显示屏上, 7)void add(DLNode *head1,DLNode *head2,DLNode *head3) 操作结果:实现正数加正数的加法操作。 8)int change(DLNode *head1,DLNode *head2) 操作结果:判断存在俩个链表中的数的大小,如何head1中的数大于head2中的数那么返回值为0,反之返回值为1,相等时返回值为2; 9)void method(DLNode *head1,DLNode *head2,int x) 操作结果:计算正数乘以正数的乘法运算。 10)void minus(DLNode *head1,DLNode *head2,DLNode *head3)

数据结构课程设计长整数运算

一、需求分析 【问题描述】 设计一个程序实现两个任意长的整数求和运算。 【基本要求】 利用双向循环链表实现长整数的存储,每个结点含一个整型变量。 任何整型变量的围是:-(215-1)~(215-1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 【测试数据】 (1)0;0;应输出“0”。 (2)–2345,6789;-7654,3211;应输出“-1,0000,0000”。 (3)–9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。(4)1,0001,0001;-1,0001,0001;应输出“0”。 (5)1,0001,0001;-1,0001,0000;应输出“1”。 二、设计 1. 设计思想 (1)存储结构:循环双向链表 (2)主要算法基本思想: 1、每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加 不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数4位,即不超过9999的非负整数,整个链表视为万进制数。 2、可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示 元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。 2. 设计表示 (1)函数调用关系图: (2)函数接口规格说明: 结构体: struct dl_node { int x; dl_node *pre; dl_node *next; };

初始化: void list_init(dl_node ** h) 插入元素: void list_insert(dl_node *h,int x) 输出链表: void prin(dl_node *h) 实现相加: void list_add(dl_node *h1,dl_node *h2) 实现相减: void list_sub(dl_node *h1,dl_node *h2) 3. 详细设计 (1)输入两个数,用链表来存储。链表的头结点的数据的值为1时,表示的是输入的数非负;为-1时表示输入的数是负数。 (2)在创建链表时,让高位在链表的尾部,低位在链表的头部。 (3)在做加法时,先判断两个数的符号是否相同,如果相同,在根据加数的符号,决定和数的符号,取两个数的绝对值做加法,但是的处理进位。 (4)如果异号,用一函数来判断和的符号,判断异号的两个数相加和的符号,当两个数的长度不相等时,取较长数的符号作为和的符号,否则比两个数的大小,再决定和的符号。 (5)异号的两个数想加时,先去两个数的绝对值,用较大的数减去较小的数,差作为和的绝对值。如果相应的位够减时,直接做减法,否则借位,但是要注意被借位的值是否为零,如果为零,则继续借位。 (6)输出最终结果,输出数时,要去掉大数最前面的零,直到数的首位不是零时为止。在输出地位的数时,有可能某些单元的数低于四位,必须要在四位数的高位补零,即四位一个单元输出。空缺处用零补齐。 三、调试分析 (1)经过不断的的DEBUG,不断的输出看结果调试,最终成功 (2)经验和体会: 通过这次学习,让我认识到自己在学习上的诸多不足。从刚拿到题目到完成整个编程,从理论到实践,虽然学到很多的的东西,但是也因为自己知识的不足,不能考虑周全,完全成功的完成此次课程设计。在认识自己的不足后,我便开始认真复习书本知识,同时与动手能力强的同学互相交流,让自己学到了很多平时

长整数的加法运算-数据结构与算法课程设计

题目:长整数的加法运算 学院:计算机科学与工程学院 专业:信息安全 姓名:农锦文 学号:1200360220 指导教师:张瑞霞 2014年10月18日

目录 引言 (4) 1、系统概述 (4) 2、系统分析 (5) 2.1需求分析 (5) 2.2系统功能 (5) 2.3开发环境 (5) 3、详细设计 (5) 3.1功能结构框图 (6) 3.2 软件设计 (6) 3.2.1 定义链表与接收数据输入 (6) 3.2.2长整数的加法运算 (8) 3.2.3显示长整数相加结果 (10) 4、所遇到的问题和分析解决 (10) 5、系统特色及关键技术 (11) 6、结论 (11) 参考文献 (12)

引言 随着计算机技术的发展,人们利用计算机开发了许许多多方便的,实用的应用软件,在信息化的现代社会里,人们依赖着很多的应用软件,这些软件在推进社会发展的同时,也丰富了人们的生活,然而,在开发过程中,由于计算机系统的局限性,在需要某些功能时,总会遇到困难。例如在开发某些工程项目时,有时需要对很大的数进行计算。但是计算机本身无法计算某些较大的数,所以我们有必要设计专门的算法对一些较大的数进行相应的计算,通过简化运算之后,对其他程序功能的编写能起到良好的促进作用,大大的减轻了程序员的负担。此次设计的程序将用于长整数的加法运算,程序运行时,将提示用户输入两个长整数,然后将两个长整数相加的结果输出。 1、系统概述 在该长整数加法运算系统中,我将定义双向循环链表来表示长整数,按照中国对长整数的表示方法,如199999999表示为1,9999,9999。双向循环链表数据域存储的是长整数的每4位。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。通过造双向循环链表,可以对长整数进行方便的存储,在对长整数进行数学运算时,也能通过方便的操作链表,从而对长整数进行需要的计算。 在实现该长整数加法运算的系统中,我将会编程实现以下功能。定义一个函数,用于接收长整数的输入,同时将长整数存储到双向循环链表当中,为了检验是否按预期要求进行存储,我还会编写一个函数,将双向循环链表中数据域的值打印出来。定义一个长整数相加的函数,实现两个长整数加法运算的功能,实际上是对双向循环链表进行操作,这里包括结点空间的申请,插入结点,修改指针所保存的值。 当两个长整数完成加法运算后,我会定义一个显示结果的函数,将它们相加的结果打印出来。一些较大的整数,在单纯的用计算机进行相加运算的时候可能会产生溢出现象,但该系统每次只对4位整数进行运算,避免了数据过大在计算时产生的溢出问题。

相关文档
最新文档