《verilog语言编写八选一数据选择器.doc》由会员分享,可在线阅读,更多相关《verilog语言编写八选一数据选择器.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Verilog八选一选择器八选一选择器一、 实验目的编写一个八选一的选择器,并在verilog软件上进行仿真。二、 代码1、 源代码(1)用数据流描述的八选一多路选择器模块,采用了逻辑方程module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;assign out=s2?(s1?(s0?i7:i6):(s0?i5:i4):(s1?(s0?i3:i2):(s0?i1:i0);endmodule(2)用数据流描述的八选一多路选择器模块
2、,采用了条件操作语句module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;assign out=(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);endmodule(3)用行为及描述的八选一多路选择器模块可描述为:module mux8_to_
3、1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;reg out;always (s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7)begin case(s2,s1,s0) 3b000:out=i0; 3b001:out=i1; 3b010:out=i2; 3b011:out=i3; 3b100:out=i4; 3b101:out=i5; 3b110:out=i6; 3b111:
4、out=i7; defult:$dispiay(Invalid control signals); endcaseendendmodule或者是:module mux8_to_1(out,i0,i1,i2,i3,i4,i5,i6,i7,s2,s1,s0);output out;input i0,i1,i2,i3,i4,i5,i6,i7;input s2,s1,s0;reg out;always (s2 or s1 or s0 or i0 or i1 or i2 or i3 or i4 or i5 or i6 or i7)begin case(s2,s1,s0) 3d1:out=i0; 3d2:
5、out=i1; 3d3:out=i2; 3d4:out=i3; 3d5:out=i4; 3d6:out=i5; 3d7:out=i6; 3d8:out=i7; defult:$dispiay(Invalid control signals); endcaseendendmodule2、 激励模块timescale 1ns/100psmodule mux8_to_1_tb;reg I0,I1,I2,I3,I4,I5,I6,I7;reg S2,S1,S0;wire OUT;mux8_to_1 ul( .out(OUT), .i0(I0), .i1(I1), .i2(I2), .i3(I3), .i
6、4(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;#10 S2=0;S1=0;S0=1;#10 S2=0;S1=1;S0=0;#10 S2=0;S1=1;S0=1;#10 S2=1;S1=0;S0=0;#10 S2=1;S1=0;S0=1;#10 S2=1;S1=1;S0=0;#10 S2=1;S1=1;S0=1;endendmodule三、 仿真波形四、 波形说明波形图中,从上至下依次为:输
7、入数据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;当S2=1,S1=1,S0=0时,选择I6,输出I0的值0;(当S2=1,S1=1,S0=1时,选
8、择I7,输出I0的值0;)在行为级描述的模块中,当输入端口的输入不符合既定要求的时候,则会输出 $dispiay(Invalid control signals);五、 实验过程中碰到的问题经过前两次的实验,本次实验在操作过程中基本很流畅,没有再碰到对软件不够熟悉的情况,但是,本次实验结果却存在一定问题,从波形中也可以看到,选择端口S2=1,S1=1,S0=1的波形没有出现,当时在实验过程中没有找到问题所在,后来实验过后,我自己分析,是时间的设置太短,没有跑出那段波形,但是由于自己没有modelsim软件,通过各种自己可以达到的方法也无法下载到,所以只能等下次实验的时候再对这个问题进行分析。六
9、、 实验心得在实验过程中,不断的出现问题,然后修改问题,有时候还会在修改后出现新的问题,这个过程中,有过被一大堆问题弄的头晕眼花准备放弃的时候,但是自己写的程序,自己调试不好总觉得心有不甘,虽然这个实验报告可能达不到要求,因为里面是有错误的,但是我会尽力把这个错误纠正掉,最后提交一份合格的实验报告,也给自己的努力一个交代。8代个努己给验选实择份后掉误这尽我的错里,到能告实虽不得觉试己序写,的备眼的题大有程过题现后在时题修然问的,心析行题这再实下能到下法到达自通, 没是,那跑短置间是自后实后题找没过时,没波= 口选,可形,定却结本是况悉件到再,很程作验,实问的中) ( 会候时定不输口,模描;0输
10、择时= 00 选时 , 的 0 的出,择时= 的0,择 0 ,0的出 择时 = 00的出 择时=, 的出输选, , 出并的择口制的实该 出 ,端, ,据输依至中说波 = = 0= = 0 = 0=0= ; 00;= = = 0= 0= =; ;=; )0(0 ) ) ) ) . ) ) ) . ) . )( ) ( ) . 0 , , _ 0 模 ) : = = = 00 0 , , , ) , , , 0 _ 是 ) 0 = 0 = 0 0 ( 0 ( 0 , , ) , , , 0 为模器多八描行 ) ) & &( ) 0 ) & ) &( ) & ) & ( ) & 0 , , ) ( 语作件,器路选述流 )0 0: ?() ?( ( 00 , , , ) ,0 方逻采块择一选流用代代真行件 器的一目择选 目 件行代择逻 0 , ( ) :) 路件语 , 0 &) & & & &) 0 & 描多 0, , 0 ( = 00 _0, , , 0 ) , )( ) . ) ) ) ) ) ;= = ; 0= 说至, 端 实制并,选出 =出0 择, 0的时择 ,时 输;,口定 的验,到悉结定可 =时没实是短,没 自下能这题的问在题有的备序试不8 己*给 MER后GEFO尽R我MAT ,8能