1、武汉大学电气数电仿真实验数电VERILOG HDL实验x班 2012302540xxx 朱蜀预习实验:交通灯实验一、实验程序:module light(c1k1,light);input c1k1; /1Hz or 23Hzoutput 7:0 light;reg c1k2; /c1k2erfenpinwire clk;reg 7:0 light;reg 2:0 flag; reg t_switch;parameter len =7;always (posedge c1k1) c1k2 = c1k2;assign c1k=(t_switch) ? c1k1 : c1k2;always (pos
2、edge c1k) begin if(flag=3b000) begin light = 1b1,lightlen:1; if(light1=1b1) flag=3b001; end else if (flag=3b001) begin light = lightlen-1:0,1b0; if(light6=1b0) flag=3b010; end else if (flag=3b010) begin lightlen:4 = lightlen-1:4,1b1; lightlen-4:0 = 1b1,lightlen-4:1; if(light1=1b1) flag=3b011; end el
3、se if (flag=3b011) begin lightlen:4=1b0,lightlen:5; lightlen-4:0=lightlen-5:0,1b0; if(light2=1b0) flag=3b100; end else if (flag=3b100) begin lightlen:4=1b1,lightlen:5; lightlen-4:0=1b1,lightlen-4:1; if(light1=1b1) flag=3b101; end else if (flag=3b101) begin light=8h00; flag=3b110; end else if (flag=3
4、b110) begin t_switch=t_switch; flag=3b000; end endendmodule二、实验波形:三、实验电路:实验一:1位全加器的设计一、实验目的:1、掌握Quartus8.0软件使用流程。2、初步掌握VERILOG的编程方法。二、实验原理:一位全加器的真值表如下:ABCiSCo0000000110010100110110010101011100111111一位全加器的逻辑表达式为:Sum=abci;Co=a&b|(ab)&Ci.三、实验程序:module fulladder(a,b,c1,ch,sum);input a,b,c1;output ch,sum
5、;reg ch,sum;always(a or b or c1) begin sum=abc1; ch=a&b|(ab)&c1; endendmodule四、实验波形:五、实验电路:六、将实验电路保存为元件符号,供实验二使用。保存方法如下:file菜单下的creat symbols files。实验二:四位全加器的设计一、实验目的:1、掌握图形层次设计方法; 2、熟悉QUARTUS8.0软件的使用及设计流程; 3、掌握全加器原理,能进行多位全加器的设计。二、实验原理图:调用实验一所完成的一位全加器。实验三:三输入与门、三输入或门一、实验目的:1、理解简单组合电路设计方法。2、掌握基本门电路的应
6、用。二、实验原理:三输入与门、三输入或门的输出分别为: Out=a&b&c;out=abc;三、实验程序:module input3_AND(A,B,C,L); /andinput A,B,C;output L;assign L=A&B&C;endmodulemodule input3_OR(A,B,C,L); /orinput A,B,C;output L;assign L=ABC;endmodule 四、实验波形:实验四:8-3优先编码器一、实验目的:1、熟悉常用编码器的功能逻辑。2、熟悉VERILOG的代码编写方法。二、实验代码:(采用两种编码方式)1、module youxian8_3
7、bianmaqi(X,Y);input 7:0X;output 2:0Y;assign Y0=(X1)&X2&X4&X6|(X3)&X4&X6|(X5)&X6|(X7);assign Y1=(X2)&X4&X5|(X3)&X4&X5|(X6)|(X7);assign Y2=X4&X5&X6&X7;endmodule2、module youxian8_3bianmaqi(X,Y);input 7:0X;output 2:0Y;reg 2:0Y;always(X) if(X7)Y=3b000;else if(X6)Y=3b001;else if(X5)Y=3b010;else if(X4)Y=3b
8、011;else if(X3)Y=3b100;else if(X2)Y=3b101;else if(X1)Y=3b110;else Y=3b111;endmodule三、程序波形:实验五:3-8线译码器一、实验目的:1、熟悉常用译码器的逻辑功能。2、掌握复杂译码器的设计方法。二、实验代码:module switch3_8(EN,X,Y);input 0:2X;input EN; /ENweishinengxinghaooutput 0:7Y;reg 0:7Y;always(X) if(EN) Y=8b11111111; else begin if(X=3b000) Y=8b01111111;
9、if(X=3b001) Y=8b10111111; if(X=3b010) Y=8b11011111; if(X=3b011) Y=8b11101111; if(X=3b100) Y=8b11110111; if(X=3b101) Y=8b11111011; if(X=3b110) Y=8b11111101; if(X=3b111) Y=8b11111110; endendmodule三、实验电路:实验六:八位十进制频率计实验一、实验目的:1、进一步了解VERILOG语言功能 2、了解EDA在高频工作下的优势,这是单片机无法比拟的二、实验代码:(包括一个十进制计数器、一个四位锁存器)1、以下是
10、四位锁存器module octal(clk,en,d_in,q_in);input clk,en;input3:0d_in;output3:0q_in;reg 3:0Q;assign q_in=Q;always(posedge clk) if(!en) begin Q=d_in; endendmodule2、以下是十进制计数器module pinlvji8_10(clr,CP,EN,load,D,Q,TC);input 0:3D;output 0:3Q;input clr,CP,EN,load;output TC;reg TC;reg 0:3Q;always(posedge CP) if(EN
11、) begin if(clr) begin Q=4b0000;TC=1b0; end else if(load) Q=D; else if(CP) begin Q=Q+1b1;if(Q=4b1111) TC=1b1;else TC=1b0; end endendmodule三、实验波形:图6.1 四位锁存器波形图6.2(a)十进制计数器clr控制波形图6.2(b)十进制计数器load控制波形图6.2(c)十进制计数器TC进位信号波形实验心得与体会:通过本次QUARTUS软件的学习,初步掌握了两种编辑方法。一种是用VERILOG语言编写,一种是图形编辑,两种方法都方便快捷,具有其他硬件无可比拟的优势。对于我们所在专业,数字电路是必不可少的一门专业知识,有了这个软件无疑给我们提供了很大方便,在以后的日子里,一定要加强这方面知识的学习。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1