您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > verilog语言编写八选一数据选择器
Verilog——八选一选择器1八选一选择器一、实验目的编写一个八选一的选择器,并在verilog软件上进行仿真。二、代码1、源代码(1)用数据流描述的八选一多路选择器模块,采用了逻辑方程modulemux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);outputout;inputi0,i1,i2,i3,i4,i5,i6,i7;inputs2,s1,s0;assignout=s2?(s1?(s0?i7:i6):(s0?i5:i4)):(s1?(s0?i3:i2):(s0?i1:i0));endmodule(2)用数据流描述的八选一多路选择器模块,采用了条件操作语句modulemux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);outputout;inputi0,i1,i2,i3,i4,i5,i6,i7;inputs2,s1,s0;assignout=(~s2&~s1&~s0&i0)|(~s2&~s1&s0&i1)|(~s2&s1&~s0&i2)|(~s2&s1&s0&i3)|(s2&~s1&~s0&i4)|(s2&~s1&s0&i5)|(s2&s1&~s0&i6)|(s2&s1&s0&i7);Verilog——八选一选择器2endmodule(3)用行为及描述的八选一多路选择器模块可描述为:modulemux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);outputout;inputi0,i1,i2,i3,i4,i5,i6,i7;inputs2,s1,s0;regout;always@(s2ors1ors0ori0ori1ori2ori3ori4ori5ori6ori7)begincase({s2,s1,s0})3'b000:out=i0;3'b001:out=i1;3'b010:out=i2;3'b011:out=i3;3'b100:out=i4;3'b101:out=i5;3'b110:out=i6;3'b111:out=i7;defult:$dispiay(Invalidcontrolsignals);endcaseendendmodule或者是:modulemux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);Verilog——八选一选择器3outputout;inputi0,i1,i2,i3,i4,i5,i6,i7;inputs2,s1,s0;regout;always@(s2ors1ors0ori0ori1ori2ori3ori4ori5ori6ori7)begincase({s2,s1,s0})3'd1:out=i0;3'd2:out=i1;3'd3:out=i2;3'd4:out=i3;3'd5:out=i4;3'd6:out=i5;3'd7:out=i6;3'd8:out=i7;defult:$dispiay(Invalidcontrolsignals);endcaseendendmodule2、激励模块`timescale1ns/100psmodulemux8_to_1_tb;regI0,I1,I2,I3,I4,I5,I6,I7;regS2,S1,S0;wireOUT;Verilog——八选一选择器4mux8_to_1ul(.out(OUT),.i0(I0),.i1(I1),.i2(I2),.i3(I3),.i4(I4),.i5(I5),.i6(I6),.i7(I7),.s2(S2),.s1(S1),.s0(S0));initialbeginI0=1;I1=0;I2=0;I3=1;I4=1;I5=1;I6=0;I7=0;S2=0;S1=0;S0=0;#10S2=0;S1=0;S0=1;#10S2=0;S1=1;S0=0;#10S2=0;S1=1;S0=1;#10S2=1;S1=0;S0=0;#10S2=1;S1=0;S0=1;#10S2=1;S1=1;S0=0;#10S2=1;S1=1;S0=1;endVerilog——八选一选择器5endmodule三、仿真波形四、波形说明波形图中,从上至下依次为:输入数据I0,I1,I2,I3,I4,I5,I6,I7,选择端口S2,S1,S0,输出COUT。该程序实现的是控制选择端口选择对应的数据并输出。当S2=0,S1=0,S0=0时,选择I0,输出I0的值1;当S2=0,S1=0,S0=1时,选择I1,输出I0的值0;当S2=0,S1=1,S0=0时,选择I2,输出I0的值0;当S2=0,S1=1,S0=1时,选择I3,输出I0的值1;当S2=1,S1=0,S0=0时,选择I4,输出I0的值1;当S2=1,S1=0,S0=1时,选择I5,输出I0的值1;Verilog——八选一选择器6当S2=1,S1=1,S0=0时,选择I6,输出I0的值0;(当S2=1,S1=1,S0=1时,选择I7,输出I0的值0;)在行为级描述的模块中,当输入端口的输入不符合既定要求的时候,则会输出$dispiay(Invalidcontrolsignals);五、实验过程中碰到的问题经过前两次的实验,本次实验在操作过程中基本很流畅,没有再碰到对软件不够熟悉的情况,但是,本次实验结果却存在一定问题,从波形中也可以看到,选择端口S2=1,S1=1,S0=1的波形没有出现,当时在实验过程中没有找到问题所在,后来实验过后,我自己分析,是时间的设置太短,没有跑出那段波形,但是由于自己没有modelsim软件,通过各种自己可以达到的方法也无法下载到,所以只能等下次实验的时候再对这个问题进行分析。六、实验心得在实验过程中,不断的出现问题,然后修改问题,有时候还会在修改后出现新的问题,这个过程中,有过被一大堆问题弄的头晕眼花准备放弃的时候,但是自己写的程序,自己调试不好总觉得心有不甘,虽然这个实验报告可能达不到要求,因为里面是有错误的,但是我会尽力把这个错误纠正掉,最后提交一份合格的实验报告,也给自己的努力一个交代。
本文标题:verilog语言编写八选一数据选择器
链接地址:https://www.777doc.com/doc-8061472 .html