基于Libero的数字逻辑设计仿真实验实验报告(实验5到8) 本文关键词:实验,逻辑设计,仿真,数字,报告
基于Libero的数字逻辑设计仿真实验实验报告(实验5到8) 本文简介:实验题目___________基于Libero的数字逻辑设计仿真实验_____________1.基本门电路2.组合逻辑电路3.时序逻辑电路4.补充实验不要求全部同学都做,但做了可加分。(选做)实验报告基本门电路一、实验目的1、了解基于Verilog的基本门电路的设计及其验证。2、熟悉利用EDA工具
基于Libero的数字逻辑设计仿真实验实验报告(实验5到8) 本文内容:
实验题目___________基于Libero的数字逻辑设计仿真实验_____________
1.
基本门电路
2.
组合逻辑电路
3.
时序逻辑电路
4.
补充实验不要求全部同学都做,但做了可加分。
(选做)
实验报告
基本门电路
一、实验目的
1、了解基于Verilog的基本门电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
二、实验环境
Libero仿真软件(参考附录C)。
三、实验内容
1、参考附录C掌握Libero软件的使用方法。
2、参考附录C中“一个完整的例子”,进行针对74系列基本门电路的设计,并完成相应的仿真实验。
3、参考附录D的设计代码、测试平台代码(可自行编程)及附录C的步骤,完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相应的设计、综合及仿真。
4、提交针对74HC00、74HC02、74HC04、74HC08、74HC32、74HC86(任选一个)的综合结果,以及相应的功能仿真结果。
四、实验结果和数据处理
1、模块及测试平台代码清单
3
module
HC00(A,B,Y);
input
[4:1]A,B;
output[4:1]Y;
assign
Y=~(A
endmodule
`timescale
1ns/1ns
module
testbench;
reg
a,b;
wire
y;
HC00
test(a,b,y);
initial
begin
a=0;b=0;
#5
a=1;
#5
b=1;
#5
a=0;
#5
b=0;
end
endmodule
2、第一次仿真结果。(将相关窗口调至合适大小,使波形能完整显示,对窗口截图。
后面实验中的仿真使用相同方法处理)
3、综合结果。(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)
4、第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少?
有时间延迟,时间大约为300ps。
5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。
有时间延迟,时间大约为500ps。
五、基于实验箱的数字逻辑设计实验
参考附录F.1的门电路核心板引脚对应表,在FPGA板上验证设计结果。
组合逻辑电路
一、实验目的
1、了解基于Verilog的组合逻辑电路的设计及其验证。
2、熟悉利用EDA工具进行设计及仿真的流程。
二、实验环境
Libero仿真软件(参考附录C)。
三、实验内容
1、参考附录C掌握Libero软件的使用方法。
2、参考附录C中“一个完整的例子”,进行针对74系列组合逻辑电路的设计,并完成相应的仿真实验。
3、参考附录D的设计代码、测试平台代码(可自行编程)及附录F的步骤,完成74HC283、74HC85、74HC138、74HC148、74HC153相应的设计、综合及仿真。
4、记录74HC85的综合结果,以及相应的功能仿真结果。测试平台的测试数据要求:进行比较的A、B两数,分别为本人学号的末两位,如“89”,则A数为“1000”,B数为“1001”。若两数相等,需考虑级联输入(级联输入的各种取值情况均需包括);若两数不等,则需增加一对取值情况,验证A、B相等时的比较结果。
四、实验结果和数据处理
1、模块及测试平台代码清单
//
HC85.v
module
hc_85(A3,A2,A1,A0,B3,B2,B1,B0,QAGB,QASB,QAEB,IAGB,IASB,IAEB);
input
A3,A2,A1,A0,B3,B2,B1,B0,IAGB,IASB,IAEB;
output
QAGB,QASB,QAEB;
reg
QAGB,QASB,QAEB;
wire[3:0]DataA,DataB;
assign
DataA[0]=A0;
assign
DataA[1]=A1;
assign
DataA[2]=A2;
assign
DataA[3]=A3;
assign
DataB[0]=B0;
assign
DataB[1]=B1;
assign
DataB[2]=B2;
assign
DataB[3]=B3;
[email protected](DataA>DataB)
begin
if(DataA>DataB)
begin
QAGB=1;QASB=0;QAEB=0;
end
else
if(DataA begin QAGB=0;QASB=1;QAEB=0; end else if(IAGBQASB=0;QAEB=0; end else if(!IAGBQASB=1;QAEB=0; end else if(IAEB) begin QAGB=0;QASB=0;QAEB=1; end begin if(DataA==DataB) if(IAGBQASB=0;QAEB=0; end if(!IAGBQASB=1;QAEB=0; end end end endmodule // testbench.v `timescale 1ns/1ns module test_hc_85; reg A3,A2,A1,A0,B3,B2,B1,B0; reg IAGB,IASB,IAEB; wire QAGB,QASB,QAEB; initial begin A3=0; repeat(20) #20 A3=$random; end initial begin A2=0; repeat(20) #20 A2=$random; end initial begin A1=0; repeat(20) #20 A1=$random; end initial begin A0=0; repeat(20) #20 A0=$random; end initial begin B3=0; repeat(20) #20 B3=$random; end initial begin B2=0; repeat(20) #20 B2=$random; end initial begin B1=0; repeat(20) #20 B1=$random; end initial begin B0=0; repeat(20) #20 B0=$random; end initial begin IAGB=0; repeat(10) #40 IAGB=$random; end initial begin IASB=0; repeat(10) #40 IASB=$random; end initial begin IAEB=0; repeat(10) #40 IAEB=$random; end hc_85 testhc85(.A3 (A3),.A2 (A2),.A1 (A1),.A0 (A0),.B3 (B3),.B2 (B2),.B1 (B1),.B0 (B0),.IAGB (IAGB),.IASB (IASB),.IAEB (IAEB),.QAGB (QAGB),.QASB (QASB),.QAEB (QAEB),); initial begin #400 $finish; end endmodule 2、第一次仿真结果 3、综合结果 4、第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少? 有时间延迟,时间大约为400-600ps。 5、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。 存在竞争冒险,有延迟时间,时间约为500ps。 五、基于实验箱的数字逻辑设计实验 参考附录F.2的组合电路核心板引脚对应表,在FPGA板上验证设计结果。 时序逻辑电路 一、实验目的 1、了解基于Verilog的时序逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 二、实验环境 Libero仿真软件(参考附录C)。 三、实验内容 1、参考附录C掌握Libero软件的使用方法。 2、参考附录C中“一个完整的例子”,进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。 3、参考附录D的设计代码、测试平台代码(可自行编程)及附录F的步骤,完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。 4、选择讲义7.6中任意一个实例,在Libero中实现一遍并记录结果。 四、实验结果和数据处理 1、模块及测试平台代码清单 // 74HC74.v module HC74(D1,D2,CP1,CP2,RD1N,RD2N,SD1N,SD2N,Q1,Q2,Q1N,Q2N); input D1,D2; input RD1N,SD1N,CP1; input RD2N,SD2N,CP2; output Q1,Q1N,Q2,Q2N; reg Q1,Q2; assign Q1N=~Q1; assign Q2N=~Q2; always @(posedge CP1) begin if (!RD1N) Q1<=0; else if (!SD1N) Q1<=1; else Q1<=D1; end always @(posedge CP2) begin if (!RD2N) Q2<=0; else if (!SD2N) Q2<=1; else Q2<=D2; end endmodule // testbench_74HC74.v `timescale 1ns/1ns module testbench_74HC74; reg D1,D2,RD1N,RD2N,CP1,CP2,SD1N,SD2N; wire Q1,Q2,Q1N,Q2N; initial begin CP1=0; end parameter clock_period=20; always #(clock_period/2) CP1=~CP1; initial begin CP2=0; end always #(clock_period/2) CP2=~CP2; initial begin D1=0; repeat(20) #20 D1=$random; end initial begin D2=0; repeat(20) #20 D2=$random; end initial begin RD1N=0; repeat(20) #20 RD1N=$random; end initial begin RD2N=0; repeat(20) #20 RD2N=$random; end initial begin SD1N=0; repeat(20) #20 SD1N=$random; end initial begin SD2N=0; repeat(20) #20 SD2N=$random; end HC74 testbench_74HC74( .CP1 ( CP1 ),.CP2 ( CP2 ),.D1 (D1),.D2 (D2),.RD1N (RD1N),.RD2N (RD2N),.SD1N (SD1N),.SD2N (SD2N),.Q1 (Q1),.Q1N (Q1N),.Q2 (Q2),.Q2N (Q2N) ); initial begin #400 $finish; end endmodule 2、第一次仿真结果 3、综合结果 4、第二次仿真结果(综合后) 有延迟时间,时间大约为300ps。 5、第三次仿真结果(布局布线后) 有延迟时间,时间大约为600ps。 五、基于实验箱的数字逻辑设计实验 参考附录F.3的时序电路核心板引脚对应表,在FPGA板上验证设计结果。 补充实验1 一、实验目的 1、了解基于Verilog的时序逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 二、实验环境 Libero仿真软件(参考附录C)。 三、实验内容 1、参考附录C掌握Libero软件的使用方法。 2、参考附录C中“一个完整的例子”,进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。 3、设计一个七段数码显示译码器(可参考讲义P54),完成相应的设计、综合及仿真,在Libero中实现一遍并记录结果。 四、实验结果和数据处理 1、模块及测试平台代码清单 // syima.v module mayi(a,b,c,d,y1,y2,y3,y4,y5,y6,y7); input a,b,c,d; output y1,y2,y3,y4,y5,y6,y7; assign y1=d+b+(c assign y2=~c+(b assign y3=c+~b+a; assign y4=d+(~c assign y5=(~c assign y6=c+(c assign y7=c+(c endmodule // testbench.v `timescale 1ns/1ns module tesetyima(); reg pa,pb,pc,pd; wire py1,py2,py3,py4,py5,py6,py7; mayi ui(pa,pb,pc,pd,py1,py2,py3,py4,py5,py6,py7); initial begin pd=0;pc=0;pb=0;pa=0; #10 pa=1; #10 pb=1;pa=0; #10 pa=1; #10 pc=1;pb=0;pa=0; #10 pa=1; #10 pb=1;pa=0; #10 pa=1; #10 pd=1;pc=0;pb=0;pa=0; #10 pa=1; end endmodule 2、第一次仿真结果 3、综合结果 4、第二次仿真结果(综合后) 有延迟时间,时间约为400ps。 5、第三次仿真结果(布局布线后) 有延迟时间,时间约为500ps。 五、基于实验箱的数字逻辑设计实验 将程序烧录到FPGA板上,并在FPGA板上验证设计结果。 补充实验2 一、实验目的 1、了解基于Verilog的时序逻辑电路的设计及其验证。 2、熟悉利用EDA工具进行设计及仿真的流程。 二、实验环境 Libero仿真软件(参考附录C)。 三、实验内容 1、参考附录C掌握Libero软件的使用方法。 2、参考附录C中“一个完整的例子”,进行针对74系列时序逻辑电路的设计,并完成相应的仿真实验。 3、实现课堂上补充的简单自动售货机控制电路,可自行在原基础上增加一些功能:如增加钞票面额、不同价格商品的选择等。完成相应的设计、综合及仿真,在Libero中实现一遍并记录结果。 四、实验结果和数据处理 1、模块及测试平台代码清单 2、第一次仿真结果 3、综合结果 4、第二次仿真结果(综合后) 5、第三次仿真结果(布局布线后) 五、基于实验箱的数字逻辑设计实验 将程序烧录到FPGA板上,并在FPGA板上验证设计结果。