1、Verilog HDV 数字设计与综合实验报告微电子0901班姓名 : 袁东明 _ 学号:_04094026一、 实验课题:1. 八选一数据选择器2. 四位数据比较器二、八选一数据选择器Verilog程序:2.1主程序 module option(a,b,c,d,e,f,g,h,s0,s1,s2,out); input 2:0 a,b,c,d,e,f,g,h; input s0,s1,s2; output 2:0 out; reg 2:0 out; always(a or b or c or d or e or f or g or h or s0 or s1 or s2) begin case
2、(s0,s1,s2) 3d0 : out=a; 3d1 : out=b; 3d2 : out=c; 3d3 : out=d; 3d4 : out=e; 3d5 : out=f; 3d6 : out=g; 3d7 : out=h;endcaseendendmodule2.2激励程序module sti; reg 2:0 A,B,C,D,E,F,G,H; reg S0,S1,S2; wire 2:0 OUT; option dtg(A,B,C,D,E,F,G,H,S0,S1,S2,OUT); initial begin A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3
3、d6;H=3d7;S0=0;S1=0;S2=0;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=0;S1=0;S2=1;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=0;S1=1;S2=0;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=0;S1=1;S2=1;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=1;S1=0;S2=0;#100
4、 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=1;S1=0;S2=1;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=1;S1=1;S2=0;#100 A=3d0;B=3d1;C=3d2;D=3d3;E=3d4;F=3d5;G=3d6;H=3d7;S0=1;S1=1;S2=1; end endmodule三、四位数据比较器 3.1主程序module fourcompare(a,b,c); input3:0 a,b; output 1:0 c; reg1:0 c; alway
5、s(a or b) begin if(ab) c=2d2; else if(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型,通过这个例子我明白了书上所说的有时往往是一个比较笼统的,而更多的需要我们自己去实践、探索、勤思考,只有这样我们才能把书本上的知识转化为属于我们自己的知识,才能在学习的道路上走的更远!