收藏 分销(赏)

广工基于Libreo的EDA实验报告(4-8).doc

上传人:丰**** 文档编号:4659990 上传时间:2024-10-08 格式:DOC 页数:60 大小:395.89KB 下载积分:14 金币
下载 相关 举报
广工基于Libreo的EDA实验报告(4-8).doc_第1页
第1页 / 共60页
广工基于Libreo的EDA实验报告(4-8).doc_第2页
第2页 / 共60页


点击查看更多>>
资源描述
___计算机__学院计科专业2班________组、学号3115004949 姓名 朱远鹏 协作者______________ 教师评定_________________ 实验题目_________基于Libero的数字逻辑设计仿真及验证实验_________ 1、 熟悉EDA工具的使用;仿真基本门电路。 2、 仿真组合逻辑电路。 3、 仿真时序逻辑电路。 4、 基本门电路、组合电路和时序电路的程序烧录及验证。 5、 数字逻辑综合设计仿真及验证。 实验报告 1、基本门电路 一、实验目的 1、了解基于Verilog的基本门电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 3、学习针对实际门电路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86进行VerilogHDL设计的方法。 二、实验环境 Libero仿真软件。 三、实验内容 1、掌握Libero软件的使用方法。 2、进行针对74系列基本门电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。 4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86(任选一个)的综合结果,以及相应的仿真结果。 四、实验结果和数据处理 1、所有模块及测试平台代码清单 //74HC00代码-与非 //74HC00.v module HC00(A,B,Y); input [4:1] A,B; output [4:1] Y; assign Y = ~(A&B); endmodule //74HC00测试平台代码 //test_00.v `timescale 1ns/1ns module testbench(); reg [4:1] a,b; wire [4:1] y; HC00 ul(a,b,y); initial begin a=4'b0000; b=4'b0001; #10 b=b<<1; #10 b=b<<1; #10 b=b<<1; a=4'b1111; b=4'b0001; #10 b=b<<1; #10 b=b<<1; #10 b=b<<1; end endmodule //74HC02代码-或非 //74HC02.v module HC02(A,B,Y); input [3:0] A,B; output [3:0] Y; assign Y = ~(A|B); endmodule //74HC02测试平台代码 // test_02.v `timescale 1ns/1ns module test_02; reg [3:0] a,b,c; wire [3:0] y; HC02 u(a, b, y); initial begin a = 4'b1111;c = 4'b0001; b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; a = 4'b0000;c = 4'b0001; b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; end endmodule //74HC04代码-非 // 74HC04.v module HC04(A, Y); input [3:0] A; output [3:0]Y; assign Y = ~A; endmodule //74HC04测试平台代码 // test_04.v `timescale 1ns/1ns module test_04; reg [3:0] a; wire [3:0] y; HC04 u (a, y); initial begin a = 4'b0001; #10 a = a<<1; #10 a = a<<1; #10 a = a<<1; end endmodule //74HC08代码-与 // 74HC08.v module HC08(A, B, Y); input [3:0] A, B; output [3:0]Y; assign Y = A&B; endmodule //74HC08测试平台代码 // test_08.v `timescale 1ns/1ns module test_08; reg [3:0] a,b; wire [3:0] y; HC00 u(a, b, y); initial begin a = 4'b0000;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; a = 4'b1111;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; end endmodule //74HC32代码-或 //74HC32.v module HC32(A, B, Y); input [3:0] A, B; output [3:0]Y; assign Y = A|B; endmodule //74HC32测试平台代码 // test_32.v `timescale 1ns/1ns module test_32; reg [3:0] a,b,c; wire [3:0] y; HC02 u(a, b, y); initial begin a = 4'b1111;c = 4'b0001; b = ~c; c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; a = 4'b0000;c = 4'b0001;b = ~c; c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c;c = c<<1; #10 b = ~c; end endmodule //74HC86代码-异或 //74HC86.v module HC86(A, B, Y); input [3:0] A, B; output [3:0]Y; assign Y = A^B; endmodule //74HC86测试平台代码 // test_86.v `timescale 1ns/1ns module test_86; reg [3:0] a, b; wire [3:0] y; HC86 u (a, b, y); initial begin a = 4'b0000;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; #10 a = 4'b1111;b = 4'b0001; #10 b = b<<1; #10 b = b<<1; #10 b = b<<1; end endmodule 实验数据:74HC00 2、第一次仿真结果 3、 综合结果 4、 第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少? 输出信号有延时,延时约为300ps 5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。 延时约为3200ps,存在竞争冒险 2、组合逻辑电路 一、实验目的 1、了解基于Verilog的组合逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 3、学习针对实际组合逻辑电路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511进行VerilogHDL设计的方法。 二、实验环境 Libero仿真软件。 三、实验内容 1、掌握Libero软件的使用方法。 2、进行针对74系列基本组合逻辑电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相应的设计、综合及仿真。 4、74HC85测试平台的测试数据要求:进行比较的A、B两数,分别为本人学号的末两位,如“89”,则A数为“1000”,B数为“1001”。若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。 5、74HC4511设计成扩展型的,即能显示数字0~9、字母a~f。 6、提交针对74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任选一个)的综合结果,以及相应的仿真结果。 四、实验结果和数据处理 1、所有模块及测试平台代码清单 //74HC148代码 module HC148(EI,I,A,GS,EO); input EI; input [7:0]I; output [2:0]A; output GS,EO; reg [2:0]A; reg GS,EO; integer j; always @ (EI,I) begin if(EI) begin {A,GS,EO}=5'b11111; end else if(I==8'b11111111) begin {A,GS,EO}=5'b11110; end else for(j=0;j<8;j=j+1) begin if(~I[j]) begin A=~j; GS=0; EO=1; end end end endmodule //74HC148测试平台代码 `timescale 1ns/1ns module test_HC148; reg ei; reg [7:0]i; wire [2:0]a; wire gs,eo; HC148 u1(ei,i,a,gs,eo); initial begin ei=1; #20 ei=0; i=8'b11111111; #20 i=8'b11111110; #20 i=8'b11111101; #20 i=8'b11111011; #20 i=8'b11110111; #20 i=8'b11101111; #20 i=8'b11011111; #20 i=8'b10111111; #20 i=8'b01111111; end endmodule //74HC138代码 module HC138(E1,E2,E3,A,Y); input E1,E2,E3; input [2:0] A; output [7:0] Y; reg [7:0] Y; integer I; always@(E1,E2,E3,A) begin if(E1==1||E2==1||E3==0) Y=8'b11111111; else Y=1'b1<<A; end endmodule //74HC138测试平台代码 module test_HC138; reg e1,e2,e3; reg [2:0]a; wire [7:0]y; HC138 u2(e1,e2,e3,a,y); initial begin a=0; repeat(20) #20 a=$random; end initial begin e1=1; #10 e2=1; #10 e3=0; #10 e1=0; #10 e2=0; #10 e3=1; end endmodule //74HC153代码 module HC153(S,I1,I2,E1,E2,Y1,Y2); input [1:0] S; input [3:0] I1; input [3:0] I2; input E1,E2; output Y1,Y2; reg Y1,Y2; always@(S,I1,I2,E1,E2) begin if(E1) Y1=0; else Y1=I1[S]; if(E2) Y2=0; else Y2=I2[S]; end endmodule //74HC153测试平台代码 module test_HC153; reg [1:0] s; reg[3:0] i1; reg[3:0] i2; reg e1,e2; wire y1,y2; HC153 u3(s,i1,i2,e1,e2,y1,y2); initial begin e1=1; e2=1; #15 e1=0;e2=0; end initial begin s=0; i1=0; i2=0; #10 i1=4'b1001; i2=4'b1100; #10 s=1; #10 s=2; #10 s=3; end endmodule //74HC85代码 module HC85(A,B,I,Q); input [3:0] A,B; input [2:0] I; output [2:0] Q; reg [2:0] Q; always@(A,B) begin if(A>B) Q=3'b100; else if(A<B) Q=3'b001; else if(I[1]==1) Q=3'b010; else if(I==3'b101) Q=3'b000; else if(I==0) Q=3'b101; else Q=I; end endmodule //74HC85测试平台代码 module test_HC85; reg [3:0]a,b; reg [2:0]i; wire [2:0]q; HC85 u4(a,b,i,q); initial begin i=0; repeat(4) #10 i=$random; end initial begin a=3;b=1; #10 a=1;b=4; #10 a=0;b=0; #10 a=6;b=1; #10 a=5;b=9; end endmodule //74HC283代码 module HC283(CIN,A,B,COUT,S); input CIN; input [3:0] A,B; output COUT; output [3:0] S; reg COUT; reg [3:0] S; always@(CIN,A,B) begin {COUT,S}=CIN+A+B; end endmodule //74HC283测试平台代码 module test_HC283; reg cin; reg [3:0] a,b; wire cout; wire [3:0] s; HC283 u5(cin,a,b,cout,s); initial begin cin=0; repeat(20) #15 cin=$random; end initial begin a=0; repeat(20) #10 a=$random; end initial begin b=0; repeat(20) #10 b=$random; end endmodule //74HC4511代码 module HC4511(LE,BI,LT,A,Y); input LE,BI,LT; input [3:0] A; output [6:0] Y; reg [6:0] Y; always@(LE,BI,LT,A) begin if(!LT) Y=7'b1111111; else if(!BI) Y=0; else if(LE) Y=Y; else case (A) 4'd0:Y=7'b1111110;//数字按abcdefg顺序 4'd1:Y=7'b0110000; 4'd2:Y=7'b1101101; 4'd3:Y=7'b1111001; 4'd4:Y=7'b0110011; 4'd5:Y=7'b1011011; 4'd6:Y=7'b1011111; 4'd7:Y=7'b1110000; 4'd8:Y=7'b1111111; 4'd9:Y=7'b1111011; 4'd10:Y=7'b1110111; 4'd11:Y=7'b0011111; 4'd12:Y=7'b1001110; 4'd13:Y=7'b0111101; 4'd14:Y=7'b1001111; 4'd15:Y=7'b1000111; default:; sendcase end endmodule //74HC4511测试平台代码 module test_HC4511; reg le,bi,lt; reg [3:0] a; wire [6:0] y; HC4511 u6(le,bi,lt,a,y); initial begin lt=0; #10 lt=1; bi=0; #10 bi=1; le=1; #10 le=0; end initial begin a=0; repeat(30) #20 a=$random; end endmodule 2、 第一次仿真结果(74HC148) 3、 综合结果 4、第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少? 有延迟,延迟时间约为300秒 5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。 有延迟,延迟时间约为4000ps,有竞争冒险3、时序逻辑电路 一、实验目的 1、了解基于Verilog的时序逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 3、学习针对实际时序逻辑电路芯片74HC74、74HC112、74HC194、74HC161进行VerilogHDL设计的方法。 二、实验环境 Libero仿真软件。 三、实验内容 1、熟练掌握Libero软件的使用方法。 2、进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。 4、提交针对74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果,以及相应的仿真结果。 四、实验结果和数据处理 1、所有模块及测试平台代码清单 //74HC74代码 module HC74(S1,S2,R1,R2,CLK1,CLK2,D1,D2,Q1,QF1,Q2,QF2); input S1,S2,R1,R2,CLK1,CLK2,D1,D2; output Q1,QF1,Q2,QF2; reg Q1,QF1,Q2,QF2; always@(posedge CLK1) begin if(!S1&&R1) begin Q1<=1;QF1<=0; end else if(S1&&!R1) begin Q1<=0;QF1<=1; end else if(!S1&&!R1) begin Q1<=1;QF1<=1; end else begin Q1<=D1;QF1<=!D1; end end always@(posedge CLK2) begin if(!S2&&R2) begin Q2<=1;QF2<=0; end else if(S1&&!R1) begin Q2<=0;QF2<=1; end else if(!S1&&!R1) begin Q2<=1;QF2<=1; end else begin Q2<=D2;QF2<=!D2; end end endmodule //74HC74测试平台代码 `timescale 1ns/1ns module test_HC74; reg s1,s2,r1,r2,clk1,clk2,d1,d2; wire q1,qf1,q2,qf2; HC74 u1(s1,s2,r1,r2,clk1,clk2,d1,d2,q1,qf1,q2,qf2); initial begin clk1=0; #400 $finish; end always #10 clk1=~clk1; initial begin clk2=0; end always #10 clk2=~clk2; initial begin s1=0; repeat(20) #20 s1=$random; end initial begin s2=0; repeat(20) #20 s2=$random; end initial begin r1=1; repeat(20) #20 r1=$random; end initial begin r2=1; repeat(20) #20 r2=$random; end initial begin d1=0; repeat(20) #20 d1=$random; end initial begin d2=0; repeat(20) #20 d2=$random; end endmodule //74HC112代码 module HC112(S1,S2,,R1,R2,CLK1,CLK2,J1,J2,K1,K2,Q1,QF1,Q2,QF2); input S1,S2,R1,R2,CLK1,CLK2,J1,J2,K1,K2; output Q1,QF1,Q2,QF2; reg Q1,Q2; assign QF1=~Q1; assign QF2=~Q2; always@(negedge CLK1,negedge S1,negedge R1) begin if(!S1&&R1) Q1<=1; else if(S1&&!R1) Q1<=0; else if(!S1&&!R1) Q1<=1; else case({J1,K1}) 2'b00:Q1<=Q1; 2'b01:Q1<=0; 2'b10:Q1<=1; 2'b11:Q1<=~Q1; endcase end always@(negedge CLK2,negedge S2,negedge R2) begin if(!S2&&R2) Q2<=1; else if(S2&&!R2) Q2<=0; else if(!S2&&!R2) Q2<=1; else case({J2,K2}) 2'b00:Q2<=Q2; 2'b01:Q2<=0; 2'b10:Q2<=1; 2'b11:Q2<=~Q2; endcase end endmodule //74HC112测试平台代码 `timescale 1ns/1ns module test_HC112; reg s1,s2,r1,r2,clk1,clk2,j1,j2,k1,k2; wire q1,qf1,q2,qf2; HC112 u1(s1,s2,r1,r2,clk1,clk2,j1,j2,k1,k2,q1,qf1,q2,qf2); initial begin clk1=0; end always #10 clk1=~clk1; initial begin s1=0; repeat(20) #20 s1=$random; end initial begin r1=0; repeat(20) #20 r1=$random; end initial begin j1=0; repeat(20) #20 j1=$random; end initial begin k1=0; repeat(20) #20 k1=$random; end initial begin clk2=0; end always #10 clk2=~clk2; initial begin s2=0; repeat(20) s2=$random; end initial begin r2=0; repeat(20) #20 r2=$random; end initial begin j2=0; repeat(20) #20 j2=$
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服