-1-VerilogHDV数字设计与综合实验报告微电子0901班姓名:袁东明_学号:_04094026-2-一、实验课题:1.八选一数据选择器2.四位数据比较器二、八选一数据选择器Verilog程序:2.1主程序moduleoption(a,b,c,d,e,f,g,h,s0,s1,s2,out);input[2:0]a,b,c,d,e,f,g,h;inputs0,s1,s2;output[2:0]out;reg[2:0]out;always@(aorborcordoreorforgorhors0ors1ors2)begincase({s0,s1,s2})3'd0:out=a;3'd1:out=b;3'd2:out=c;3'd3:out=d;3'd4:out=e;3'd5:out=f;3'd6:out=g;3'd7:out=h;endcaseendendmodule2.2激励程序modulesti;reg[2:0]A,B,C,D,E,F,G,H;regS0,S1,S2;wire[2:0]OUT;-3-optiondtg(A,B,C,D,E,F,G,H,S0,S1,S2,OUT);initialbeginA=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=1;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=1;S2=0;#100A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=1;S2=1;endendmodule三、四位数据比较器3.1主程序modulefourcompare(a,b,c);input[3:0]a,b;output[1:0]c;reg[1:0]c;always@(aorb)beginif(ab)c=2'd2;elseif(ab)c=2'd1;elsec=2'd0;endendmodule3.2激励程序modulesti;reg[3:0]A,B;wire[1:0]C;fourcomparefte(A,B,C);initialbeginA=2'd0;B=2'd1;#100A=2'd2;B=2'd1;#100A=2'd1;B=2'd1;endendmodule-4-四、实验波形图截图:4.1八选一数据选择器4.2四位数据比较器四、波形分析及实验心得:4.1.波形分析1.八选一数据选择器输入数据为A=000,B=001,C=010,D=011,E=100,F=101,g=110,h=111;S0,S1,S2,为选择控制端,它们组成一个三位数,记为enable,控制数据的输出,其中S0为最高位,S1次之,S2为最低位。当enable=000,输出A;enable=001,输出B;enable=010,输出C;enable=011,输出D;enable=100,输出E;enable=101,输出F;enable=110,输出G;enable=111,输出H观察波形当enable=000时,输出为000即A;当enable=001时,输出为001,即B;当enable=010时,输出为010即C;当enable=011时,输出为011即D;当enable=100时,输出为100即E;当enable=101时,输出为101,即F;当enable=110时,输出为110即G;当enable=111时,输出为111即G,其结果与理论结果相吻合故验证该设计是正确的。-5-2.四位数据选择器该设计要求比较两个四位数的大小A、B,输出结果为AB(10)、A=B(00)或AB(01);观察波形当输入数据当A=0000,B=0001,输出结果为01当A=0010,B=0001,输出结果为10当A=0001,B=0001,输出结果为00经分析其仿真结果与理论相符合,说明了其设计的正确性。4.2实验心得这次实验与上次相比有明显的进步,通过这次实验我对modelsim的应用更加得心应手,深切的体会到了verilog是一种描述性语言,这次实验总的来说是比较顺利的,但在实验过程中还是遇到了一些问题,比如端口的匹配问题,在写程序的时候误将位宽写在了变量名的后面,虽然程序能够运行但有警告,仿真波形是错误的,可见在写程序时警告有时也是致命的,这要求我们在学习的过程中思想一定要严谨!其次在做实验时一定要多想,例如在学习这门课时,书上说在模块外部输入可以是wire型或reg型,但在写程序时激励模块往往要初始化数据,所以编程时其类型往往声明为reg型,通过这个例子我明白了书上所说的有时往往是一个比较笼统的,而更多的需要我们自己去实践、探索、勤思考,只有这样我们才能把书本上的知识转化为属于我们自己的知识,才能在学习的道路上走的更远!