数字电路课程设计_第1页
数字电路课程设计_第2页
数字电路课程设计_第3页
数字电路课程设计_第4页
数字电路课程设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字电路课程设计 学生姓名: 学号:学院:通信指导老师:郭磊目录课程设计一:多数表决器课程设计二:一位全加器课程设计三:四位主蕴含项探测器课程设计四:四位二进制数格雷码转换器课程设计五:四位密码锁课程设计六:手动记分控制电路课程设计七:4位二进制全加器课程设计八:通道数据分时传送系统 一、多数表决器设计思路:奇数个人进行表决,若有一半以上的人同意,则输出1,否则输出0。把人等效成输入端,则此表决器有三个输入,一个输出端,在其中两个输入端为1时输出1,否则输出0。真值表和器件的模型如上图所示。用verilog进行仿真有如下结果:实验代码:modulemajorit(a,b,c,f );outpu

2、t f;input a,b,c;wire x,y,z;assign x=a&b;assign y=a&c;assign z=a&b&c;assign f=x|y|z;endmodule得出的器件形式如下:进行测试,测试代码如下:module HHH;/ Inputsreg a;reg b;reg c;/ Outputswire f;/ Instantiate the Unit Under Test (UUT)majorituut (.a(a), .b(b), .c(c), .f(f);initial begin/ Initialize Inputsa = 0;b

3、 = 0;c = 0;/ Wait 100 ns for global reset to finish#10;/ Add stimulus here#10 a=0;b=0;c=0; #10 a=0;b=0;c=1;#10 a=0;b=1;c=0;#10 a=0;b=1;c=1;#10 a=1;b=0;c=0;#10 a=1;b=0;c=1;#10 a=1;b=1;c=0;#10 a=1;b=1;c=1;endendmodule测试波形图:二、一位全加器设计思路:按照二进制数加法的方法,将三个输入端(包括进位端,加数端)进行运算,并且列出真值表,画出卡诺图并化简,即可得到一位全加器的逻辑函数式。

4、真值表如下:其中,a,b,c为全加器的输入端,a,b,为数位,ci为输入的进位端,co为进位输出端,s为最终的和。用verilog进行仿真有如下结果:测试代码:modulefulladder(a,b,ci,s,co );outputs,co;inputa,b,ci;wire x1,x2,x3,x4,x5,x6,x7;and(x1,!a,b,ci);and(x2,a,!b,!ci);and(x3,!a,b,!ci);and(x4,a,b,ci);and(x5,a,b);and(x6,a,ci);and(x7,!a,b,ci);assign s=x1|x2|x3|x4;assign co=x5|x

5、6|x7;endmodule得出的器件内部结构为:进行测试,测试代码如下:moduleeee;/ Inputsreg a;reg b;reg ci;/ Outputswire s;wire co;/ Instantiate the Unit Under Test (UUT)fulladderuut (.a(a), .b(b), .ci(ci), .s(s), .co(co);initial begin/ Initialize Inputsa = 0;b = 0;ci = 0;/ Wait 100 ns for global reset to finish#10;/ Add stimulus h

6、ere #10 a=0;b=0;ci=0; #10 a=0;b=0;ci=1; #10 a=0;b=1;ci=0; #10 a=0;b=1;ci=1; #10 a=1;b=0;ci=0; #10 a=1;b=0;ci=1; #10 a=1;b=1;ci=0; #10 a=1;b=1;ci=1;endendmodule测试得到的波形图为:三、四位主蕴含项探测器设计思路:我们可以将一个真值表写成标准和与标准积的形式,而此探测器要求我们探测出其标准和形式。当输入为(1,2,3,5,7,11,13)时,输出为一,否则为0。真值表如下:其中,a3,a2,a1,a0从高往低依次为输入端,f为输出端。用ve

7、rilog进行仿真有如下结果:实验代码:module detector(a0,a1,a2,a3,f );output f;input a0,a1,a2,a3;wire w1,w2,w3,w4;and(w1,!a3,a0);and(w2,a2,!a1,a0);and(w3,!a2,a1,a0);and(w4,!a3,!a2,a1);assign f=w1|w2|w3|w4;endmodule得出的封装内部结构为右图为模块内部结构进行测试,测试代码如下:modulessss;/ Inputsreg a0;reg a1;reg a2;reg a3;/ Outputswire f;/ Instanti

8、ate the Unit Under Test (UUT)detectoruut (.a0(a0), .a1(a1), .a2(a2), .a3(a3), .f(f);initial begin/ Initialize Inputsa0 = 0;a1 = 0;a2 = 0;a3 = 0;/ Wait 100 ns for global reset to finish#10;/ Add stimulus here #10 a0=0;a1=0;a2=0;a3=0; #10 a0=0;a1=0;a2=0;a3=1; #10 a0=0;a1=0;a2=1;a3=0; #10 a0=0;a1=0;a2=

9、1;a3=1; #10 a0=0;a1=1;a2=0;a3=0; #10 a0=0;a1=1;a2=0;a3=1; #10 a0=0;a1=1;a2=1;a3=0; #10 a0=0;a1=1;a2=1;a3=1; #10 a0=1;a1=0;a2=0;a3=0; #10 a0=1;a1=0;a2=0;a3=1; #10 a0=1;a1=0;a2=1;a3=0; #10 a0=1;a1=0;a2=1;a3=1; #10 a0=1;a1=1;a2=0;a3=0; #10 a0=1;a1=1;a2=0;a3=1; #10 a0=1;a1=1;a2=1;a3=0; #10 a0=1;a1=1;a2=

10、1;a3=1;endendmodule得到波形图为:四、四位二进制数格雷码转换器设计思路:二进制数转格雷码时,使最高位不变,最高位和下一位异或得到格雷码第二位,二进制数的第二位和其第三位进行异或得到格雷码的第三位,以后以此类推。直到最低位得到为止。列出真值表有其中,a3,a2,a1,a0依次为二进制数的最高位到最低位,f3,f2,f1,f0依次为格雷码的最高位到最低位。用verilog进行仿真有如下结果:实验代码:modulecocerter(a0,a1,a2,a3,f0,f1,f2,f3 );output f0,f1,f2,f3;input a0,a1,a2,a3;assign f3=a3;

11、assign f2=(!a3&a2)|(a3&!a2);assign f1=(a2&!a1)|(!a2&a1); assign f0=(a1&!a0)|(!a3&!a2&a1)|(a3&a2&a1)|(!a3&a2&!a1&a0)|(a3&!a2&!a1&a0);endmodule得到内部结构如下模块如下:进行测试,测试代码如下:moduleww;/ Inputsreg a0;reg a1;reg a2;reg a3;/ Outputswire f0;wire f1;wire

12、 f2;wire f3;/ Instantiate the Unit Under Test (UUT)cocerteruut (.a0(a0), .a1(a1), .a2(a2), .a3(a3), .f0(f0), .f1(f1), .f2(f2), .f3(f3);initial begin/ Initialize Inputsa0 = 0;a1 = 0;a2 = 0;a3 = 0;/ Wait 100 ns for global reset to finish#10;/ Add stimulus here #10 a0=0;a1=0;a2=0;a3=0; #10 a0=0;a1=0;a2

13、=0;a3=1; #10 a0=0;a1=0;a2=1;a3=0; #10 a0=0;a1=0;a2=1;a3=1; #10 a0=0;a1=1;a2=0;a3=0; #10 a0=0;a1=1;a2=0;a3=1; #10 a0=0;a1=1;a2=1;a3=0; #10 a0=0;a1=1;a2=1;a3=1; #10 a0=1;a1=0;a2=0;a3=0; #10 a0=1;a1=0;a2=0;a3=1; #10 a0=1;a1=0;a2=1;a3=0; #10 a0=1;a1=0;a2=1;a3=1; #10 a0=1;a1=1;a2=0;a3=0; #10 a0=1;a1=1;a2

14、=0;a3=1; #10 a0=1;a1=1;a2=1;a3=0; #10 a0=1;a1=1;a2=1;a3=1;endendmodule波形图五、四位密码锁设计思路:该锁有规定的地址代码A、B、C、D 4个输入端和一个开箱钥匙孔信号E的输入端。当用钥匙开箱时,如果输入的4个代码正确,保险箱被打开;否则,电路将发出警报。让输入端的四个值与已设置好的密码的值进行比较,比较时用同或逻辑,若相同,则有和使能端进行逻辑相与,最后将所有的可能性进行相或。列出真值表,按照真值表进行卡诺图化简。本设计方案中我采用多路复用器,2-4译码器,LED灯和或门等器件来完成设计。用2个74x151多路复用器扩展为1

15、6-2多路复用器,题目中的地址代码A、B、C、D4个输入端作为扩展的多路复用器的地址端,D0-D8作为数据端。开箱钥匙孔信号E作为2-4decoder的使能端。设计开锁的正确代码为0101,当用钥匙开锁(即2-4decoder的使能端有效)时,如果正确输入开锁密码:0101,则输出Y为逻辑高电平,Y为逻辑低电平,锁被打开,而LED灯不会亮(即不会报警);如果输入的密码错误或者钥匙孔信号无效,则输出Y为逻辑低电平,Y为逻辑高电平,锁无法打开,逻辑高电平Y驱动LED灯亮,产生报警效果真值表用verilog进行模拟代码为modulecipherlock(A,B,C,D,E,K,L );output

16、K,L;input A,B,C,D,E;wire w1,w2,w3,w4,w5;reg s1=0,s2=1,s3=1,s4=0;assign w1=As1;assign w2=Bs2;assign w3=Cs3;assign w4=Ds4;assign w5=w1&w2&w3&w4;assign K=w5&E;assign L=!w5&E;endmodule其中内部模块1的内部结构为:内部模块2的内部结构为进行测试,测试代码为:module test;/ Inputsreg A;reg B;reg C;reg D;reg E;/ Outputswire

17、K;wire L;/ Instantiate the Unit Under Test (UUT)cipherlockuut (.A(A), .B(B), .C(C), .D(D), .E(E), .K(K), .L(L);initial begin/ Initialize InputsA = 0;B = 0;C = 0;D = 0;E = 0;/ Wait 100 ns for global reset to finish#10;/ Add stimulus here #10 A=0;B=0;C=0;D=0;E=0; #10 A=0;B=0;C=0;D=1;E=1; #10 A=0;B=0;C

18、=1;D=0;E=0; #10 A=0;B=0;C=1;D=1;E=1; #10 A=0;B=1;C=0;D=0;E=0; #10 A=0;B=1;C=0;D=1;E=1; #10 A=0;B=1;C=1;D=0;E=0; #10 A=0;B=1;C=1;D=1;E=1; #10 A=1;B=0;C=0;D=0;E=0; #10 A=1;B=0;C=0;D=1;E=1; #10 A=1;B=0;C=1;D=0;E=0; #10 A=1;B=0;C=1;D=1;E=1; #10 A=1;B=1;C=0;D=0;E=0; #10 A=1;B=1;C=0;D=1;E=1; #10 A=1;B=1;C

19、=1;D=0;E=0; #10 A=1;B=1;C=1;D=1;E=1; #10 A=0;B=0;C=0;D=0;E=1; #10 A=0;B=0;C=0;D=1;E=0; #10 A=0;B=0;C=1;D=0;E=1; #10 A=0;B=0;C=1;D=1;E=0; #10 A=0;B=1;C=0;D=0;E=1; #10 A=0;B=1;C=0;D=1;E=0; #10 A=0;B=1;C=1;D=0;E=1; #10 A=0;B=1;C=1;D=1;E=0; #10 A=1;B=0;C=0;D=0;E=1; #10 A=1;B=0;C=0;D=1;E=0; #10 A=1;B=0;C

20、=1;D=0;E=1; #10 A=1;B=0;C=1;D=1;E=0; #10 A=1;B=1;C=0;D=0;E=1; #10 A=1;B=1;C=0;D=1;E=0; #10 A=1;B=1;C=1;D=0;E=1; #10 A=1;B=1;C=1;D=1;E=0;endendmodule波形图:六、显示0- 9的手动记分控制电路设计思路:根据设计要求,可以将电路分为3个部分:显示电路、BCD译码驱动电路、计分电路。因为电路需要编码,译码,自然想到了编码器74x148,因为需要十个输入端,则还应加上一些与或门。通过前部编码以后再把信号输入到七段译码器中,最后可以进行准确的0到9计分。真值

21、表用verilog进行模拟有代码为;module yimaqi(I,EN,SEGA,SEGB,SEGC,SEGD,SEGE,SEGF,SEGG);output SEGA,SEGB,SEGC,SEGD,SEGE,SEGF,SEGG;input 9:0I;input EN;reg SEGA,SEGB,SEGC,SEGD,SEGE,SEGF,SEGG;reg 1:7SEGS;wire A,B,C,D;wire 7:0H;assign H7=I7;assign H6=I6&!I7;assign H5=I5&!I6&!H7;assign H4=I4&!I5&!I6

22、&!I7;assign H3=I3&!I4&!I5&!I6&!I7;assign H2=I2&!I3&!I4&!I5&!I6&!I7;assign H1=I1&!I2&!I3&!I4&!I5&!I6&!I7;assign A=(!I8&!I9);assign B=!(H1&H3&H5&H7)|!I9;assign C=H2|H3|H6|H7;assign D=H4|H5|H6|H7;always (A or B or C or D or

23、 EN) beginif(EN)case(D,C,B,A) 0: SEGS=7'b1111110;1: SEGS=7'b0110000;2: SEGS=7'b1101101;3: SEGS=7'b1111001;4: SEGS=7'b0110011;5: SEGS=7'b1011011;6: SEGS=7'b0011111;7: SEGS=7'b1110000;8: SEGS=7'b1111111;9: SEGS=7'b1110011;default SEGS=7'bx;endcaseelse SEGS=7

24、'b0; SEGA,SEGB,SEGC,SEGD,SEGE,SEGF,SEGG=SEGS;endendmodule得到电路为从左到右的八个内部模块依次如下进行测试,测试代码如下module test;/ Inputsreg 9:0 I;reg EN;/ Outputswire SEGA;wire SEGB;wire SEGC;wire SEGD;wire SEGE;wire SEGF;wire SEGG;/ Instantiate the Unit Under Test (UUT)yimaqiuut (.I(I), .EN(EN), .SEGA(SEGA), .SEGB(SEGB),

25、.SEGC(SEGC), .SEGD(SEGD), .SEGE(SEGE), .SEGF(SEGF), .SEGG(SEGG);initial begin/ Initialize InputsI = 0;EN = 0;/ Wait 100 ns for global reset to finish#20;/ Add stimulus here#10 I0=1;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=1;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I

26、1=0;I2=1;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=1;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I4=1;I5=0;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=1;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=1;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I

27、2=0;I3=0;I4=0;I5=0;I6=0;I7=1;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=1;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=1;EN=1;#10 I0=1;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=1;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=1;I

28、3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=1;I4=0;I5=0;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=0;I4=1;I5=0;I6=0;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=1;I6=0;I7=0;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=1;I7=0;I8=0;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I

29、4=0;I5=0;I6=0;I7=1;I8=0;I9=0;EN=0;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=1;I9=0;EN=1;#10 I0=0;I1=0;I2=0;I3=0;I4=0;I5=0;I6=0;I7=0;I8=0;I9=1;EN=0;endendmodule波形图:七、4位二进制全加器设计思路:加法器是产生数的和的装置。加数和被加数为输入,和数与进位为输出的装置为半加器。若加数、被加数与低位的进位数为输入,而和数与进位为输出则为全加器。常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。在电子学中,加法器是一种数位电路,

30、其可进行数字的加法计算。在现代的电脑中,加法器存在于算术逻辑单元(ALU)之中。加法器可以用来表示各种数值,如:BCD、加三码,主要的加法器是以二进制作运算。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运行速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行加法器的资源占用差距也会越来越大。我们采用4位二进制并行加法器作为折中选择,所选加法器为4位二进制先行进位的74LS283,它从C0到C4输出的传输延迟很短,只用了几级逻辑来形成和及进位输出,由其构成4位二进制全加器。真值表用verilog仿真有实验代码modulefullad

31、der(A,B,C0,S,C4);output 3:0S;output C4;input 3:0A,B;input C0;wire C1,C2,C3;assign C1=(A0|B0)&C0+(A0&B0);assign C2=(A1&B1)+(A1|B1)&C1;assign C3=(A2&B2)+(A2|B2)&C2;assign C4=(A3&B3)+(A3|B3)&C2; assignS0=(A0|B0)&!(A0&B0)&!C0)|(!(A0|B0)&!(A0&B0)&C0

32、); assignS1=(A1|B1)&!(A1&B1)&!C1)|(!(A1|B1)&!(A1&B1)&C1); assignS2=(A2|B2)&!(A2&B2)&!C2)|(!(A2|B2)|(A2&B2)&C2); assignS3=(A3|B3)&!(A3&B3)&!C3)|(!(A3|B3)|(A3&B3)&C3);endmodule内部结构其内部六个模块内部结构依次如下测试代码如下module test;/ Inputsreg 3:0 A;reg 3:0

33、 B;reg C0;/ Outputswire 3:0 S;wire C4;/ Instantiate the Unit Under Test (UUT)fulladderuut (.A(A), .B(B), .C0(C0), .S(S), .C4(C4);initial begin/ Initialize InputsA = 0;B = 0;C0 = 0;/ Wait 100 ns for global reset to finish#20;/ Add stimulus here #10 A=4'b1000;B=4'b0111;#10 A=4'b1110;B=4

34、9;b0100;#10 A=4'b1001;B=4'b0101;#10 A=4'b0110;B=4'b0011;#10 A=4'b0001;B=4'b1110;#10 A=4'b0011;B=4'b0101;#10 A=4'b1010;B=4'b0001;#10 A=4'b0010;B=4'b1000;endendmodule波形图八、通道数据分时传送系统设计思路:多通道数据分时传送系统原理是,通过数据选择器将并行数据分时一一送出,再通过数据分配器(用译码器实现)将接收到的串行数据分配到其各个相应的

35、输出端口,从而恢复原来的并行数据数据分配器选用74x154,为416线译码器,数据选择器选用74x151,为8选1数据选择器。74X151功能表74X154功能表由于74hc154为416译码器,故需要两片74ls151,级联成161多路复用器。 故多通道数据分时传送系统真值表为:(令并行数据为D0,D1,D2,D3,D4,D5,D6,D7,D8,D9)真值表为仿真有,代码为:module transmit(EN,D,A,Z,Y1,Y2,Y1_L,Y2_L );output 15:0Z;output Y1,Y2,Y1_L,Y2_L;input 15:0D;input EN;input 3:0A

36、;reg Y1,Y2;reg 15:0Z;assign Y1_L=!Y1;assign Y2_L=!Y2;always (EN or A)beginif(A3=0)&&(EN=0)case(A) 4'b0000:begin Y1=D0;Y2=0; Z0=(Y1&&(!A3)|(Y2&&A3);end4'b0001:begin Y1=D1;Y2=0; Z1=(Y1&&(!A3)|(Y2&&A3);end4'b0010:begin Y1=D2;Y2=0; Z2=(Y1&&(!A3

37、)|(Y2&&A3);end4'b0011:begin Y1=D3;Y2=0; Z3=(Y1&&(!A3)|(Y2&&A3);end4'b0100:begin Y1=D4;Y2=0; Z4=(Y1&&(!A3)|(Y2&&A3);end4'b0101:begin Y1=D5;Y2=0; Z5=(Y1&&(!A3)|(Y2&&A3);end4'b0110:begin Y1=D6;Y2=0; Z6=(Y1&&(!A3)|(Y2&&A3);end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论