《数字设计-组合逻辑电路-BCD加法器课程设计报告(共6页).docx》由会员分享,可在线阅读,更多相关《数字设计-组合逻辑电路-BCD加法器课程设计报告(共6页).docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上电 子 科 技 大 学数 字 电 路课 程 设 计 报 告姓名: 张华博 学号:04 选课号: 132 指导老师: 张刚 组合逻辑电路课程设计16位BCD码加法运算器的实现 使用芯片74x283、74x157及与、或、非门器件设计一个电路,实现16位BCD加法运算。画出电路逻辑图,并用Verilog HDL进行仿真。注:74x283是4位二进制先行进位加法器,输入端有:Cin、A3:0、B3:0; 输出端有:Cout、S3:0;其功能大致可以表示为:Cout,S=A+B+Cin74x157为多路复用器,输入端有:S、A3:0、B3:0;输出端有:Y3:0;其功能为:Y
2、=SA+SB分析 16位BCD码加法器,即:4位10进制加法器。记两加数分别为A、B,进位为Cin,和为Sum对十进制有: Cin个位, Sum个位=A个位+B个位 Cin十位, Sum十位=A十位+B十位+Cin个位 Cin百位, Sum百位=A百位+B百位+Cin十位 Cin千位, Sum千位=A千位+B千位+Cin百位易知:各数位运算规则基本相同,所以设计BCD加法器时可先独立设计4位(即:十进制一位)加法器。设计求和结果的不同表示形式如下表,使用74x283求和后的输出形式为普通二进制,最终输出结果为BCD码表示。由表易知:当(S1 + S2)S3 + Cout=0时,Y=S;当(S1
3、 + S2)S3 + Cout=1时, Y0=S0 Y1=S1 Y2=S1S2 + S1S2 Y3=S3S2 S1S0显然,Y与S之间可用74x157多路复用器进行转换74x157芯片的选择输入端为:s =(S1 + S2)S3 + Cout 普通2进制表示 BCD码表示 CoutS3S2S1S0CoutY3Y2Y1Y00000000000000010000100010000100001100011001000010000101001010011000110001110011101000010000100101001010101000001011100010110010010011011001
4、1011101010001111101011000010110100011011110010110001001111001逻辑图据分析易得BCD加法器个位部分逻辑图如下图(1)所示; 图(1)16位加法器整体逻辑图如下图(2): 图(2)仿真(Verilog HDL) 首先,对74x283芯片进行仿真,定义adder模块如下:module adder(A,B,Cin,S,Cout); input 3:0 A,B,Cin; output 3:0 S; output Cout; assign Cout,S = A+B+Cin;endmodule然后,调用adder模块,组合设计BCDaddermo
5、dule BCDadder(C,D,Cin1,Su,CO); input 15:0 C,D; input 3:0 Cin1; output 15:0 Su; output CO; wire 15:0 S1,SS; wire 3:0 Cout1; adder(.A(C3:0),.B(D3:0),.Cin(Cin1),.S(S13:0),.Cout(Cout10); assign SS0=(S11|S12)&S13|Cout10; assign Su0 = S10; assign Su1 = SS0&(S11)|SS0&S11; assign Su2 =SS0&(S11S12)|SS0&S12;
6、assign Su3 =SS0&(S13&S12&S11&S10)|SS0&S13; adder(.A(C7:4),.B(D7:4),.Cin(SS3:0),.S(S17:4),.Cout(Cout11); assign SS4=(S15|S16)&S17|Cout11; assign Su4 = S14; assign Su5 = SS4&(S15)|SS4&S15; assign Su6 = SS4&(S15S16)|SS4&S16; assign Su7 = SS4&(S17&S16&S15&S14)|SS4&S17;adder(.A(C11:8),.B(D11:8),.Cin(SS7:
7、4),.S(S111:8),.Cout(Cout12); assign SS8=(S19|S110)&S111|Cout12; assign Su8 = S18; assign Su9 = SS8&(S19)|SS8&S19; assign Su10 =SS8&(S19S110)|SS8&S110; assign Su11 =SS8&(S111&S110&S19&S18)|SS8&S111; adder(.A(C15:12),.B(D15:12),.Cin(SS11:8),.S(S115:12),.Cout(Cout13); assign SS12=(S113|S114)&S115|Cout1
8、3; assign Su12 = S112; assign Su13 = SS12&(S113)|SS12&S113; assign Su14 = SS12&(S113S114)|SS12&S114; assign Su15= SS12&(S115&S114&S113&S112)|SS12&S115; assign CO=Cout13; endmodule仿真结果:可正确实现四位数字内的加法;总结: 此次课程设计是本人第一次独立完成的一个比较完整的“项目”,它集筛选(提出)问题、需求分析、提出设计方案、可行性分析、确定设计方案、实现、仿真检验等于一体,是对人综和素质的检验和锻炼;学习关于电子设
9、计的相关课程(电路分析、模拟电路、数字设计)已经有一年半的时间了,期间就只是做题和简单的仿真,觉得不过如此,挺简单的。但纸上得来终觉浅,虽然这只是一个很简单的设计,真正要动手的时候才发现不知该如何下手,几经辗转才了解电子设计的诸多流程。设计完成后,就要开始进行仿真了。要用到quartus II软件,就需要自学软件操作,上网搜教程掌握基本操作,翻课本找程序学习Verilog HDL;虽然有些困难,总是出现这样那样的问题,但,是问题总有解决的办法,通过学习,看着问题一个一个的被解决掉,这才发现自主学习是多么快乐的一件事,每解决一个问题,就会增加一份成就感!这比让老师逼着、管着去学效果要好的多,并且经过这次课程设计之后,我比以前更喜欢数字设计这门课了!总的来说,这次课程设计使我受益匪浅,使我分析问题的思路更清晰、目的更明确、解决方法更娴熟。虽然仿真程序还可简化改进,但是鉴于下午就要交报告,时间有点仓促,所以在此就不再赘言,课下我会略加改进。专心-专注-专业