发布时间 : 星期三 文章(有代码)基于某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 文案