课题 BCD码加法器
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
实验一BCD码加法器一、实验目的了解BCD 码的构成。
了解BCD 码加法器的原理和设计实现方法。
巩固Quartus II 的使用。
二、实验内容与要求通过键盘输入两组4BIT的二进制数据,按照二进制加法器原理进行加和,求出和合进位,并通过电路静态数码LED显示灯输出显示,完成编译、综合、适配、仿真、实验箱上的硬件测试。
三、实验平台(1)硬件:计算机、GX-SOC/SOPC-DEV-LABCycloneII EP2C35F672C8核心板(2)软件:Quartus II四、实验原理BCD码是二进制编码的十进制码,也就是用4位二进制数来表示十进制中的0~9这十个数。
由于4位二进制数有0000~1111共16种组合,而十进制数只需对应4位二进制数的10种组合,故从4位二进制数的16种组合中取出10种组合来分别表示十进制中的0~9,则有许多不同的取舍方式,于是变形成了不同类型的BCD码。
当BCD码相加的值小于等于9时,结果仍旧是正确的BCD码;当两个码相加的结果大于9时,必须作加6的修正处理,对于大于19的值作加12的修正处理,对于大于29的值作加18的修正处理。
然后根据仿真进行实验及验证。
六、仿真截图七、硬件实现八、程序代码1LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY f_ADDER IsPort (x: In Std_Logic;y: In Std_Logic;cin: In Std_Logic;cout: Out Std_Logic;sum: Out Std_Logic);END f_ADDER;ARCHITECTURE fd1 Of f_ADDER Is Component HADDERPort( a,b: In Std_Logic;co,so: Out Std_Logic);END Component;Component oraPort(a,b: In Std_Logic;c: Out Std_Logic);END Component;Signal d,e,f: Std_Logic;BeginU1: HADDERPort Map(a=>X,b=>Y,Co=>d,so=>e);U2:HADDERPort Map(a=>e,b=>cin,Co=>f,so=>sum);U3:ora Port Map(a=>d,b=>f,c=>cout);END ARCHITECTURE fd1;2LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY HADDER IsPort (a,b: In Bit;Co, So: Out Bit);END HADDER;ARCHITECTURE fh1 Of HADDER Is BEGINSo <= (a Xor b);Co <= (a And b);END fh1;3LIBRARY Ieee;USE Ieee.Std_Logic_1164.all;ENTITY ora IsPort ( a: in Std_Logic;b: in Std_Logic;c: out Std_Logic);END ora;ARCHITECTURE org OF ora ISBEGINc <= a Or b;END org;4Library ieee;Use ieee.std_logic_1164.all;Entity Qadd isPort (a:in std_logic_VECTOR(7 DOWNTO 0);b:in std_logic_VECTOR(7 DOWNTO 0);--cin:in std_logic;s:out std_logic_VECTOR(7 DOWNTO 0));End Qadd;Architecture one of Qadd isSignal c0,c1,c2,c3,c4,c5,c6,c7 : std_logic;Component f_ADDERPort (x: In Std_Logic;y: In Std_Logic;cin: In Std_Logic;cout: Out Std_Logic;sum: Out Std_Logic);END Component;Beginu1 :F_ADDERPort map(sum=>s(0),cout=>c0,X=>a(0),Y=>b(0),cin=>'0'); u2 :F_ADDERPort map(sum=>s(1),cout=>c1,X=>a(1),Y=>b(1),cin=>c0 ); u3 : F_ADDERPort map(sum=>s(2),cout=>c2,X=>a(2),Y=>b(2),cin=>c1 ); u4 : F_ADDERPort map(sum=>s(3),cout=>c3,X=>a(3),Y=>b(3),cin=>c2 ); u5 : F_ADDERPort map(sum=>s(4),cout=>c4,X=>a(4),Y=>b(4),cin=>c3 ); u6 : F_ADDERPort map(sum=>s(5),cout=>c5,X=>a(5),Y=>b(5),cin=>c4 ); u7 :F_ADDERPort map(sum=>s(6),cout=>c6,X=>a(6),Y=>b(6),cin=>c5 ); u8 : F_ADDERPort map(sum=>s(7),cout=>c7,X=>a(7),Y=>b(7),cin=>c6 ); END;九、实验总结。
电子线路课程设计(报告)题目8421BCD码加法器院系物理与电子工程学院专业光电信息科学与工程班级Z052132 学号052513212学生姓名李晓刚指导教师徐竞日期2015年6月目录一题目要求与方案论证 (1)1.1 8421BCD码加法器 (1)1.1.1题目要求 (1)1.1.2 方案论证 (1)二电子线路设计与实现 (3)2.1 8421BCD码加法器的设计 (3)三结果与分析 (8)3.1 8421BCD码加法器的实现 (8)四总结与体会 (10)参考文献 (11)附录 (12)一题目要求与方案论证1.1 8421BCD码加法器1.1.1题目要求通过开关J1~J8分别设置2个4位8421BCD码输入,通过全加器,实现相加后的输出,结果采用数码管观察。
主要芯片:2个全加器(4008BD)、开关、数码管(2个),其他元件、门电路任选1.1.2 方案论证表1.1 4008BD功能表表1.2 74HC85AD的真值表表1.3 74LS48功能表由真值表可知:两个四位8421BCD码通过4008BD全加器相加后得到的是一个四位的8421码或五位的168421码,故不能直接通过两个数码管来显示出运算结果,所以要把计算结果转换为10进制,然后将个位和十位的数字分别由对应的8421BCD码通过译码器芯片74LS48,把运算结果用数码管显示出来。
如下表所示:表1.4 数制转换二电子线路设计与实现2.1 8421BCD码加法器的设计一、数据的产生与输入通过J1~J8八个单刀双掷开关在+5V和GND之间的切换来产生两个4位8421BCD码作为输入的数据,当开关打到+5V时输入数据1,打到GND时输入数据0。
其中J1~J4分别为数据A0~A3,J5~J8分别为数据B0~B3,且A3~A0、B3~B0的位权依次降低。
其电路图如下所示:图2.1.1 数据产生电路二、加法电路把上面得到的两个四位8421BCD码分别输入4008BD全加器的输入端A3~A0、B3~B0,同时CIN输入端接低电平。
2位BCD码加法器设计2位BCD码加法器设计⼀、源程序module adder(A0,A1,B0,B1,a0,a1,b0,b1,s0,s1,s2); //模块名为adder和端⼝列表input[3:0]A0,A1,B0,B1;//定义模块的输⼊端⼝,分别表⽰数A的个位、⼗位,数B的个位、⼗位。
output[6:0]a0,a1,b0,b1,s0,s1,s2;//定义模块的输出端⼝,分别表⽰数码管输出的加数,被加数,和的各位。
reg[6:0]a0,a1,b0,b1,s0,s1,s2;reg[4:0]T0,T1;reg[3:0]Z0,Z1;reg c1,c2,S2;//定义S2为和的百位,其他均为中间变量。
reg[3:0]S0,S1;//定义S0为和的个位。
S1为和的百位。
alwaysbeginT0 = A0 + B0;if(T0 > 9)//判断⼗位是否有进位,有则c1=1,没有c1=0。
beginZ0 = 10;c1 = 1;endelsebeginZ0 = 0;c1 = 0;endS0 = T0-Z0;//和个位的算法。
T1 = A1 + B1 + c1;if (T1 > 9)//判断百位是否有进位,有则c2=1,没有c2=0。
Z1 = 10;c2 = 1;endelsebeginZ1 = 0;c2 = 0;endS1 = T1-Z1;//和⼗位的算法。
S2 = c2;//和百位的算法。
End//利⽤case语句分别让数码管显⽰加数,被加数,和的各位。
always @(A0)begincase(A0)4'd0:a0=7'b0000001;4'd1:a0=7'b1001111;4'd2:a0=7'b0010010;4'd3:a0=7'b0000110;4'd4:a0=7'b1001100;4'd5:a0=7'b0100100;4'd6:a0=7'b0100000;4'd7:a0=7'b0001111;4'd8:a0=7'b0000000;4'd9:a0=7'b0000100;default: a0=7'bx;endalways @(A1) begincase(A1)4'd0:a1=7'b0000001; 4'd1:a1=7'b1001111; 4'd2:a1=7'b0010010; 4'd3:a1=7'b0000110; 4'd4:a1=7'b1001100;4'd5:a1=7'b0100100; 4'd6:a1=7'b0100000; 4'd7:a1=7'b0001111; 4'd8:a1=7'b0000000; 4'd9:a1=7'b0000100; default: a1=7'bx; endcaseendalways @(B0)begincase(B0)4'd0:b0=7'b0000001; 4'd1:b0=7'b1001111; 4'd2:b0=7'b0010010; 4'd3:b0=7'b0000110; 4'd4:b0=7'b1001100;4'd5:b0=7'b0100100;4'd7:b0=7'b0001111; 4'd8:b0=7'b0000000; 4'd9:b0=7'b0000100; default: b0=7'bx; endcaseendalways @(B1)begincase(B1)4'd0:b1=7'b0000001; 4'd1:b1=7'b1001111; 4'd2:b1=7'b0010010; 4'd3:b1=7'b0000110; 4'd4:b1=7'b1001100;4'd5:b1=7'b0100100; 4'd6:b1=7'b0100000; 4'd7:b1=7'b0001111; 4'd8:b1=7'b0000000; 4'd9:b1=7'b0000100; default: b1=7'bx; endcaseendalways @(S0)begincase(S0)4'd0:s0=7'b0000001;4'd2:s0=7'b0010010; 4'd3:s0=7'b0000110; 4'd4:s0=7'b1001100; 4'd5:s0=7'b0100100; 4'd6:s0=7'b0100000;4'd7:s0=7'b0001111; 4'd8:s0=7'b0000000; 4'd9:s0=7'b0000100; default: s0=7'bx; endcaseendalways @(S1) begincase(S1)4'd0:s1=7'b0000001; 4'd1:s1=7'b1001111; 4'd2:s1=7'b0010010; 4'd3:s1=7'b0000110; 4'd4:s1=7'b1001100;4'd5:s1=7'b0100100; 4'd6:s1=7'b0100000; 4'd7:s1=7'b0001111; 4'd8:s1=7'b0000000; 4'd9:s1=7'b0000100; default: s1=7'bx; endcaseendalways @(S2) begincase(S2)4'd0:s2=7'b0000001; 4'd1:s2=7'b1001111; 4'd2:s2=7'b0010010; 4'd3:s2=7'b0000110; 4'd4:s2=7'b1001100;4'd5:s2=7'b0100100; 4'd6:s2=7'b0100000; 4'd7:s2=7'b0001111; 4'd8:s2=7'b0000000; 4'd9:s2=7'b0000100; default: s2=7'bx; endcaseendendmodule⼆、仿真结果能够完成从1到99的加法运算,并且正常显⽰。
电子线路课程设计(报告)题目8421BCD码加法器系别物理与电子科学系专业电子科学与技术班级08电科(4)班学号*********学生姓名吴迪指导教师徐竞日期2010.7.10~2010.7.15目录一题目要求与方案论证 (2)1.1设计题目 (2)1.1.1题目要求 (2)1.1.2 方案论证 (2)二电子线路设计与实现 (4)2.18421BCD加法器的设计 (4)2.28421BCD加法器的构成 (5)三结果与分析 (9)3.1两个四位8421BCD码加法的实现 (9)3.2调试注意事项 (10)四总结与体会 (11)参考文献 (12)附录 (13)一题目要求与方案论证1.1设计题目8421BCD码加法器1.1.1题目要求通过开关J1~J8分别设置2个4位8421BCD码输入,通过全加器,实现相加后的输出,结果采用数码管观察。
主要芯片:2个全加器(4008BD)、开关、数码管(2个),其他元件、门电路任选1.1.2 方案论证表1.1 4008BD功能表表1.2 74HC4511功能表有真值表可知:两个四位8421BCD码相加后得到的是一个四位或五位的二进制数,不好直接通过两个数码管来显示运算结果,所以要考虑用两个4008BD全加器来把计算结果转换为8421BCD码来输入显示译码器,从而实现把运算结果用数码管显示出来。
如下表所示:表1.3 数制转换二电子线路设计与实现2.1 8421BCD加法器的设计一、根据题目要求得到其功能表如下:二、由表我们可以算出Y的表达式由前16项有(1)3210321032103210321032103231Y S S S S S S S S S S S S S S S S S S S S S S S S S S S S =+++++=+(2)由后10项有1O Y C ==由(1)(2)有Y=C O +S 3S 2+S 3S 1三、理论图图2.1 逻辑电路图2.2 8421BCD 加法器的构成一、数据的产生与输入通过J1~J8八个单刀双掷开关在+5V 和GND 之间的切换来产生两个4位8421BCD 码作为输入的数据,当开关打到+5V 时输入数据1,打到GND 时输入数据0。
深圳大学实验报告课程名称:可编程ASIC设计实验项目名称: 2位BCD码加法器学院:电子科学与技术学院专业:电子科学与技术指导教师:刘春平报告人:学号:班级:电子2班实验报告提交时间: 2015-3-9一、设计原理图1 2位BCD码加法器整体框架图本实验制作一个2位BCD码加法器,其整体框架图如图1所示。
本制作用VerilogHDL 编程,在DE2平台上实现加数、被加数、和分别用数码管显示。
整体由2个子模块构成:2位BCD码加法器模块、七段数码管译码器模块(7个)。
图中A0、A1、B0、B1、S0、S1均为4bit的端口,S2为1bit的端口,A0为第一个加数的个位,A2为第一个加数的十位,B0为第二个加数的个位,B1为第二个加数的十位,S0为和的个位,S1为和的十位,S2为和的百位(进位)。
二、源程序代码//①顶层模块module BCDadder2(A0,A1,B0,B1,OUT0,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7);input [3:0] A0,A1,B0,B1;output[6:0] OUT0,OUT1,OUT2,OUT3,OUT4,OUT5,OUT6,OUT7;wire[3:0] S1,S0;wire S2;adder2 adder(A0,A1,B0,B1,S0,S1,S2);decode4_7 U0(OUT0,S0);decode4_7 U1(OUT1,S1);decode4_7 U2(OUT2,S2);decode4_7 U3(OUT3,A0);decode4_7 U4(OUT4,A1);decode4_7 U5(OUT5,B0);decode4_7 U6(OUT6,B1);decode4_7 U7(OUT7,0); //OUT7只是为了将无用的数码管置0 endmodule//②2位BCD码加法器模块module adder2(A0,A1,B0,B1,S0,S1,S2);input [3:0] A0,A1,B0,B1;output[3:0] S0,S1;output S2;reg S2;reg[3:0] S0,S1;reg[4:0] T1,T2,Z1,Z2;reg C1,C2;always @(A0 or A1 or B0 or B1)beginT1<=A0+B0;if(T1>9)beginZ1<=10;C1<=1;endelsebeginZ1<=0;C1<=0;endS0<=T1-Z1;T2<=A1+B1+C1;if(T2>9)beginZ2<=10;C2<=1;endelsebeginZ2<=0;C2<=0;endS1<=T2-Z2;S2<=C2;endendmodule//③七段数码管译码器模块module decode4_7(decodeout,indec);output[6:0] decodeout;input[3:0] indec; //4位十进制表示1位十进制数reg[6:0] decodeout;always @(indec)begincase(indec) //用case 语句进行译码//七段数码管为共阴连接4'd0:decodeout=7'b1000000;4'd1:decodeout=7'b1111001;4'd2:decodeout=7'b0100100;4'd3:decodeout=7'b0110000;4'd4:decodeout=7'b0011001;4'd5:decodeout=7'b0010010;4'd6:decodeout=7'b0000010;4'd7:decodeout=7'b1111000;4'd8:decodeout=7'b0000000;4'd9:decodeout=7'b0010000;default: decodeout=7'bz;endcaseendendmodule三、仿真结果1、2位BCD码加法器模块仿真结果如图2所示:图2 2位BCD码加法器模块仿真结果2、译码器模块仿真结果如图3所示:图3 译码器模块仿真结果3、顶层模块仿真结果如图4所示:图4 顶层模块仿真结果四、实验结果1、模块引脚分配如图5所示:图5 模块引脚分配2、DE2演示结果如下:如图6、图7所示,数码管为加数、被加数、和的显示模块,从右到左,前三个为和结果,第五和第六个为加数,第七和第八个为被加数;下面一排从右到左16个开关为输入加数和被加数。
实验二 文本输入方式设计数字逻辑电路一、实验目的:1、 掌握VHDL 语言的基本语法和设计文件的基本结构。
2、 掌握组合逻辑电路的特性及设计和调试方法。
3、 掌握时序逻辑电路的特性及设计和调试方法。
4、 掌握常用的组合逻辑电路和时序逻辑电路的设计方法。
二、实验的硬件要求:1、 EDA/SOPC 实验箱。
2、 计算机。
三、实验原理数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。
组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。
时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。
1、组合逻辑电路①组合逻辑电路的定义通常组合逻辑电路可以用图1.1所示结构来描述。
其中,X0、X1、…、Xn 为输入信号, L0、L1、…、Lm 为输出信号。
输入和输出之间的逻辑函数关系可用式1.1表示: ②组合逻辑电路的设计方法组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。
理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。
在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。
设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。
组合电路的基本设计步骤可用图1.2来表示。
③组合逻辑电路的特点及设计时的注意事项a)组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。
(实际电路中图 2.1 组合逻辑电路框图L0=F0(X0,X1,···Xn) · · ·Lm=F0(X0,X1,···Xn)(1.1)图 2.2 组合电路设计步骤示意图图还要考虑器件和导线产生的延时)。
深圳大学实验报告课程名称:可编程ASIC课程实验名称:2位BCD码加法器学院:电子科学与技术学院专业:电子科学与技术班级:组号:指导教师:报告人:学号:实验地点一、实验目的完成2位BCD码加法器的设计,要求用VerilogHDL编程,在DE2平台上实现,加数、被加数、和分别用数码管显示。
在DE2平台上下载并演示实验结果二、实验原理图中A0 A1 B0 B1 S0 S1均为4bit的端口,S2为1bit的端口。
利用bcd加法器实现两位数的加法实现三、实验内容利用参考算法的逻辑,思思索出具体的代码源程序编码:modulebcd(a0,a1,b0,b1,displaya0,displaya1,displayb0,displayb1,displays0,displays1,di splays2,displayss,clk);input [3:0] a0,a1,b0,b1; //输入端口input clk; //实现清除和计算output[6:0]displays0,displays1,displays2,displaya0,displaya1,displayb0,displayb1,displayss; //输出端口reg [3:0]s0,s1,s2,ss;reg [4:0]t0,t1,c1,c2,z0,z1;reg[6:0]displays0,displays1,displays2,displaya0,displaya1,displayb0,displayb1,dis playss;always@(posedge clk) // 逻辑实现begint0=a0+b0;if(t0>9)beginz0=10;c1=1;endelsebeginz0=0;c1=0;endbegint1=a1+b1+c1;if(t1>9)beginz1=10;c2=1;endelsebeginz1=0;c2=0;endendbegins0=t0-z0;s1=t1-z1;s2=c2;endendalways @(clk)begindisplayss<=display(ss); //显示等号endfunction[6:0] display;input[3:0] ss;如有你有帮助,请购买下载,谢谢!begincase(ss)4'd0:display=7'b0110_111;default:display=7'b0110_111;endcaseendendfunctionalways @(a0)begincase(a0)4'd0:displaya0=7'b1000000;4'd1:displaya0=7'b1111001;4'd2:displaya0=7'b0100100;4'd3:displaya0=7'b0110000;4'd4:displaya0=7'b0011001;4'd5:displaya0=7'b0010010;4'd6:displaya0=7'b0000010;4'd7:displaya0=7'b1111000;4'd8:displaya0=7'b0000000;4'd9:displaya0=7'b0010000;default:displaya0=7'b1000_000;endcaseendalways @(a1)begincase(a1)4'd0:displaya1=7'b1000000;4'd1:displaya1=7'b1111001;4'd2:displaya1=7'b0100100;4'd3:displaya1=7'b0110000;4'd4:displaya1=7'b0011001;4'd5:displaya1=7'b0010010;4'd6:displaya1=7'b0000010;4'd7:displaya1=7'b1111000;4'd8:displaya1=7'b0000000;4'd9:displaya1=7'b0010000;default:displaya1=7'b1000_000;endcaseendalways @(b0)begincase(b0)4'd0:displayb0=7'b1000000;4'd1:displayb0=7'b1111001;。
课程设计报告设计题目:四位二进制8421BCD码加法器学院: 理学院专业: 09电子信息科学与技术班级: 1班学号: 200931120102; 200931120103; 200931120105 姓名:陈俊宇陈明源邓坤勇电子邮件: 1205335255@qq。
com 时间: 2011年12月8日成绩:指导教师: 刘丹华南农业大学理学院应用物理系课程设计(报告)任务书题目四位二进制加法器任务与要求:运用电子器件和一些IC芯片设计一个四位二进制8421BCD码加法器。
用以实现两个四位二进制数8421BCD码的加法通过数码管显示相加所得的两位十进制数。
用八个开关的开闭控制电平的高低,用高电平表示1;用低电平表示0。
将输入的高电平接入74LS283加法器进行运算。
得到的结果,分别将高低位输入74LS248译码器输出到两个七段数码管.由数码管显示加法结果得到的BCD码。
学会数字信号芯片的原理和在实际中的应用.开始时间:2011年12月1日;结束时间:2011年12月13日四位二进制8421BCD码加法器学生:陈俊宇,陈明源,邓坤勇;指导老师:刘丹摘要:本设计通过八个开关将A3,A2,A1,A0和B3,B2,B1,B0信号作为加数和被加数输入四位串行进位加法器相加,将输出信号S3,S2,S1,S0和向高位的进位C3各自分别通过一个 74LS248译码器,最后分别通过数码管实现二位BCD码显示。
关键词:加法器,译码器,数码管,BCD码显示。
Abstract: the design through eight switch will A3, A2, A1, A0 and B3, B2, B1, B0 signal as addend and BeiJiaShu input four serial carry adder addition, will output signal S3, S2, S1, to carry high and S0 C3 their respective through a 74 LS248 decoder, finally, through the digital tube realize two BCD display。
8421BCD 码加法器一、实验目的1、学习基于VHDL 语言设计组合逻辑。
2、学习VHDL 语言的编程规范,初步养成良好的编程习惯。
二、实验平台微机一台(Windows XP 系统、安装Quartus Ⅱ等相关软件)、CPLD学习板一块、5V 电源线一个、下载线一条。
三.思路分析:8421BCD 码加法器与一般二进制加法器的运算规则一样,不同的是,需要对相加以后的结果进行变换,保证相加之后的结果仍然为8421BCD 码。
实现可以分两步完成:首先将两个BCD 码按照二进制相加,然后将得到的二进制数转换为8421BCD 码。
上述过程可以用VHDL 设计实现。
四。
程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fulladd isport(a,b:in std_logic_vector(3 downto 0);g:out std_logic_vector(3 downto 0);s:out std_logic);end fulladd;architecture add of fulladd issignal sint,sint1:std_logic_vector(4 downto 0); signal aa,bb:std_logic_vector(4 downto 0);beginprocess(a,b)beginaa<='0'&a(3 downto 0);bb<='0'&b(3 downto 0);sint<=aa+bb;if sint<="01001"theng(3 downto 0)<=sint(3 downto 0);s<='0';elseif sint<="10010"thensint1<=sint+"00110";g(3 downto 0)<=sint1(3 downto 0);s<='1';elseg(3 downto 0)<="1111";s<='1';end if;end if;end process;end add; 五.实验结果:仿真结果:。
项目三BCD加法器设计与制作项目要求二进制加法器可以实现二进制数的加法运算,其结果也是二进制的结果。
但是在数字设备中,经常使用8421BCD码进行运算,此时使用的运算器也是二进制加法器,结果有时会出现错误,这是因为结果是二进制的而不是8421BCD码的。
请设计电路,用二进制加法器实现两个8421BCD码的加法运算并能将结果调整为正确结果。
项目目标:项目分三个任务进行实施,通过本项目的实施,达到如下目标:1.会用门电路、最小项译码器设计一位全加器并进行仿真。
2.会用一位全加器构成多位二进制加法器并仿真功能。
3.能认识集成加法器并能正确使用。
4.能正确区分二进制加法与BCD加法的关系。
5. 能对二进制加法的结果进行BCD调整并能仿真测试电路功能。
6.能制作出电路或在实训台上搭建电路,并进行验证和测试。
任务一:一位二进制加法器的设计与仿真⏹技能目标1.会用门电路、最小项译码器设计一位全加器。
2.会用仿真软件对全加器功能进行仿真。
3.会进行二进制加法运算。
⏹知识目标1.掌握半加器的基本功能2.掌握全加器的基本特点和功能3.掌握由门电路设计全加器的方法。
4.掌握由译码器设计全加器的方法。
⏹实践活动与指导教师先引导学生讨论二进制的加法,并进行半加器的设计和仿真,在此基础上引入全加器的概念并引导学生进行设计和仿真。
全加器的设计和采用门电路和最小项译码器进行。
⏹知识链接与扩展加法器是数字系统中运算的基础,在计算机中,加、减、乘、除等四则运算都可以按照一定的算法规则转换成加法运算来完成。
而任何复杂的加法器中,最基本的又是半加器和全加器。
一、半加器的设计一位二进制数相加,若只考虑两个加数本身,而不考虑来自相邻低位的进位,如图 3.1.1(a)所示,称为半加,实现半加运算功能的电路称为半加器。
根据加法法则可列出半加器的真值表如图3.1.1(b)所示,半加器的逻辑图和逻辑符号如图3.1.1(c)所示。
图 3.1.1 半加器的相关图由真值表可得出半加器的逻辑表达式:对于半加器的功能,可以使用图3.1.2所示电路进行仿真。
实验报告 课程名称:
单片机原理与应用技术 实验名称:
BCD 加法实验 实验地点:
单片机实验室 专业班级:
测控1401班
学号: 学生姓名:
郭佳鑫 指导教师:
温景国 2017年 4月 18日
2014001796
一、实验目的
1.通过常用指令的编辑练习,进一步理解并掌握MCS-51单片机的指令系统。
2.学习并掌握双字节BCD加法的程序设计。
3.学习汇编语言的程序设计基本方法。
二、实验原理
BCD码因其十进制的表示方式,在直接做二进制加法,发生进位时,结果可能会出现偏差,需人为校准。
三、实验仪器
1.PC机
2.操作系统:Windows XP
3.应用程序:Wave 6000
四、实验内容
程序代码如下:
运行结果如下:
可以看出,30H、31H中的5555与40H、41H中的5555相加得到结果为50H、51H、52H中的011110。
六、实验总结
实验一让我学初步了解了汇编语言的使用,对我今后的学习有很大的帮助。
同时,在做实验的过程中,我遇到的一些问题也使我对思考问题的方法,有了新的认识,还让我深刻体会到实验前的理论知识准备的重要,并且在做实验时最好先预习一下实验内容,这样更有利于实验的操作。
模为60的BCD码加法计数器设计一、实验原理计数器是大规模集成电路中运用最广泛的结构之一。
在模拟及数字集成电路设计当中,灵活地选择与使用计数器可以实现很多复杂的功能,可以大量减少电路设计的复杂度和工作量。
通过FPGA课程的学习,我运用Verilog HDL语言设计出了一种模为60的BCD码加法计数器,该计数器可以根据控制信号分别实现同步清零和同步置数,从给定的预置数开始计数,并给出详细的Verilog HDL 源代码。
最后,通过Quartus II对其进行仿真验证。
模为60的BCD码加法计数器有五个输入端和两个输出端。
当时钟信号的上升沿到来时,计数器自动加一,并通过同步清零端和同步置数端分别实现同步清零和同步置数。
端口介绍:clk:时钟信号,当上升沿到来时,计数器自动加一。
reset:同步清零端,高电平到来时,计数器自动清零。
load:同步置数端,高电平到来时,计数器从给定的预置数开始计数。
data:预置数cin:使能端,高电平到来时,计数器开始工作;低电平时,计数器不工作。
qout:输出端cout:进位输出,当计数器计到59时,产生进位输出信号。
二、Verilog HDL源程序module count60(qout,cout,data,load,cin,reset,clk);output[7:0] qout;output cout;input[7:0] data;input load,cin,clk,reset;reg[7:0] qout;always @(posedge clk) //上升沿时刻计数beginif(reset) qout=0; //同步复位else if(load) qout=data;//同步置数else if(cin)beginif(qout[3:0]==9) //低位是否为9,是则往下执行beginqout[3:0]=0; //低位清置零,并判断高位是否为5 if(qout[7:4]==5)qout[7:4]=0; //高位为5,则将高位置零elseqout[7:4]=qout[7:4]+1;//高位不为5,则加1 endelseqout[3:0]=qout[3:0]+1;endendassign cout=((qout==8'h59)&cin)? 1:0;//产生进位输出信号endmodule三、Quartus II时序仿真图1 模为60的BCD码加法计数器工作时序图2 模为60的BCD码加法计数器工作时序图1和图2为计数器从0计到59的工作时序,当时钟信号(clk)上升沿到来时,计数器加1,一直计到59产生进位输出信号,此时进位输出信号(cout)由低电平变为高电平。
加法器与译码器显示器的应用
一、实验目的
用一片四位全加器74LS83和门电路设计一位8421BCD码加法器。
要求如下
1、加法器输出的和数也为8421BCD码。
2、画出逻辑图,写出设计步骤。
3、用LED数码管显示和数。
二、实验器材:
一片四位全加器74LS83、两片与非门74LS00、一片BCD-七段显示译码器74LS48、一片共阴极LED管、七个单刀单掷开关,七个20欧姆的电阻和5个1k欧姆的电阻。
三、实验原理,
由于一位8421BCD数A加一位数B有0到18这十九种结果。
而且由于显示的关系当大于9的时候要加六(0110)转换才能正常显示,当数字大于15(1111)时,也要进位,真值表如图
Co A4 A3 A2 A1
10 0 1 0 1 0
11 0 1 0 1 1
12 0 1 1 0 0
13 0 1 1 0 1
14 0 1 1 1 0
15 0 1 1 1 1
16 1 0 0 0 0
17 1 0 0 0 1
18 1 0 0 1 0
由真值表得,进位Y=CO+A3A4+A2A4.
由进位逻辑函数式画出与非门的逻辑图用两片74LS00代替六个与非门如图,四、实验步骤。
(1)、如图连线
(2)接上电源并测试。
(3)查看是否与数A加数B的结果符合
五、实验结论:
如果想用两个数码管显示两位数则加一个74LS48和LED数码管即可,如图。
课题BCD码加法器
一、课题目的
1.熟练掌握用VHDL语言的行为描述及构造体描述设计组合电路。
2.初步掌握真值表的设计。
二、课题原理
BCD码是一种二进制代码表达的十进制数。
BCD码与四位二进制代码关系如下表所示,从表中可以看到从0-9时,BCD码与四位二进制码相同。
从10-15后,BCD码等于四位二进制码加“0110”。
这个关系构成了四位二进制码与BCD码的转换关系,同时也是用四位二进制加法器实现BCD码加法的算法基础。
设计BCD码加法器首先要将两个BCD码输入到二进制加法器相加,得到的和数是一个二进制数,然后通过下表将四位二进制码转换成BCD码。
BCD码与四位二进制代码关系
三、课题内容
1.用VHDL语言的行为描述方式设计BCD码加法器,并用仿真文件验证设计正确性。
2.选做题(提高部分)当两数相加大于19时,输出将显示00,并且会闪动(用64Hz 频率控制闪动),另外扬声器会报警。
四、设计提示
1.用VHDL语言的构造体描述方式设计时,加“6”校正电路实现真值表的设计。
2.用VHDL语言的行为描述方式设计时,要用条件语言判断两个BCD码数相加后是否大于9,当大于9时,采取加“6”教正。
五、课题报告要求
1.叙述所设计的BCD码加法器电路工作原理。
2.写出用VHDL语言的构造体描述方式设计BCD码加法器的各模块源文件。
3.写出用VHDL语言的行为描述方式设计BCD码加法器的源文件。
4.心得体会。