基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx

上传人:b****1 文档编号:2398896 上传时间:2023-05-03 格式:DOCX 页数:48 大小:451.27KB
下载 相关 举报
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第1页
第1页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第2页
第2页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第3页
第3页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第4页
第4页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第5页
第5页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第6页
第6页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第7页
第7页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第8页
第8页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第9页
第9页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第10页
第10页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第11页
第11页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第12页
第12页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第13页
第13页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第14页
第14页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第15页
第15页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第16页
第16页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第17页
第17页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第18页
第18页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第19页
第19页 / 共48页
基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx

《基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx》由会员分享,可在线阅读,更多相关《基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx(48页珍藏版)》请在冰点文库上搜索。

基于某Libero地数字逻辑设计仿真及验证实验报告材料.docx

基于某Libero地数字逻辑设计仿真及验证实验报告材料

___计算机__学院计算机科学与技术专业班、学号

姓名协作者______________教师评定_________________

实验题目_________基于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

moduleHC00(A,B,Y);

input[3:

0]A,B;

output[3:

0]Y;

assignY=~(A&B);

endmodule

//74HC00测试平台代码

//test_00.v

`timescale1ns/1ns

moduletest_00;

reg[3:

0]a,b;

wire[3:

0]y;

HC00u(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;//0010

#10b=b<<1;//0100

#10b=b<<1;//1000

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC02代码-或非

//74HC02.v

moduleHC02(A,B,Y);

input[3:

0]A,B;

output[3:

0]Y;

assignY=~(A|B);

endmodule

//74HC02测试平台代码

//test_02.v

`timescale1ns/1ns

moduletest_02;

reg[3:

0]a,b,c;

wire[3:

0]y;

HC02u(a,b,y);

initial

begin

a=4'b1111;c=4'b0001;

b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;

a=4'b0000;c=4'b0001;

b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;

end

endmodule

//74HC04代码-非

//74HC04.v

moduleHC04(A,Y);

input[3:

0]A;

output[3:

0]Y;

assignY=~A;

endmodule

//74HC04测试平台代码

//test_04.v

`timescale1ns/1ns

moduletest_04;

reg[3:

0]a;

wire[3:

0]y;

HC04u(a,y);

initial

begin

a=4'b0001;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

end

endmodule

//74HC08代码-与

//74HC08.v

moduleHC08(A,B,Y);

input[3:

0]A,B;

output[3:

0]Y;

assignY=A&B;

endmodule

//74HC08测试平台代码

//test_08.v

`timescale1ns/1ns

moduletest_08;

reg[3:

0]a,b;

wire[3:

0]y;

