Verilog |
您所在的位置:网站首页 › 151芯片怎么用 › Verilog |
Verilog——74HC151八选一数据选择器并扩展为16选1数据选择器 74HC151的仿真 设计思路采用行为级建模,根据74HC151译码器的功能表编程即可。 代码实现 设计模块 12345678910111213141516171819202122232425//filename:_74HC151v module _74HC151( input E, input [2:0] S, input [7:0] D, output reg Y, output Y1); //定义输入输出变量 always@(*) begin if(E) Y=0; else begin case(S) 3'b000:Y=D[0]; 3'b001:Y=D[1]; 3'b010:Y=D[2]; 3'b011:Y=D[3]; 3'b100:Y=D[4]; 3'b101:Y=D[5]; 3'b110:Y=D[6]; 3'b111:Y=D[7]; //根据输入S选择数据 endcase end end assign Y1=~Y; //输出变量有两个端子,Y1为Y取反 endmodule 测试模块 12345678910111213141516171819202122232425//filename:tb_74X138 //filename:tb_74HC151.v `timescale 10ns/1ns module tb_74HC151(); reg E; reg [2:0] S; reg [7:0] D; wire Y; wire Y1; _74HC151 U0(E,S,D,Y,Y1); initial $monitor($time,"\tE=%b,S=%b,D=%b,Y=%B,Y1=%b",E,S,D,Y,Y1); initial begin E=1;S=3'b000;D=8'b1111_0000; #5; E=0;S=3'b000;D=8'b1111_0000; #5; E=1;S=3'b111;D=8'b1111_0000; #5; E=0;S=3'b111;D=8'b1111_0000; #5; $stop; end endmodule 仿真用74LS151构成16选一数据选择器 设计思路 74LS属于TTL类型的集成电路,而74HC属于CMOS集成电路。性能上面有差异,但是功能表相同,所以级联时用到的单元可以用前面的模型。书上给出了了两片74HC151的级联,我们可以根据原理图进行行为级建模 代码实现 设计模块 123456789101112131415161718192021222324252627282930313233343536373839404142//filename:_74HC151v module _74HC151( input E, input [2:0] S, input [7:0] D, output reg Y, output Y1); always@(*) begin if(E) Y=0; else begin case(S) 3'b000:Y=D[0]; 3'b001:Y=D[1]; 3'b010:Y=D[2]; 3'b011:Y=D[3]; 3'b100:Y=D[4]; 3'b101:Y=D[5]; 3'b110:Y=D[6]; 3'b111:Y=D[7]; endcase end end assign Y1=~Y; endmodule module _16to1( input E, input [2:0] S, input [7:0] D0,D1, output L, output L1); wire Y0,Y1,Y2,Y3; wire E1; assign E1=~E; //当E=1时 U0被禁止,U1工作;当E=0时,U0工作,U1被禁止 _74HC151 U0(E,S,D0,Y0,Y1); _74HC151 U1(E1,S,D1,Y2,Y3); or (L,Y0,Y2); and (L1,Y1,Y3); endmodule 测试模块 123456789101112131415161718192021222324//filename:tb_74HC151.v `timescale 10ns/1ns module tb_16to1(); reg E; reg [2:0] S; reg [7:0] D0,D1; wire L; wire L1; _16to1 U(E,S,D0,D1,L,L1); initial $monitor($time,"\tE=%b,S=%b,D0=%b,D1=%b,L=%B,L1=%b",E,S,D0,D1,L,L1); initial begin E=1;S=3'b000;D0=8'b1111_0000;D1=8'b0000_1111; #5; E=0;S=3'b000;D0=8'b1111_0000;D1=8'b0000_1111; #5; E=1;S=3'b111;D0=8'b1111_0000;D1=8'b0000_1111; #5; E=0;S=3'b111;D0=8'b1111_0000;D1=8'b0000_1111; #5; $stop; end endmodule 仿真
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |