(有代碼)基于libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)(4-8)_第1頁
(有代碼)基于libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)(4-8)_第2頁
(有代碼)基于libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)(4-8)_第3頁
(有代碼)基于libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)(4-8)_第4頁
(有代碼)基于libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)(4-8)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)____學(xué)院___專業(yè)___班________組

學(xué)號(hào)______

姓名____協(xié)作者_(dá)_____________教師評(píng)定_________________

實(shí)驗(yàn)題目_________基于Libero的數(shù)字邏輯設(shè)計(jì)仿真及驗(yàn)證實(shí)驗(yàn)_________

熟悉EDA工具的使用;仿真根本門電路。

仿真組合邏輯電路。

仿真時(shí)序邏輯電路。

根本門電路、組合電路和時(shí)序電路的程序燒錄及驗(yàn)證。

數(shù)字邏輯綜合設(shè)計(jì)仿真及驗(yàn)證。

實(shí)驗(yàn)報(bào)告

1、根本門電路

一、實(shí)驗(yàn)?zāi)康?/p>

1、了解基于Verilog的根本門電路的設(shè)計(jì)及其驗(yàn)證。

2、熟悉利用EDA工具進(jìn)行設(shè)計(jì)及仿真的流程。

3、學(xué)習(xí)針對(duì)實(shí)際門電路芯片74HC00、74HC02、74HC04、74HC08、74HC32、74HC86進(jìn)行VerilogHDL設(shè)計(jì)的方法。

二、實(shí)驗(yàn)環(huán)境

Libero仿真軟件。

三、實(shí)驗(yàn)內(nèi)容

1、掌握Libero軟件的使用方法。

2、進(jìn)行針對(duì)74系列根本門電路的設(shè)計(jì),并完成相應(yīng)的仿真實(shí)驗(yàn)。

3、參考教材中相應(yīng)章節(jié)的設(shè)計(jì)代碼、測(cè)試平臺(tái)代碼〔可自行編程〕,完成74HC00、74HC02、74HC04、74HC08、74HC32、74HC86相應(yīng)的設(shè)計(jì)、綜合及仿真。

4、提交針對(duì)74HC00、74HC02、74HC04、74HC08、74HC32、74HC86〔任選一個(gè)〕的綜合結(jié)果,以及相應(yīng)的仿真結(jié)果。

四、實(shí)驗(yàn)結(jié)果和數(shù)據(jù)處理

1、所有模塊及測(cè)試平臺(tái)代碼清單

//74HC00代碼-與非

//HC00.v

moduleHC00(A,B,Y);

input[4:1]A,B;

output[4:1]Y;

assignY=~(A&B);

endmodule

//74HC00測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest1();

reg[4:1]a,b;

wire[4:1]y;