HC00u(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

//74HC32代码-或

//74HC32.v

moduleHC32(A,B,Y);

input[3:

0]A,B;

output[3:

0]Y;

assignY=A|B;

endmodule

//74HC32测试平台代码

//test_32.v

`timescale1ns/1ns

moduletest_32;

reg[3:

0]a,b,c;

wire[3:

0]y;

HC02u(a,b,y);

initial

begin

a=4'b1111;c=4'b0001;

b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;

a=4'b0000;c=4'b0001;

b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;c=c<<1;

#10b=~c;

end

endmodule

//74HC86代码-异或

moduleHC86(A,B,Y);

input[3:

0]A,B;

output[3:

0]Y;

assignY=A^B;

endmodule

//74HC86测试平台代码

//test_86.v

`timescale1ns/1ns

moduletest_86;

reg[3:

0]a,b;

wire[3:

0]y;

HC86u(a,b,y);

initial

begin

a=4'b0000;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

#10

a=4'b1111;b=4'b0001;

#10b=b<<1;

#10b=b<<1;

#10b=b<<1;

end

endmodule

2、第一次仿真结果(任选一个门,请注明,插入截图,下同)。

(将波形窗口背景设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。

后面实验中的仿真使用相同方法处理)

3、综合结果(截图)。

(将相关窗口调至合适大小,使RTL图能完整显示,对窗口截图,后面实验中的综合使用相同方法处理)

4、第二次仿真结果(综合后)(截图)。

回答输出信号是否有延迟,延迟时间约为多少?

输出信号有延迟,延迟时间约为0.3ns

 

5、第三次仿真结果(布局布线后)(截图)。

回答输出信号是否有延迟,延迟时间约为多少?

分析是否有出现竞争冒险。

输出信号有延迟,延迟时间约为3ns,没有出现竞争冒险。

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代码

//74HC148.v

moduleHC148(EI,In,Out,EO,GS);

inputEI;

input[7:

0]In;

output[2:

0]Out;

outputEO,GS;

reg[2:

0]Out;

regEO,GS;

intergerI;

always@(EIorIn)

if(EI)

begin

Out=3'b111;EO=1;GS=1;

end

else

if(In==8'b11111111)

begin

Out=3'b111;EO=0;GS=1;

end

else

begin

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

begin

if(~In[I])

begin

Out=~I;EO=1;GS=0;

end

end

end

endmodule

//74HC148测试平台代码

//test_148.v

`timescale1ns/1ns

moduletest_148;

regei;

reg[7:

0]turn;

wire[7:

0]in=~turn;

wire[2:

0]out;

wireeo,gs;

HC148u(ei,in,out,eo,gs);

initial

begin

ei=1;turn=8'b1;

repeat(8)

#10turn=turn<<1;

ei=0;turn=8'b1;

repeat(8)

#10turn=turn<<1;

end

endmodule

 

//74HC138代码

//74HC138.v

moduledecoder3_8_1(DataIn,Enable,Eq);

input[2:

0]DataIn;

inputEnable;

output[7:

0]Eq;

reg[7:

0]Eq;

wire[2:

0]DataIn;

integerI;

always@(DataInorEnable)

begin

if(Enable)

Eq=0;

else

for(I=0;I<=7;I=I+1)

if(DataIn==I)

Eq[I]=1;

else

Eq[I]=0;

end

endmodule

//74HC138测试平台代码

//test_138.v

`timescale1ns/1ns

moduletest_138;

wire[2:

0]out;

reg[7:

0]in;

reg[2:

0]ei;

HC138u(out,in,ei);

taskcircle;

begin

in=0;

repeat(8)

#10in=in+1;

end

endtask

initial

begin

ei=1;circle();

ei=0;circle();

ei=2;

repeat(6)

begin

circle();

#10ei=ei+1;

end

end

endmodule

 

//74HC153代码

//74HC153.v

moduleHC153(DateOut,DateIn,Sel,Enable);

input[3:

0]DateIn;

input[1:

0]Sel;

inputEnable;

outputregDateOut;

always@(EnableorSelorDateIn)

if(Enable)DateOut=0;

elseDateOut=DateIn[Sel];

endmodule

//74HC153测试平台代码

//test_153.v

`timescale1ns/1ns

moduletest_153();

wireout;

reg[3:

0]in;

reg[1:

0]sel;

regei;

HC153u(out,in,sel,ei);

initial

begin

ei=0;sel=0;in=4'b1010;

repeat(4)

#10sel=sel+1;

ei=1;sel=0;in=4'b1010;

repeat(4)

#10sel=sel+1;

end

endmodule

 

//74HC85代码

//74HC85.v

moduleHC85(DateA,DateB,Cas,Q);

input[3:

0]DateA,DateB;

input[2:

0]Cas;

outputreg[2:

0]Q;

intergerI;

always@(DateAorDateBorCas)

begin

if(DateA==DateB)

begin

if(Cas[1])Q=3'b010;

elseif(Cas==3'b000)Q=3'b101;

elseif(Cas==3'b101)Q=3'b000;

elseQ=Cas;

end

else

begin

for(I=0;I<4;I=I+1)

if(DateA[I]>DateB[I])Q=3'b100;

elseif(DateA[I]

end

end

endmodule

//74HC85测试平台代码

//test_85.v

`timescale1ns/1ns

moduletest_85;

reg[3:

0]a,b;

reg[2:

0]cas;

wire[2:

0]res;

HC85u(a,b,cas,res);

taskcascade_input;

begin

#0cas=0;#10cas=1;#10cas=3'b100;#10cas=3'b101;

#10cas=3'b010;#10cas=3'b011;#10cas=3'b110;#10cas=3'b111;#10;

end

endtask

initial

begin

a=4'd9;

b=a;cascade_input();

b=4'd7;cascade_input();

end

endmodule

 

//74HC283代码

//74HC283.v

moduleHC283(DateA,DateB,Cin,Sum,Cout);

input[3:

0]DateA,DateB;

inputCin;

output[3:

0]Sum;

outputCout;

reg[4:

0]Buf;

assign{Cout,Sum}=Buf;

always@(DateAorDateBorCin)

Buf=DateA+DateB+Cin+5'd0;

endmodule

//74HC283测试平台代码

//test_283.v

`timescale1ns/1ns

moduletest_283;

reg[3:

0]a,b;

regin;

wire[3:

0]sum;

wireout;

intergerI;

HC283u(a,b,in,sum,out);

taskaccumulate;

begin

a=4'b0100;

for(I=0;I<16;I=I+1)

begin

b=I;#10;

end

endtask

initial

begin

in=0;accumulate();

in=1;accumulate();

end

endmodule

 

//74HC4511代码

//74HC4511.v

moduleHC4511(DateOut,DateIn,LE,BL_N,LT_N);

output[7:

0]DateOut;

input[3:

0]DateIn;

inputLE,BL_N,LT_N;

reg[7:

0]Buf;

assignDateOut=Buf;

always@(DateInorLEorBL_NorLT_N)

begin

if(!

LT_N)Buf=8'b11111111;

elseif(!

BL_N)Buf=8'b0000000;

elseif(LE)Buf=Buf;

else

case(DateIn)

4'd0:

Buf=8'b00111111;

4'd1:

Buf=8'b00000110;

4'd2:

Buf=8'b01011011;

4'd3:

Buf=8'b01001111;

4'd4:

Buf=8'b01100110;

4'd5:

Buf=8'b01101101;

4'd6:

Buf=8'b01111101;

4'd7:

Buf=8'b00000111;

4'd8:

Buf=8'b01111111;

4'd9:

Buf=8'b01101111;

4'ha:

Buf=8'b01110111;

4'hb:

Buf=8'b01111100;

4'hc:

Buf=8'b00111001;

4'hd:

Buf=8'b01011110;

4'he:

Buf=8'b01111001;

4'hf:

Buf=8'b01110001;

default:

;

endcase

end

 

2、第一次仿真结果(任选一个模块,请注明)

74HC148

3、综合结果

4、第二次仿真结果(综合后)。

回答输出信号是否有延迟,延迟时间约为多少?

输出信号有延迟,延迟时间约为0.5ns

5、第三次仿真结果(布局布线后)。

回答输出信号是否有延迟,延迟时间约为多少?

分析是否有出现竞争冒险。

输出信号有延迟,延迟时间约为5.2ns,出现了竞争冒险。

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代码

//74HC74.v

moduleHC74(Set_N,Rst_N,Clk,D,Q,Qn);

inputSet_N,Rst_N,Clk,D;

outputQ,Qn;

reg[1:

0]Buf;

assign{Q,Qn}=Buf;

always@(negedgeSet_NornegedgeRst_NorposedgeClk)

case({Rst_N,Set_N})

0:

Buf<=2'b11;

1:

Buf<=2'b10;

2:

Buf<=2'b01;

default:

Buf<={D,~D};

endcase

endmodule

//74HC74测试平台代码

//test_74.v

`timescale1ns/1ns

moduletest_74;

regs,r,clk,d;

wireq,qn;

HC74u(s,r,clk,d,q,qn);

taskclock;

repeat(10)

begin

d=0;#3;d=1;#3;

end

endtask

always

begin

clk=0;#2;clk=1;#2;

end

initial

begin

s=0;r=1;clock;

#5s=1;r=0;clock;

#5s=0;r=0;clock;

#5s=1;r=1;clock;

end

endmodule

 

//74HC112代码

//74HC112.v

moduleHC112(Set_N,Rst_N,Clk_N,J,K,Q,Qn);

inputSet_N,Rst_N,Clk_N,J,K;

outputQ,Qn;

regQ;

assignQn=~Q;

always@(negedgeSet_NornegedgeRst_NornegedgeClk_N)

case({Set_N,Rst_N})

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2