___计算机__学院______________专业_____班________组、学号______ 姓名______________协作者______________教师评定_________________ 实验题目__第七次实验——基于Libero的数字逻辑设计仿真及验证实验__
1、熟悉SmartDesign工具的使用
2、组合逻辑电路综合实验的设计、仿真、程序烧录及验证
3、时序电路的设计、仿真、程序烧录及验证
实验报告
一、实验目的
1、了解基于Verilog的组合逻辑电路的设计及其验证。
2、熟悉利用EDA工具(特别是SmartDesign)进行设计及仿真的流程。
3、学习利用SmartDesign对全加器进行VerilogHDL设计的方法。
4、熟悉实验箱的使用和程序下载(烧录)及测试的方法。
二、实验环境
1、Libero仿真软件。
2、DIGILOGIC-2011数字逻辑及系统实验箱。
3、Actel Proasic3 A3P030 FPGA核心板及Flash Pro4烧录器。
三、实验内容
1、掌握Libero软件的使用方法。
2、参考教材中5.7.1中相应内容,使用半加器构造全加器,并完成相应的仿真实验。
3、提交相应的仿真结果并完成程序烧录及实验箱验证。
4、编码器扩展实验(利用SmartDesign来完成)
设计一个电路:当按下小于等于9的按键后,显示数码管显示数字,当按下大于9的按键后,显示数码管不显示数字。若同时按下几个按键,优先级别的顺序是9到0。
本实验需要两个编码器74HC148、一个数码显示译码器74HC4511、一个共阴极8段显示数码管LN3461Ax和一个数值比较器74HC85。
5、参考教材中相应章节的设计代码、测试平台代码(可自行编程),完成74HC74、74HC112、74HC161、74HC194相应的设计、综合及仿真。提交针对74HC74、74HC112、74HC161、74HC194(任选一个
....)的综合结果,以及相应的仿真结果。
四、实验结果和数据处理
(一)全加器
1、SmartDesign连线效果截图
2、模块及测试平台代码
// halfadder.v
module half_adder(S,C,A,B);
input A,B;
output S,C;
xor gate1 (S,A,B);
and gate2 (C,A,B);
endmodule
3、第一次仿真结果
4、综合结果
5、第二次仿真结果(综合后)。回答输出信号是否有延迟,延迟时间约为多少?
6、第三次仿真结果(布局布线后)。回答输出信号是否有延迟,延迟时间约为多少?分析是否有出现竞争冒险。
7、引脚分配表
(二)编码器扩展实验
1、SmartDesign的连线图
2、功能仿真波形图
3、综合结果RTL图
4、引脚分配I/O Attribute Editor截图
5、记录实测结果
编码器扩展实验结果记录表
(三)时序电路
1、所有模块及测试平台代码清单
// halfadder.v
module half_adder(S,C,A,B);
input A,B;
output S,C;
xor gate1 (S,A,B);
and gate2 (C,A,B); endmodule
//74HC74代码
module d_ff_1(D,Clk,Q)
input D,Clk;
output Q;
reg Q;
always@(posedge Clk)
Q<=D;
endmodule;
//74HC74测试平台代码
`timescale 1ns/1ns
module testbench
reg D,Clk;
wire Q;
parameter clock_period=20; always#(clock_period/2)Clk=~Clk; initial
begin
D=0;Clk=0;
repeat(20)
#20 D=$random;
end
initial
#300 $finish;
d_ff_1 testbench_d(D,Clk,Q); endmodule
//74HC112代码
module jk_ff( J,K,Clk,Q,Qn) input J,K,Clk;
output Q,Qn;
reg Q;
assign Qn=~Q;
always@(posedge Clk)
case({J,K})
2’b00:Q<=Q;
2’b01:Q<=1’b0;
2’b10:Q<=1’b1;
2’b11:Q<=1’bx;
endcase
endmodule
//74HC112测试平台代码
`timescale 1ns/1ns
module testbench
reg J,K,Clk;
wire Q,Qn;
parameter clock_period=20;
always#(clock_period/2)Clk=~Clk;
initial
begin
J=0;Clk=0;
repeat(20)
#20 J=$random;
end
initial
#300 $finish;
jk_ff testbench_jk(J,K,Clk,Q,Qn);
endmodule
//74HC161代码
module HC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC); input CP;
input CEP,CET;
output [3:0]Qn;
input MRN,PEN;
INPUT[3:0]Dn;
output TC;
reg[3:0] qaux;
reg TC;
always@(posedge CP)
begin
if(!MRN)
qaux<=4’b0000;
else if(!PEN)
qaux<=Dn;
else if(CEP&CET)
qaux<=qaux+1;
else qaux<=qaux;
end
always@(posedge CP)
begin
if(qayx==4’b0000)
TC=1’b1;
else TC=1’b0;
end
assign Qn = qaux;
endmodule
//74HC161测试平台代码
//74HC194代码
//74HC194测试平台代码
2、第一次仿真结果(任选一个模块,请注明)
3、综合结果
4、第二次仿真结果(综合后)
5、第三次仿真结果(布局布线后)