(有代码)基于某libero的数字逻辑设计仿真及验证实验(4-8) 联系客服

发布时间 : 星期三 文章(有代码)基于某libero的数字逻辑设计仿真及验证实验(4-8)更新完毕开始阅读c911529e24fff705cc1755270722192e453658d3

标准

考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。

5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。 6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合结果,以及相应的仿真结果。 ....

1、所有模块及测试平台代码清单

//74HC148代码

//HC148.v

module HC148(DataIn,EO,Dataout); input [7:0] DataIn; output EO;

output [2:0] Dataout; reg [2:0] Dataout; reg EO; integer I;

always @(DataIn) begin

Dataout=0; EO=1;

for(I=0;I<8;I=I+1) begin

if(DataIn[I]) begin

Dataout=I; EO=0; end end end

endmodule

//74HC148测试平台代码 // test148.v

`timescale 1ns/1ns module test148; reg [7:0] in; wire [2:0] out; wire EO; initial begin

in=00000001; repeat(9)

#20 in=in<<1; end

HC148 u148(in,EO,out);

文案

标准

endmodule

//74HC138代码 //HC138.v

module HC138(A,B,C,G1,G2AN,G2BN,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0); input A,B,C;

input G1,G2AN,G2BN;

output Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0; wire Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0; reg [7:0] Eq; wire [7:0] EqN; wire [2:0]DataIn; assign EqN=~Eq; assign DataIn[0]=A; assign DataIn[1]=B; assign DataIn[2]=C;

always @(DataIn or G1 or G2AN or G2BN) begin if(!G1)

Eq=8'b11111111;

else if(!(G2AN&G2BN)) Eq=8'b11111111;

else Eq=1'b1<

assign Y0=EqN[0]; assign Y1=EqN[1]; assign Y2=EqN[2]; assign Y3=EqN[3]; assign Y4=EqN[4]; assign Y5=EqN[5]; assign Y6=EqN[6]; assign Y7=EqN[7]; endmodule

//74HC138测试平台代码 // test138.v

`timescale 1ns/10ps module test138; reg A,B,C;

reg G1,G2AN,G2BN;

wire Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7; initial begin A=0;

repeat(20)

文案

标准

#20 A=$random; end initial begin B=0;

repeat(20)

#20 A=$random; end initial begin C=0;

repeat(20)

#20 A=$random; end initial begin G1=0; #40 G1=1; end initial begin G2AN=0; #25 G2AN=1; end initial begin G2BN=0; #45 G2BN=1; end

HC138 u138 (

.A (A), .B (B), .C (C), .G1 (G1),

.G2AN (G2AN), .G2BN (G2BN), .Y0 (Y0), .Y1 (Y1), .Y2 (Y2), .Y3 (Y3), .Y4 (Y4), .Y5 (Y5), .Y6 (Y6),

文案

标准

.Y7 (Y7) );

endmodule

//74HC153代码 //HC153.v

module HC153(C0,C1,C2,C3,A,B,Y,G); input C0,C1,C2,C3,A,B,G; output Y; reg Y;

always @(C0 or C1 or C2 or C3 or A or B) begin

if(G) Y=0; else

case({A,B}) 0:Y=C0; 1:Y=C1; 2:Y=C2; 3:Y=C3;

default:Y=1'bx; endcase end

endmodule

//74HC153测试平台代码 // test153.v

`timescale 1ns/1ns module test153; reg C0,C1,C2,C3; reg A,B,G; wire Y; initial begin G=1;

repeat(20) #20 G=0; end initial begin A=0;

repeat(20)

#20 A=$random; end initial begin

文案