课题 BCD码加法器
vhdl BCD码加法器

实验一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;九、实验总结。
BCDadder实验报告

4'd2: display3 = 7'b0100100;
4'd3: display3 = 7'b0110000;
4'd4: display3 = 7'b0011001;
4'd5: display3 = 7'b0010010;
4'd6: diisplay2 = 7'b1111001;
4'd2: display2 = 7'b0100100;
4'd3: display2 = 7'b0110000;
4'd4: display2 = 7'b0011001;
4'd5: display2 = 7'b0010010;
4'd6: display2 = 7'b0000010;
4'd7: display3 = 7'b1111000;
4'd8: display3 = 7'b0000000;
4'd9: display3 = 7'b0011000;
default: display3 = 7'b1000000;
endcase
case(B1)
4'd0: display4 = 7'b1000000;
4'd8: display6 = 7'b0000000;
4'd9: display6 = 7'b0011000;
default: display6 = 7'b1000000;
endcase
8421BCD码加法器

电子线路课程设计(报告)题目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码加法器设计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码加法器

电子线路课程设计(报告)题目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。
2位BCD码加法器

深圳大学实验报告课程名称:可编程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个开关为输入加数和被加数。
实验BCD码加法器

实验二 文本输入方式设计数字逻辑电路一、实验目的: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码加法器

深圳大学实验报告课程名称:可编程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;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题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.心得体会。