Verilog

您所在的位置:网站首页 151芯片怎么用 Verilog

Verilog

2024-07-14 23:00| 来源: 网络整理| 查看: 265

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