HC00u1(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

//74HC02代碼-或非

//HC02.v

moduleHC02(A,B,Y);

input[4:1]A,B;

output[4:1]Y;

assignY=~(A|B);

endmodule

//74HC02測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest2();

reg[4:1]a,b;

wire[4:1]y;

HC02u2(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

//74HC04代碼-非

//HC04.v

moduleHC04(A,Y);

input[6:1]A;

output[6:1]Y;

assignY=~A;

endmodule

//74HC04測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest3();

reg[6:1]a;

wire[6:1]y;

HC04u3(a,y);

initial

begin

a=4'b000001;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

#10a=a<<1;

end

endmodule

//74HC08代碼-與

//HC08.v

moduleHC08(A,B,Y);

input[4:1]A,B;

output[4:1]Y;

assignY=A&B;

endmodule

//74HC08測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest4();

reg[4:1]a,b;

wire[4:1]y;

HC08u4(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代碼-或

//HC32.v

moduleHC32(A,B,Y);

input[4:1]A,B;

output[4:1]Y;

assignY=A|B;

endmodule

//74HC32測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest5();

reg[4:1]a,b;

wire[4:1]y;

HC32u5(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

//74HC86代碼-異或

//HC86.v

moduleHC86(A,B,Y);

input[4:1]A,B;

output[4:1]Y;

assignY=A^B;

endmodule

//74HC86測(cè)試平臺(tái)代碼

//test.v

`timescale1ns/1ns

moduletest6();

reg[4:1]a,b;

wire[4:1]y;

HC86u6(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

第一次仿真結(jié)果〔任選一個(gè)門,請(qǐng)注明,插入截圖,下同〕?!矊⒉ㄐ未翱诒尘霸O(shè)為白色,調(diào)整窗口至適宜大小,使波形能完整顯示,對(duì)窗口截圖。后面實(shí)驗(yàn)中的仿真使用相同方法處理〕

異或門:

綜合結(jié)果。〔將相關(guān)窗口調(diào)至適宜大小,使RTL圖能完整顯示,對(duì)窗口截圖,后面實(shí)驗(yàn)中的綜合使用相同方法處理〕

4、第二次仿真結(jié)果〔綜合后〕。答復(fù)輸出信號(hào)是否有延遲,延遲時(shí)間約為多少?

輸出信號(hào)有延遲,延遲時(shí)間為300ps。

5、第三次仿真結(jié)果〔布局布線后〕。答復(fù)輸出信號(hào)是否有延遲,延遲時(shí)間約為多少?分析是否有出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)。

輸出信號(hào)有延遲,延遲時(shí)間是4200ps。沒有出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)。

2、組合邏輯電路

一、實(shí)驗(yàn)?zāi)康?/p>

1、了解基于Verilog的組合邏輯電路的設(shè)計(jì)及其驗(yàn)證。

2、熟悉利用EDA工具進(jìn)行設(shè)計(jì)及仿真的流程。

3、學(xué)習(xí)針對(duì)實(shí)際組合邏輯電路芯片74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511進(jìn)行VerilogHDL設(shè)計(jì)的方法。

二、實(shí)驗(yàn)環(huán)境

Libero仿真軟件。

三、實(shí)驗(yàn)內(nèi)容

1、掌握Libero軟件的使用方法。

2、進(jìn)行針對(duì)74系列根本組合邏輯電路的設(shè)計(jì),并完成相應(yīng)的仿真實(shí)驗(yàn)。

3、參考教材中相應(yīng)章節(jié)的設(shè)計(jì)代碼、測(cè)試平臺(tái)代碼〔可自行編程〕,完成74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511相應(yīng)的設(shè)計(jì)、綜合及仿真。

4、74HC85測(cè)試平臺(tái)的測(cè)試數(shù)據(jù)要求:進(jìn)行比較的A、B兩數(shù),分別為本人學(xué)號(hào)的末兩位,如“89〞,那么A數(shù)為“1000〞,B數(shù)為“1001〞。假設(shè)兩數(shù)相等,需考慮級(jí)聯(lián)輸入〔級(jí)聯(lián)輸入的各種取值情況均需包括〕;假設(shè)兩數(shù)不等,那么需增加一對(duì)取值情況,驗(yàn)證A、B相等時(shí)的比較結(jié)果。

5、74HC4511設(shè)計(jì)成擴(kuò)展型的,即能顯示數(shù)字0~9、字母a~f。

6、提交針對(duì)74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511〔任選一個(gè)〕的綜合結(jié)果,以及相應(yīng)的仿真結(jié)果。

1、所有模塊及測(cè)試平臺(tái)代碼清單

//74HC148代碼

//HC148.v

moduleHC148(DataIn,EO,Dataout);

input[7:0]DataIn;

outputEO;

output[2:0]Dataout;

reg[2:0]Dataout;

regEO;

integerI;

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測(cè)試平臺(tái)代碼

//test148.v

`timescale1ns/1ns

moduletest148;

reg[7:0]in;

wire[2:0]out;

wireEO;

initial

begin

in=00000001;

repeat(9)

#20in=in<<1;

end

HC148u148(in,EO,out);

endmodule

//74HC138代碼

//HC138.v

moduleHC138(A,B,C,G1,G2AN,G2BN,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0);

inputA,B,C;

inputG1,G2AN,G2BN;

outputY7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;

wireY7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;

reg[7:0]Eq;

wire[7:0]EqN;

wire[2:0]DataIn;

assignEqN=~Eq;

assignDataIn[0]=A;

assignDataIn[1]=B;

assignDataIn[2]=C;

always@(DataInorG1orG2ANorG2BN)

begin

if(!G1)

Eq=8'b11111111;

elseif(!(G2AN&G2BN))

Eq=8'b11111111;

elseEq=1'b1<<DataIn;

end

assignY0=EqN[0];

assignY1=EqN[1];

assignY2=EqN[2];

assignY3=EqN[3];

assignY4=EqN[4];

assignY5=EqN[5];

assignY6=EqN[6];

assignY7=EqN[7];

endmodule

//74HC138測(cè)試平臺(tái)代碼

//test138.v

`timescale1ns/10ps

moduletest138;

regA,B,C;

regG1,G2AN,G2BN;

wireY0,Y1,Y2,Y3,Y4,Y5,Y6,Y7;

initial

begin

A=0;

repeat(20)

#20A=$random;

end

initial

begin

B=0;

repeat(20)

#20A=$random;

end

initial

begin

C=0;

repeat(20)

#20A=$random;

end

initial

begin

G1=0;

#40G1=1;

end

initial

begin

G2AN=0;

#25G2AN=1;

end

initial

begin

G2BN=0;

#45G2BN=1;

end

HC138u138

(

.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

moduleHC153(C0,C1,C2,C3,A,B,Y,G);

inputC0,C1,C2,C3,A,B,G;

outputY;

regY;

always@(C0orC1orC2orC3orAorB)

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測(cè)試平臺(tái)代碼

//test153.v

`timescale1ns/1ns

moduletest153;

regC0,C1,C2,C3;

regA,B,G;

wireY;

initial

begin

G=1;

repeat(20)

#20G=0;

end

initial

begin

A=0;

repeat(20)

#20A=$random;

end

initial

begin

B=0;

repeat(20)

#20B=$random;

end

initial

begin

C0=0;

repeat(20)

#20C0=$random;

end

initial

begin

C1=0;

repeat(20)

#20C1=$random;

end

initial

begin

C2=0;

repeat(20)

#20C2=$random;

end

initial

begin

C3=0;

repeat(20)

#20C3=$random;

end

HC153u153

(

.C0(C0),

.C1(C1),

.C2(C2),

.C3(C3),

.G(G),

.A(A),

.B(B),

.Y(Y)

);

endmodule

//74HC85代碼

//HC85.v

moduleHC85(A3,A2,A1,A0,B3,B2,B1,B0,QAGB,QASB,QAEB,IAGB,IASB,IAEB);

inputA3,A2,A1,A0,B3,B2,B1,B0,IAGB,IASB,IAEB;

outputQAGB,QASB,QAEB;

regQAGB,QASB,QAEB;

wire[3:0]DataA,DataB;

assignDataA[0]=A0;

assignDataA[1]=A1;

assignDataA[2]=A2;

assignDataA[3]=A3;

assignDataB[0]=B0;

assignDataB[1]=B1;

assignDataB[2]=B2;

assignDataB[3]=B3;

always@(DataAorDataB)

begin

if(DataA>DataB)

begin

QAGB=1;QASB=0;QAEB=0;

end

elseif(DataA<DataB)

begin

QASB=1;QAGB=0;QAEB=0;

end

elseif(IAGB&!IASB&!IAEB)

begin

QAGB=1;QASB=0;QAEB=0;

end

elseif(!IAGB&IASB&!IAEB)

begin

QASB=1;QAGB=0;QAEB=0;

end

elseif(IAEB)

begin

QAEB=1;QASB=0;QAGB=0;

end

begin

if(DataA==DataB)

if(IAGB&IASB&!IAEB)

beginQAGB=0;QASB=0;QAEB=0;end

if(!IAGB&!IASB&!IAEB)

beginQAGB=1;QASB=1;QAEB=0;end

end

end

endmodule

//74HC85測(cè)試平臺(tái)代碼

//test85.v

`timescale1ns/1ns

moduletest85;

regA3,A2,A1,A0,B3,B2,B1,B0;

regIAGB,IASB,IAEB;

wireQAGB,QASB,QAEB;

initial

begin

A3=0;

repeat(20)

#20A3=$random;

end

initial

begin

A2=0;

repeat(20)

#20A2=$random;

end

initial

begin

A1=0;

repeat(20)

#20A1=$random;

end

initial

begin

A0=0;

repeat(20)

#20A0=$random;

end

initial

begin

B3=0;

repeat(20)

#20B3=$random;

end

initial

begin

B2=0;

repeat(20)

#20B2=$random;

end

initial

begin

B1=0;

repeat(20)

#20B1=$random;

end

initial

begin

B0=0;

repeat(20)

#20B0=$random;

end

initial

begin

IAGB=0;

repeat(10)

#40IAGB=$random;

end

initial

begin

IASB=0;

repeat(10)

#40IASB=$random;

end

initial

begin

IAEB=0;

repeat(10)

#40IAEB=$random;

end

HC85u85

(

.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)

);

Endmodule

//74HC283代碼

//HC283.v

moduleHC283(A3,A2,A1,A0,B3,B2,B1,B0,Sigma3,Sigma2,Sigma1,Sigma0,C0,C4);

inputA3,A2,A1,A0,B3,B2,B1,B0;

inputC0;

outputSigma3,Sigma2,Sigma1,Sigma0;

outputC4;

regC4;

reg[3:0]Sigma;

wire[3:0]DataA,DataB;

assignDataA[0]=A0;

assignDataA[1]=A1;

assignDataA[2]=A2;

assignDataA[3]=A3;

assignDataB[0]=B0;

assignDataB[1]=B1;

assignDataB[2]=B2;

assignDataB[3]=B3;

always@(DataAorDataBorC0)

begin

{C4,Sigma}=DataA+DataB+C0;

end

assignSigma0=Sigma[0];

assignSigma1=Sigma[1];

assignSigma2=Sigma[2];

assignSigma3=Sigma[3];

endmodule

//74HC283測(cè)試平臺(tái)代碼

//test283.v

`timescale1ns/10ps

moduletest283;

regA3,A2,A1,A0,B3,B2,B1,B0;

regC0;

wireSigma3,Sigma2,Sigma1,Sigma0;

wireC4;

initial

begin

A3=0;

repeat(20)

#20A3=$random;

end

initial

begin

A2=0;

repeat(20)

#20A2=$random;

end

initial

begin

A1=0;

repeat(20)

#20A1=$random;

end

initial

begin

A0=0;

repeat(20)

#20A0=$random;

end

initial

begin

B3=0;

repeat(20)

#20B3=$random;

end

initial

begin

B2=0;

repeat(20)

#20B2=$random;

end

initial

begin

B1=0;

repeat(20)

#20B1=$random;

end

initial

begin

B0=0;

repeat(20)

#20B0=$random;

end

initial

begin

C0=0;

repeat(20)

#20C0=$random;

end

HC283u283

(

.A3(A3),

.A2(A2),

.A1(A1),

.A0(A0),

.B3(B3),

.B2(B2),

.B1(B1),

.B0(B0),

.Sigma3(Sigma3),

.Sigma2(Sigma2),

.Sigma1(Sigma1),

.Sigma0(Sigma0),

.C0(C0),

.C4(C4)

);

Endmodule

//74HC4511代碼

//HC4511.v

moduleHC4511(A,Seg,LT_N,BI_N,LE);

inputLT_N,BI_N,LE;

input[3:0]A;

output[7:0]Seg;

reg[7:0]SM_8S;

assignSeg=SM_8S;

always@(AorLT_NorBI_NorLE)

begin

if(!LT_N)SM_8S=8'b11111111;

elseif(!BI_N)SM_8S=8'b00000000;

elseif(LE)SM_8S=SM_8S;

else

case(A)

4'd0:SM_8S=8'b00111111;

4'd1:SM_8S=8'b00000110;

4'd2:SM_8S=8'b01011011;

4'd3:SM_8S=8'b01001111;

4'd4:SM_8S=8'b01100110;

4'd5:SM_8S=8'b01101101;

4'd6:SM_8S=8'b01111101;

4'd7:SM_8S=8'b00000111;

4'd8:SM_8S=8'b01111111;

4'd9:SM_8S=8'b01101111;

4'd10:SM_8S=8'b01110111;

4'd11:SM_8S=8'b01111100;

4'd12:SM_8S=8'b00111001;

4'd13:SM_8S=8'b01011110;

4'd14:SM_8S=8'b01111001;

4'd15:SM_8S=8'b01110001;

default:;

endcase

end

endmodule

//74HC4511測(cè)試平臺(tái)代碼

//test4511.v

`timescale1ns/1ps

moduletest4511;

reg[3:0]pA;

regpLT_N,pBI_N,pLE;

wire[7:0]pSeg;

HC4511u4511(pA,pSeg,pLT_N,pBI_N,pLE);

initial

begin

pA=0;pLT_N=0;pBI_N=0;pLE=0;

#10pLT_N=0;

#10pLT_N=1;pBI_N=0;

#10pLE=0;pLT_N=1;pBI_N=1;pA=4'd0;

#10pA=4'd0;

#10pA=4'd1;

#10pA=4'd2;

#10pA=4'd3;

#10pA=4'd4;

#10pA=4'd5;

#10pA=4'd6;

#10pA=4'd7;

#10pA=4'd8;

#10pA=4'd9;

#10pA=4'd10;

#10pA=4'd11;

#10pA=4'd12;

#10pA=4'd13;

#10pA=4'd14;

#10pA=4'd15;

end

endmodule

第一次仿真結(jié)果〔任選一個(gè)模塊,請(qǐng)注明〕

74HC85

3、綜合結(jié)果

4、第二次仿真結(jié)果〔綜合后〕。答復(fù)輸出信號(hào)是否有延遲,延遲時(shí)間約為多少?

輸出信號(hào)有延遲,延遲時(shí)間為500ps。

第三次仿真結(jié)果〔布局布線后〕。答復(fù)輸出信號(hào)是否有延遲,延遲時(shí)間約為多少?分析是否有出現(xiàn)競(jìng)爭(zhēng)冒險(xiǎn)。

輸出信號(hào)有延遲,延遲時(shí)間為4700,有出現(xiàn)競(jìng)爭(zhēng)

3、時(shí)序邏輯電路

一、實(shí)驗(yàn)?zāi)康?/p>

1、了解基于Verilog的時(shí)序邏輯電路的設(shè)計(jì)及其驗(yàn)證。

2、熟悉利用EDA工具進(jìn)行設(shè)計(jì)及仿真的流程。

3、學(xué)習(xí)針對(duì)實(shí)際時(shí)序邏輯電路芯片74HC74、74HC112、74HC194、74HC161進(jìn)行VerilogHDL設(shè)計(jì)的方法。

二、實(shí)驗(yàn)環(huán)境

Libero仿真軟件。

三、實(shí)驗(yàn)內(nèi)容

1、熟練掌握Libero軟件的使用方法。

2、進(jìn)行針對(duì)74系列時(shí)序邏輯電路的設(shè)計(jì),并完成相應(yīng)的仿真實(shí)驗(yàn)。

3、參考教材中相應(yīng)章節(jié)的設(shè)計(jì)代碼、測(cè)試平臺(tái)代碼〔可自行編程〕,完成74HC74、74HC112、74HC161、74HC194相應(yīng)的設(shè)計(jì)、綜合及仿真。

4、提交針對(duì)74HC74、74HC112、74HC161、74HC194〔任選一個(gè)〕的綜合結(jié)果,以及相應(yīng)的仿真結(jié)果。

四、實(shí)驗(yàn)結(jié)果和數(shù)據(jù)處理

1、所有模塊及測(cè)試平臺(tái)代碼清單

//74HC74代碼

//HC74.v

moduleHC74(D1,D2,CP1,CP2,RD1N,RD2N,SD1N,SD2N,Q1,Q2,Q1N,Q2N);

inputD1,D2;

inputRD1N,SD1N,CP1;

inputRD2N,SD2N,CP2;

outputQ1,Q1N,Q2,Q2N;

regQ1,Q2;

assignQ1N=~Q1;

assignQ2N=~Q2;

always@(posedgeCP1)begin

if(!RD1N)Q1<=0;

elseif(!SD1N)Q1<=1;

elseQ1<=D1;

end

always@(posedgeCP2)begin

if(!RD2N)Q2<=0;

elseif(!SD2N)Q2<=1;

elseQ2<=D2;

end

endmodule

//74HC74測(cè)試平臺(tái)代碼

//test74.v

`timescale1ns/1ns

moduletest74;

regD1,D2,RD1N,RD2N,CP1,CP2,SD1N,SD2N;

wireQ1,Q2,Q1N,Q2N;

initialbegin

CP1=0;

end

parameterclock_period=20;

always#(clock_period/2)CP1=~CP1;

initialbegin

CP2=0;

end

always#(clock_period/2)CP2=~CP2;

initial

begin

D1=0;

repeat(20)

#20D1=$random;

end

initial

begin

D2=0;

repeat(20)

#20D2=$random;

end

initial

begin

RD1N=0;

repeat(20)

#20RD1N=$random;

end

initial

begin

RD2N=0;

repeat(20)

#20RD2N=$random;

end

initial

begin

SD1N=0;

repeat(20)

#20SD1N=$random;

end

initial

begin

SD2N=0;

repeat(20)

#20SD2N=$random;

end

HC74u74

(

.CP1(CP1),

.CP2(CP2),

.D1(D1),

.D2(D2),

.RD1N(RD1N),

.RD2N(RD2N),

.SD1N(SD1N),

.SD2N(SD2N),

.Q1(Q1),

.Q1N(Q1N),

.Q2(Q2),

.Q2N(Q2N)

);

endmodule

//74HC112代碼

//HC112.v

moduleHC112(J1,J2,K1,K2,CPN1,CPN2,RD1N,RD2N,SD1N,SD2N,Q1,Q2,Q1N,Q2N);

inputJ1,J2,K1,K2;

inputRD1N,SD1N,CPN1;

inputRD2N,SD2N,CPN2;

outputQ1,Q2,Q1N,Q2N;

regQ1,Q2;

assignQ1N=~Q1;

assignQ2N=~Q2;

always@(posedgeCPN1)begin

if(!RD1N)Q1<=0;

elseif(!SD1N)Q1<=1;

else

case({J1,K1})

2'b00:Q1<=Q1;

2'b01:Q1<=1'b0;

2'b10:Q1<=1'b1;

2'b11:Q1<=~Q1;

default:Q1<=1'bx;

endcase

end

always@(posedgeCPN2)begin

if(!RD2N)Q2<=0;

elseif(!SD2N)Q2<=1;

else

case({J2,K2})

2'b00:Q2<=Q2;

2'b01:Q2<=1'b0;

2'b10:Q2<=1'b1;

2'b11:Q2<=~Q2;

default:Q2<=1'bx;

endcase

end

endmodule

//74HC112測(cè)試平臺(tái)代碼

//test112.v

`timescale1ns/1ns

moduletest112;

regJ1,J2,K1,K2,RD1N,RD2N,CPN1,CPN2,SD1N,SD2N;

wireQ1,Q2,Q1N,Q2N;

initialbegin

CPN1=0;

end

parameterclock_period=20;

always#(clock_period/2)CPN1=~CPN2;

initialbegin

CPN2=0;

end

always#(clock_period/2)CPN2=~CPN2;

initial

begin

J1=0;

repeat(20)

#20J1=$random;

end

initial

begin

K1=0;

repeat(20)

#20K1=$random;

end

initial

begin

J2=0;

repeat(20)

#20J2=$random;

end

initial

begin

K2=0;

repeat(20)

#20K2=$random;

end

initial

begin

RD1N=0;

repeat(20)

#20RD1N=$random;

end

initial

begin

RD2N=0;

repeat(20)

#20RD2N=$random;

end

initial

begin

SD1N=0;

repeat(20)

#20SD1N=$random;

end

initial

begin

SD2N=0;

repeat(20)

#20SD2N=$random;

end

HC112u112

(

.CPN1(CPN1),

.CPN2(CPN2),

.J1(J1),

.K1(K1),

.J2(J2),

.K2(K2),

.RD1N(RD1N),

.RD2N(RD2N),

.SD1N(SD1N),

.SD2N(SD2N),

.Q1(Q1),

.Q1N(Q1N),

.Q2(Q2),

.Q2N(Q2N)

);

endmodule

//74HC161代碼

//HC161.v

moduleHC161(CP,CEP,CET,MRN,PEN,Dn,Qn,TC);

inputCP;

inputCEP,CET;

output[3:0]Qn;

inputMRN;

inputPEN;

input[3:0]Dn;

outputregTC;

reg[3:0]qaux;

always@(posedgeCP)

begin

if(!MRN)

qaux<=4'b0000;

elseif(!PEN)

qaux<=Dn;

elseif(CEP&CET)

qaux<=qaux+1;

elseqaux<=qaux;

end

always@(posedgeCP)

begin

if(qaux==4'b1111)

TC=1'b1;

elseTC=1'b0;

end

assignQn=qaux;

endmodule

//74HC161測(cè)試平臺(tái)代碼

//test161.v

`timescale1ns/1ns

moduletest161;

regCP,CEP,CET,MRN,PEN;

reg[3:0]Dn;

wire[3:0]Qn;

wireTC;

initial

begin

CP=0;

end

parameterDELY=20;

always#(DELY/2)CP=~CP;

initial

begin

CEP=0;

repeat(20)

#20CEP=1;

end

initial

begin

CET=0;

repeat(20)

#20CET=1;

end

initial

begin

MRN=0;

repeat(20)

#20MRN=1;

end

initial

begin

PEN=0;

repeat(20)

#20PEN=1;

end

initial

begin

Dn=0;

repeat(20)

#20Dn=$random;

end

HC161u161

(

.CP(CP),

.CEP(CEP),

.CET(CET),

.MRN(MRN),

.PEN(PEN),

.Dn(Dn),

.Qn(Qn),

.TC(TC)

);

endmodule

//74HC194代碼

//HC194.v

moduleHC194(D0,D1,D2,D3,S0,S1,DSR,DSL,MRN,CP,Q0,Q1,Q2,Q3);

inputD0,D1,D2,D3;

inputS0,S1;

inputDSR,DSL;

inputMRN;

inputCP;

outputQ0,Q1,Q2,Q3;

reg[3:0]Qaux;

wire[3:0]Data;

assignData[0]=D0;

assignData[1]=D1;

assignData[2]=D2;

assignData[3]=D3;

always@(posedgeCP)

begin

if(!MRN)

Qaux=0;

elseif(S1&S0)

Qaux=Data;

elseif(S1&!S0)

Qaux={Qaux[2:0],DSL};

elseif(!S1&S0)

Qaux={DSR,Qaux[2:0]};

elseif(!S1&S0)

Qaux=Qaux;

end

assignQ0=Qaux[0];

assignQ1=Qaux[1];

assignQ2=Qaux[2];

assignQ3=Qaux[3];

endmodule

//74HC194測(cè)試平臺(tái)代碼

//test194.v

`timescale1ns/1ns

moduletest194;

regD0,D1,D2,D3,S0,S1,DSR,DSL,MRN,CP;

wireQ0,Q1,Q2,Q3;

initialbegin

CP=0;

end

parameterclock_period=20;

always#(clock_period/2)CP=~CP;

initial

begin

D0=0;

repeat(20)

#20D0=$random;

end

initial

begin

D1=0;

repeat(20)

#20D1=$random;

end

initial

begin

D2=0;

repeat(20)

#20D2=$random;

end

initial

begin

D3=0;

repeat(20)

#20D3=$random;

end

initial

begin

S0=0;

repeat(20)

#20S0=$random;

end

initial

begin

S1=0;

repeat(20)

#20S1=$random;

end

initial

begin

MRN=0;

repeat(20)

#20MRN=$random;

end

initial

begin

DSR=0;

repeat(20)

#20DSR=$random;

end

initial

begin

DSL=0;

repeat(20)

#20DSL=$random;

end

HC194u194

(

.CP(CP),

.D0(D0),

.D1(D1),

.D2(D2),

.D3(D3),

.S1(S1),

.S0(S0),

.DSR(DSR),

.DSL(DSL),

.MRN(MRN),

.Q0(Q0),

.Q1(Q1),

.Q2(Q2),

.Q3(Q3)

);

endmodule

2、第一次仿真結(jié)果〔任選一個(gè)模塊,請(qǐng)注明〕

74HC161

3、綜合結(jié)果

4、第二次仿真結(jié)果〔綜合后〕

第三次仿真結(jié)果〔布局布線后〕

4、根本門電路、組合電路和時(shí)序電路的程序燒錄及驗(yàn)證〔3人小組共同完成〕

一、實(shí)驗(yàn)?zāi)康?/p>

1、熟悉利用EDA工具進(jìn)行設(shè)計(jì)及仿真的流程。

2、熟悉實(shí)驗(yàn)箱的使用和程序下載〔燒錄〕及測(cè)試的方法。

二、實(shí)驗(yàn)環(huán)境及儀器

1、Libero仿真軟件。

2、DIGILOGIC-2023數(shù)字邏輯及系統(tǒng)實(shí)驗(yàn)箱。

3、ActelProasic3A3P030FPGA核心板及FlashPro4燒錄器。

三、實(shí)驗(yàn)內(nèi)容

1、新建一個(gè)工程文件,將前面已經(jīng)設(shè)計(jì)好的74HC00、74HC02、74HC04、74HC08、74HC32、74HC86實(shí)例文件導(dǎo)入,在SmartDesign窗口分別添加這6個(gè)模塊,完成相應(yīng)連線。.按實(shí)驗(yàn)指導(dǎo)書P175的附錄B.3中所列引腳對(duì)應(yīng)表來分配引腳,最后通過燒錄器燒錄至FPGA核心板上。按分配的引腳連線,實(shí)測(cè)相應(yīng)功能并記錄結(jié)果。詳細(xì)步驟請(qǐng)參考教材及實(shí)驗(yàn)指導(dǎo)書的相關(guān)內(nèi)容。

2、新建一個(gè)工程文件,將前面已經(jīng)設(shè)計(jì)好的74HC148、74HC138、74HC153、74HC85、74HC283實(shí)例文件導(dǎo)入,在SmartDesign窗口分別添加這5個(gè)模塊,完成相應(yīng)連線。按實(shí)驗(yàn)指導(dǎo)書P176的附錄B.4中所列引腳對(duì)應(yīng)表來分配引腳,最后通過燒錄器燒錄至FPGA核心板上。按分配的引腳連線,實(shí)測(cè)相應(yīng)功能并記錄結(jié)果。詳細(xì)步驟請(qǐng)參考教材及實(shí)驗(yàn)指導(dǎo)書的相關(guān)內(nèi)容。

3、新建一個(gè)工程文件,將前面已經(jīng)設(shè)計(jì)好的74HC4511實(shí)例文件導(dǎo)入,在SmartDesign窗口添加這1個(gè)模塊,完成相應(yīng)連線。按實(shí)驗(yàn)指導(dǎo)書P173的附錄B.2中所列引腳對(duì)應(yīng)表來分配引腳,最后通過燒錄器燒錄至FPGA核心板上。按分配的引腳連線,實(shí)測(cè)相應(yīng)功能并記錄結(jié)果。詳細(xì)步驟請(qǐng)參考教材及實(shí)驗(yàn)指導(dǎo)書的相關(guān)內(nèi)容。

4、新建一個(gè)工程文件,將前面已經(jīng)設(shè)計(jì)好的74HC74、74HC112、74HC194、74HC161實(shí)例文件導(dǎo)入,在SmartDesign窗口分別添加這4個(gè)模塊,完成相應(yīng)連線。按實(shí)驗(yàn)指導(dǎo)書P178的附錄B.5中所列引腳對(duì)應(yīng)表來分配引腳,最后通過燒錄器燒錄至FPGA核心板上。按分配的引腳連線,實(shí)測(cè)相應(yīng)功能并記錄結(jié)果。詳細(xì)步驟請(qǐng)參考教材及實(shí)驗(yàn)指導(dǎo)書的相關(guān)內(nèi)容。

四、實(shí)驗(yàn)結(jié)果和數(shù)據(jù)處理

表4-174HC00輸入輸出狀態(tài)

輸入端

輸出端Y

A

B

LED

邏輯狀態(tài)

0

0

1

0

1

1

1

0

1

1

1

0

表4-274HC02輸入輸出狀態(tài)

輸入端

輸出端Y

A

B

LED

邏輯狀態(tài)

0

0

1

0

1

0

1

0

0

1

1

0

表4-374HC04輸入輸出狀態(tài)

輸入端

輸出端Y

A

LED

邏輯狀態(tài)

0

1

1

0

表4-474HC08輸入輸出狀態(tài)

輸入端

輸出端Y

A

B

LED

邏輯狀態(tài)

0

0

0

0

1

0

1

0

0

1

1

1

表4-574HC32輸入輸出狀態(tài)

輸入端

輸出端Y

A

B

LED

邏輯狀態(tài)

0

0

0

0

1

1

1

0

1

1

1

1

表4-674HC86輸入輸出狀態(tài)

輸入端

輸出端Y

A

B

LED

邏輯狀態(tài)

0

0

0

0

1

1

1

0

1

1

1

0

表4-774LS148輸入輸出狀態(tài)

控制

十進(jìn)制數(shù)字信號(hào)輸入

二進(jìn)制數(shù)碼輸出

狀態(tài)輸出

I0

I1

I2

I3

I4

I5

I6

I7

A2

A1

A0

GS

EO

1

X

X

X

X

X

X

X

X

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

0

0

X

X

X

X

X

X

X

0

0

0

0

0

1

0

X

X

X

X

X

X

0

1

0

0

1

0

1

0

X

X

X

X

X

0

1

1

0

1

0

0

1

0

X

X

X

X

0

1

1

1

0

1

1

0

1

0

X

X

X

0

1

1

1

1

1

0

0

0

1

0

X

X

0

1

1

1

1

1

1

0

1

0

1

0

X

0

1

1

1

1

1

1

1

1

0

0

1

0

0

1

1

1

1

1

1

1

1

1

1

0

1

注:X為任意狀態(tài)

表4-874HC138輸入輸出狀態(tài)

使能輸入

數(shù)據(jù)輸入

譯碼輸出

E3

A2

A1

A0

1

X

X

X

X

X

1

1

1

1

1

1

1

1

X

1

X

X

X

X

1

1

1

1

1

1

1

1

X

X

0

X

X

X

1

1

1

1

1

1

1

1

0

0

1

0

0

0

0

1

1

1

1

1

1

1

0

0

1

0

0

1

1

0

1

1

1

1

1

1

0

0

1

0

1

0

1

1

0

1

1

1

1

1

0

0

1

0

1

1

1

1

1

0

1

1

1

1

0

0

1

1

0

0

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

0

1

1

1

1

1

1

0

1

0

0

1

1

1

1

1

1

1

1

1

1

1

0

注:X為任意狀態(tài)

表4-974HC153輸入輸出狀態(tài)

選擇輸入

數(shù)據(jù)輸入

輸出使能輸入

輸出

S1

S0

1I0

1I1

1I2

1I3

1Y

X

X

X

X

X

X

1

0

0

0

0

X

X

X

0

0

0

0

1

X

X

X

0

1

1

0

X

0

X

X

0

0

1

0

X

1

X

X

0

1

0

1

X

X

0

X

0

0

0

1

X

X

1

X

0

1

1

1

X

X

X

0

0

0

1

1

X

X

X

1

0

1

注:X為任意狀態(tài)

表4-1074HC85輸入輸出狀態(tài)

比較輸入

級(jí)聯(lián)輸入

輸出

A3

A2

A1

A0

B3

B2

B0

B1

IA>B

IA=B

IA<B

A>B

A=B

A<B

1

X

X

X

0

X

X

X

X

X

X

1

0

0

0

X

X

X

1

X

X

X

X

X

X

0

0

1

1

1

X

X

1

0

X

X

X

X

X

1

0

0

0

0

X

X

0

1

X

X

X

X

X

0

0

1

1

0

1

X

1

0

0

X

X

X

X

1

0

0

0

0

0

X

0

0

1

X

X

X

X

0

0

1

1

1

0

1

1

1

0

0

X

X

X

1

0

0

0

0

1

0

0

0

1

1

X

X

X

0

0

1

1

1

0

1

1

1

0

1

0

0

0

1

0

1

0

1

0

0

0

1

0

0

0

0

1

0

0

1

1

1

0

1

1

1

0

1

1

0

0

1

0

0

0

0

0

0

0

0

0

0

1

0

1

0

0

0

1

1

1

1

1

1

1

1

0

0

1

0

1

0

注:X為任意狀態(tài)

表4-1174HC283輸入輸出狀態(tài)

進(jìn)位輸入

4位加數(shù)輸入

4位被加數(shù)輸入

輸出加法結(jié)果和進(jìn)位

Cin

A4

A3

A2

A1

B4

B3

B2

B1

Cout

S4

S3

S2

S1

0

0

0

0

0

0

1

1

0

0

0

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

1

1

1

0

0

1

0

0

1

0

0

1

1

0

1

0

0

0

1

1

0

0

1

0

1

1

1

0

1

0

1

0

1

1

1

0

1

1

0

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

0

1

0

0

1

1

0

0

1

1

0

0

1

0

表4-1274HC4511輸入輸出狀態(tài)

使能輸入

數(shù)據(jù)輸入

譯碼輸出

LE

D

C

B

A

a

b

c

d

e

f

g

0

X

X

X

X

X

X

1

1

1

1

1

1

1

1

0

X

X

X

X

X

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

1

1

1

1

1

0

1

1

0

0

0

0

1

0

1

1

0

0

0

0

1

1

0

0

0

1

0

1

1

0

1

1

0

1

1

1

0

0

0

1

1

1

1

1

1

0

0

1

1

1

0

0

1

0

0

0

1

1

0

0

1

1

1

1

0

0

1

0

1

1

0

1

1

0

1

1

1

1

0

0

1

1

0

0

0

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

0

0

0

0

1

1

0

1

0

0

0

1

1

1

1

1

1

1

1

1

0

1

0

0

1

1

1

1

0

0

1

1

1

1

0

1

0

1

0

0

0

0

0

0

0

0

1

1

0

1

0

1

1

0

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

0

0

0

0

0

1

1

0

1

1

0

1

0

0

0

0

0

0

0

1

1

0

1

1

1

0

0

0

0

0

0

0

0

1

1

0

1

1

1

1

0

0

0

0

0

0

0

注:X為任意狀態(tài)

表4-1374HC74輸入輸出狀態(tài)

輸入

輸出

置位輸入

復(fù)位輸入

CP

D

1Q

0

1

X

X

1

0

1

0

X

X

0

1

1

1

0

0

1

1

1

1

1

0

0

0

X

X

1

1

注:X為任意狀態(tài)

表4-1474HC112輸入輸出狀態(tài)

輸入

輸出

置位輸入

復(fù)位輸入

1

1J

1K

1Q

0

1

X

X

X

1

0

1

0

X

X

X

0

1

1

1

1

1

Qn

Qn

1

1

0

1

0

1

1

1

1

0

1

0

0

0

X

X

X

1

0

注:X為任意狀態(tài)

表4-1574HC194輸入輸出狀態(tài)

輸入

輸出

模式

串行

CP

并行

S1

S0

DSR

DSL

D0

D1

D2

D3

Q0n+1

Q1n+1

Q2n+1

Q3n+1

0

X

X

X

X

X

X

X

X

X

0

0

0

0

1

1

1

X

X

D0

D1

D2

D3

D1

D2

D3

D4

1

0

0

X

X

X

X

X

X

Q0n

Q1n

Q2n

Q3n

1

0

1

0

X

X

X

X

X

0

Q0n

Q1n

Q2n

1

0

1

1

X

X

X

X

X

1

Q0n

Q1n

Q2n

1

1

0

X

0

X

X

X

X

Q1n

Q2n

Q3n

0

1

1

0

X

1

X

X

X

X

Q1n

Q2n

Q3n

1

注:X為任意狀態(tài)

表4-1674HC161輸入輸出狀態(tài)

輸入

輸出

CP

CEP

CET

D3

D2

D1

D0

Q3

Q2

Q1

Q0

TC

0

X

X

X

X

X

X

X

X

0

0

0

0

0

1

X

X

0

0

0

0

0

0

0

0

0

0

1

1

1

0

D3

D2

D1

D0

D3

D2

D1

D0

*

1

1

1

1

X

X

X

X

Count

Count

Count

Count

*

1

X

0

X

1

X

X

X

X

Q0n

Q1n

Q2n

Q3n

*

1

X

X

0

1

X

X

X

X

Q0n

Q1n

Q2n

Q3n

0

注:X為任意狀態(tài)

*注:TC=CET*Q0n*Q1n*Q2n*Q3n

5、數(shù)字邏輯綜合設(shè)計(jì)仿真及驗(yàn)證

一、實(shí)驗(yàn)?zāi)康?/p>

1、進(jìn)一步熟悉利用EDA工具進(jìn)行設(shè)計(jì)及仿真的流程。

2、熟悉利用EDA工具中的圖形化設(shè)計(jì)界面進(jìn)行綜合設(shè)計(jì)。

3、熟悉芯片燒錄的流程及步驟。

4、掌握分析問題、解決問題的綜合能力,通過EDA工具設(shè)計(jì)出能解決實(shí)際問題的電路。

二、實(shí)驗(yàn)環(huán)境

1、Libero仿真軟件。

2、DIGILOGIC-2023數(shù)字邏輯及系統(tǒng)實(shí)驗(yàn)箱。

3、ActelProasic3A3P030FPGA核心板及FlashPro4燒錄器。

三、實(shí)驗(yàn)內(nèi)容

1、編碼器擴(kuò)展實(shí)驗(yàn)

設(shè)計(jì)一個(gè)電路:當(dāng)按下小于等于9的按鍵后,顯示數(shù)碼管顯示數(shù)字,當(dāng)按下大于9的按鍵后,顯示數(shù)碼管不顯示數(shù)字。假設(shè)同時(shí)按下幾個(gè)按鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論