第5章基本邏輯門電路設(shè)計(jì)(VHDL)_第1頁
第5章基本邏輯門電路設(shè)計(jì)(VHDL)_第2頁
第5章基本邏輯門電路設(shè)計(jì)(VHDL)_第3頁
第5章基本邏輯門電路設(shè)計(jì)(VHDL)_第4頁
第5章基本邏輯門電路設(shè)計(jì)(VHDL)_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章基本邏輯電路設(shè)計(jì)

5.1組合邏輯電路設(shè)計(jì)5.2

時(shí)序邏輯電路設(shè)計(jì)5.3存儲器設(shè)計(jì)5.4狀態(tài)機(jī)的VHDL設(shè)計(jì)

12/20/2023第5章基本邏輯電路設(shè)計(jì)

教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)過程12/20/2023掌握組合邏輯電路的設(shè)計(jì)掌握總線接口電路的設(shè)計(jì)掌握存儲器和狀態(tài)機(jī)的設(shè)計(jì)通過若干數(shù)字電路設(shè)計(jì)實(shí)例掌握復(fù)雜邏輯電路的設(shè)計(jì)方法第5章教學(xué)目標(biāo)12/20/2023第5章教學(xué)重點(diǎn)

掌握組合邏輯電路的設(shè)計(jì)掌握總線接口電路的設(shè)計(jì)掌握存儲器和狀態(tài)機(jī)的設(shè)計(jì)

12/20/20235.1組合邏輯電路設(shè)計(jì)5.1.1基本門電路

1.基本門電路的VHDL語言描述基本門電路用VHDL語言來描述十分方便。為方便起見,在下面的兩輸入模塊中,使用VHDL中定義的邏輯運(yùn)算符,同時(shí)實(shí)現(xiàn)一個(gè)與門、或門、與非門、或非門、異或門及反相器的邏輯。

本節(jié)的組合邏輯電路設(shè)計(jì)主要有:基本門電路、3-8譯碼器、8-3線優(yōu)先編碼器、8位比較器、多路選擇器、三態(tài)門電路、單向總線驅(qū)動器、雙向總線緩沖器等設(shè)計(jì)實(shí)例。12/20/2023

【例5.1.1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYGATEISPORT(A,B:INSTD_LOGIC;

YAND,YOR,YNAND,YNOR,YNOT,YXOR:OUTSTD_LOGIC);

ENDGATE;ARCHITECTUREARTOFGATEIS12/20/2023BEGINYAND<=AANDB; --與門輸出

YOR<=AORB; --或門輸出

YNAND<=ANANDB;--與非門輸出

YNOR<=ANORB; --或非門輸出

YNOT<=ANOTB; --反相器輸出

YXOR<=AXORB; --異或門輸出

ENDART;12/20/20232.3-8譯碼器下面我們分別以4種方法描述一個(gè)3-8譯碼器?!纠?.1.2】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED_ALL;ENTITYDECODERISPORT(INP:INSTD_LOGIC_VECTOR(2DOWNTO0);

OUTP:OUTBIT_VECTOR(7DOWNTO0));ENDDECODER;12/20/2023方法1:使用SLL邏輯運(yùn)算符ARCHITECTUREART1OFDECODERISBEGINOUTP<="11111110"SLL(CONV_INTEGER(INP));----輸出低有效譯碼ENDART1;

12/20/2023方法2:使用PROCESS語句ARCHITECTUREART2OFDECODERISBEGINPROCESS(INP)BEGINOUTP<=(OTHERS=>‘1’)--對輸出所有位全賦0OUTP(COVN_INTEGER(INP))<=‘1’--僅對其中的一位賦值

ENDPROCESS;ENDART212/20/2023方法3:使用CASE_WHEN語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECODERISPORT(SEL:INSTD_LOGIC_VECTOR(2DOWNTO0);

EN:INSTD_LOGIC;---加使能控制端

Y:OUTBIT_VECTOR(7DOWNTO0));ARCHITECTUREART3OFDECODERISBEGINPROCESS(SEL,EN)BEGINY<=”11111111”;IF(EN=’1’)THEN12/20/2023CASESELISWHEN"000"=>Y(0)<=‘0’;--輸出低有效

WHEN"001"=>Y(1)<=’0’;

WHEN"010"=>Y(2)<=‘0’;

WHEN"011"=>Y(3)<=‘0’;

WHEN"100"=>Y(4)<=‘0’;

WHEN"101"=>Y(5)<=‘0’;

WHEN"110"=>Y(6)<=‘0’;

WHEN"111"=>Y(7)<=‘0’;

WHENOTHERS=>NULL;

ENDCASE;ENDPROCESS;ENDART3;

12/20/2023方法4:使用條件選擇WHENELSE語句

ARCHITECTUREART4OFDECODERISBEGINY(0)<=‘0’WHEN(EN=’1’ANDSEL="000")ELSE’1’;

Y(1)<=‘0’WHEN(EN=’1’ANDSEL="001")ELSE’1’;

Y(2)<=‘0’WHEN(EN=’1’ANDSEL="010")ELSE’1’;

Y(3)<=‘0’WHEN(EN=’1’ANDSEL="011")ELSE’1’;

Y(4)<=‘0’WHEN(EN=’1’ANDSEL="100")ELSE’1’;

Y(5)<=‘0’WHEN(EN=’1’ANDSEL="101")ELSE’1’;

Y(6)<=‘0’WHEN(EN=’1’ANDSEL="110")ELSE’1’;

Y(7)<=’0’WHEN(EN=’1’ANDSEL="111")ELSE’1’;ENDART4;12/20/20233.8-3線優(yōu)先編碼器下面我們用三種方法設(shè)計(jì)8-3線優(yōu)先編碼器。8-3線優(yōu)先編碼器,輸入信號為y0、y1、y2、y3、y4、y5、y6和y7,輸出信號為OUT0、OUT1和OUT2。輸入信號中y0的優(yōu)先級別最低,依次類推,y7的優(yōu)先級別最高。【例5.1.3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYENCODERISPORT(y0,y1,y2,y3,y4,y5,y6,y7:INSTD_LOGIC;

OUT0,OUT1,OUT2:OUTSTD_LOGIC);ENDENCODER;12/20/2023方法1:使用條件賦值語句ARCHITECTUREART1OFENCODERISSIGNALOUTS:STD_LOGIC_VECTOR(2DOWNTO0);

BEGINOUTS(2DOWNTO0)<="111"WHENy7=‘1’ELSE"110"WHENy6=‘1’ELSE"101"WHENy5=‘1’ELSE"100"WHENy4=‘1’ELSE"011"WHENy3=‘1’ELSE"010"WHENy2=‘1’ELSE"001"WHENy1=‘1’ELSE"000"WHENy0=‘1’ELSE"XXX";OUT0<=OUTS(0);

OUT1<=OUTS(1);

OUT2<=OUTS(2);

ENDART1;12/20/2023

方法2:使用IF語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYENCODERISPORT(IN1:INSTD_LOGIC_VECTOR(7DOWNTO0);

OUT1:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENCODER;ARCHITECTUREART2OFENCODERISBEGINPROCESS(IN1)12/20/2023BEGINIFIN1(7)=‘1’THENOUT1<="111";ELSIFIN1(6)=‘1’THENOUT1<="110";ELSIFIN1(5)=‘1’THENOUT1<="101";ELSIFIN1(4)=‘1’THENOUT1<="100";ELSIFIN1(3)=‘1’THENOUT1<="011";ELSIFIN1(2)=‘1’THENOUT1<="010";ELSIFIN1(1)=‘1’THENOUT1<="001";ELSIFIN1(0)=‘1’THENOUT1<="000";ELSEOUT1<="XXX";ENDIF;

ENDPROCESS;ENDART2;12/20/2023

4.加法器—帶進(jìn)位的4位加法器【例5.1.4】用FOR-LOOP語句實(shí)現(xiàn)LIBRARYIEEE;方法1:USEIEEE.STD_LOGIC_1164.ALL;ENTITYADDER4IS

PORT(A,B:INSTD_LOGIC_VECTOR(3DOWNTO0);

CIN:INSTD_LOGIC;SUM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT:OUTSTD_LOGIC);ENDADDER4;12/20/2023ARCHITECTUREARTOFADDER4ISSIGNALC:STD_LOGIC_VECTOR(4DOWNTO0);

BEGINPROCESS(A,B,CIN,C)BEGINC(0)<=CIN;FORIIN0TO3LOOP---用FOR循環(huán)語句實(shí)現(xiàn)多位相加

SUM(I)<=A(I)XORB(I)XORC(I);C(I+1)<=(A(I)ANDB(I))OR(C(I)AND(A(I)ORB(I)));ENDLOOP;

12/20/2023COUNT<=C(4);---總的進(jìn)位輸出

ENDPROCESS;ENDART;方法2:直接使用加法“+”函數(shù)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED_ALL;ENTITYADDER4_OPIS

12/20/2023PORT(A,B:INSTD_LOGIC_VECTOR(3DOWNTO0);

CIN:INSTD_LOGIC;SUM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUNT:OUTSTD_LOGIC);ENDADDER4_OP;ARCHITECTUREARTOFADDER4_OPISSIGNALC:STD_LOGIC_VECTOR(4DOWNTO0);

BEGINPROCESS(A,B,CIN,C)BEGINENDPROCESS;SUM<=C(3DOWNTO0)COUT<=C(4)ENDART12/20/2023

5.8位比較器

比較器可以比較兩個(gè)二進(jìn)制是否相等,下面是一個(gè)8位比較器的VHDL描述。有兩個(gè)8位二進(jìn)制數(shù),分別是A和B,輸出為EQ,當(dāng)A=B時(shí),EQ=1,否則EQ=0?!纠?.1.5】LIBRARYIEEE;USEIEEE.STD_LOGIC_VECTOR(7DOWNTO0);ENTITYCOMPAREISPORT(A,B:INSTD_LOGIC_VECTOR(7DOWNTO0);

EQ:OUTSTD_LOGIC);ENDCOMPARE;ARCHITECTUREARTOFCOMPAREISBEGINEQ<=‘1’WHENA=BELSE‘0’;ENDART;12/20/2023

6.多路選擇器

選擇器常用于信號的切換,前面用IF語句、CASE語句、條件賦值語句、選擇賦值語句分別描述過4選1選擇器。

5.1.2三態(tài)門及總線緩沖器

三態(tài)門和總線緩沖器是驅(qū)動電路經(jīng)常用到的器件,VHDL語言通過指定大寫的Z值表示高阻狀態(tài)。

A:STD_LOGIC;B_BUS:STD_LOGIC_VECTOR(7DOWNTO0);指定高阻狀態(tài)如下:A<=‘Z’;A_BUS<=“ZZZZZZZZ”;

12/20/2023

【例5.1.6】三態(tài)門描述電路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTRI_GATEISPORT(EN,DIN:INSTD_LOGIC;

DOUT:OUTSTD_LOGIC);ENDTRI_GATE;ARCHITECTUREARTOFTRI_GATEISBEGINIF(EN=’1’)THENDOUT<=DIN;

ELSEDOUT<='Z';--此處是單總線

ENDIF;

ENDPROCESS;ENDART;12/20/20235.1.3單向總線驅(qū)動器

在微型計(jì)算機(jī)的總線驅(qū)動中經(jīng)常要用單向總線緩沖器,它通常由多個(gè)三態(tài)門組成,用來驅(qū)動地址總線和控制總線。一個(gè)8位的單向總線緩沖器如圖5-1所示。圖5-1單向總線緩沖器圖5-1單向總線緩沖器12/20/2023

【例5.1.7】單向總線緩沖器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTR1_BUF8ISPORT(DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);

EN:INSTD_LOGIC;

DOUNT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ARCHITECTUREARTOFTR1_BUF8IS12/20/2023

BEGINPROCESS(EN,DIN)IF(EN=‘1’)THENDOUT<=DIN;

ELSEDOUT<="ZZZZZZZZ";

ENDIF;

ENDPROCESS;ENDART;

12/20/2023

5.1.4雙向總線緩沖器

雙向總線緩沖器用于數(shù)據(jù)總線的驅(qū)動和緩沖,典型的雙向總線緩沖器如圖5-2所示。圖中的雙向總線緩沖器有兩個(gè)數(shù)據(jù)輸入輸出端A和B,一個(gè)方向控制端DIR和一個(gè)選通端EN。EN=0時(shí)雙向緩沖器選通,若DIR=0,則A=B,反之則B=A。

圖5-2雙向總線緩沖器12/20/2023

【例5.1.8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYBIDIRISPORT(A,B:INOUTSTD_LOGIC_VECTOR(7DOWNTO0);

EN,DIR:INSTD_STD_LOGIC);圖5-2雙向總線緩沖器ENDBIDIR;ARCHITECTUREARTOFBIDIRISSIGNALAOUT,BOUT:STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN12/20/2023

PROCESS(A,EN,DIR)BEGINIFEN=‘0’ANDDIR=‘1’THENBOUT<=A;

ELSEBOUT<"ZZZZZZZZ";

ENDIF;

B<=BOUT;

ENDPROCESS;

PROCESS(B,EN,DIR)BEGINIFEN=‘0’ANDDIR=‘1’THENAOUT<=B;

ELSEAOUT<"ZZZZZZZZ";

ENDIF;

A<=AOUT;

ENDPROCESS;

ENDART;12/20/2023

5.2時(shí)序邏輯電路設(shè)計(jì)在本節(jié)的時(shí)序電路設(shè)計(jì)主要有觸發(fā)器、寄存器、計(jì)數(shù)器、分頻器、序列信號發(fā)生器和序列信號檢測器等的設(shè)計(jì)實(shí)例。5.2.1時(shí)序電路特殊信號描述時(shí)鐘信號和復(fù)位信號1.時(shí)鐘信號的描述1)常用的描述方式:進(jìn)程的敏感信號是時(shí)鐘信號,在進(jìn)程內(nèi)部用IF語句描述時(shí)鐘的邊沿條件。如:PROCESS(CLOCK_SIGNAL)BEGIN

12/20/2023IF(CLK_EDGE_CONDITION)

THENSIGNAL_OUT<=SIGNAL_IN;…

其他時(shí)序語句…ENDIF;ENDPROCESS;2.觸發(fā)器的復(fù)位信號描述1)同步復(fù)位:在只有以時(shí)鐘為敏感信號的進(jìn)程中定義。如:PROCESS(CLOCK_SIGNAL)BEGIN12/20/2023

IF(CLK_EDGE_CONDITION)

THENIf(reset_condition)thenSIGNAL_OUT<=reset_value;elseSIGNAL_OUT<=SIGNAL_IN;…

其他時(shí)序語句…ENDIF;ENDIF;Endprocess;12/20/20232)異步復(fù)位:進(jìn)程的敏感信號表中除時(shí)鐘信號外,還有復(fù)位信號。PROCESS(reset_signal,CLOCK_SIGNAL)BEGINIf(reset_condition)thenSIGNAL_OUT<=reset_value;

elsef(CLK_EDGE_CONDITION)

THENSIGNAL_OUT<=SIGNAL_IN;…

其他時(shí)序語句…ENDIF;Endprocess;12/20/2023

5.2.2常用時(shí)序電路設(shè)計(jì)1.基本觸發(fā)器(Flip_Flop)1)D觸發(fā)器【例5.2.1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDCFQISPORT(D,CLK:INSTD_LOGIC;

Q:OUTSTD_LOGIC);ENDDCFQ;ARCHITECTUREARTOFDCFQISBEGINPROCESS(CLK)--同步進(jìn)程

12/20/2023

【例5.2.2】復(fù)位D觸發(fā)器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLR,PSET,CLK,D:INSTD_LOGIC;

Q:OUTSTD_LOGIC);ENDDFF3;ARCHITECTUREARTOFDFF3IS

12/20/2023BEGINPROCESS(CLK,CLR,PSET)--異步進(jìn)程

BEGINIF(PSET=‘0’)THENQ<=‘1’;--置位信號有效,則觸發(fā)器被置位ELSIF(CLR=‘0’)THENQ<=‘0’;復(fù)位信號有效,則觸發(fā)器被復(fù)位ELSIF(CLK'EVENTANDCLK=‘1’)THENQ<=D;ENDIF;

ENDIF;

ENDPROCESS;ENDART;

12/20/2023【例5.2.3】同步復(fù)位的D觸發(fā)器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSYNDCFQISPORT(D,CLK,RESET:INSTD_LOGIC;

Q:OUTSTD_LOGIC);ENDSYNDCFQ;ARCHITECTUREARTOFSYNDCFQISBEGINPROCESS(CLK)12/20/2023

BEGINIF(CLK'EVENTANDCLK=‘1’)THENIF(PRESET=‘0’)THEN Q<=‘0’;--時(shí)鐘邊沿到來且有復(fù)位信號,觸發(fā)器被復(fù)位

ELSEQ<=D;--且有復(fù)位信號,觸發(fā)器被復(fù)位

ENDIF;

ENDIF;

ENDPROCESS;ENDART;12/20/20232.T觸發(fā)器【例5.2.4】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYTCFQISPORT(T,CLK:INSTD_LOGIC;

Q:BUFFERSTD_LOGIC);ENDTCFQ;ARCHITECTUREARTOFTCFQISBEGINPROCESS(CLK)--同步進(jìn)程

BEGIN

12/20/2023IF(CLK'EVENTANDCLK=‘1’)THENQ<=NOT(Q);

ELSEQ<=Q;

ENDIF;

ENDPROCESS;ENDART;3.RS觸發(fā)器【例5.2.5】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYRSCFQIS

12/20/2023PORT(R,S,CLK:INSTD_LOGIC;

Q,QB:BUFFERSTD_LOGIC);ENDRSCFQ;ARCHITECTUREARTOFRSCFQISSIGNALQ_S,QB_S:STD_LOGIC;

BEGINPROCESS(CLK,R,S)--異步進(jìn)程

BEGINIF(CLK'EVENTANDCLK=‘1’)THENIF(S=‘1’ANDR=‘0’)THENQ_S<=‘0’;

QB_S<=‘1’;

ELSIF(S<=‘0’ANDR<=‘1’)THEN12/20/2023Q_S<=‘1’;

QB_S<=‘0’;

ELSIF(S<=‘0’ANDR<=‘0’)THENQ_S<=Q_S;--輸出保持不變

QB_S<=QB_S;

ENDIF;

ENDIF;

Q<=Q_S;

QB<=QB_S;

ENDPROCESS;ENDART;12/20/20235.關(guān)于觸發(fā)器的同步和非同步復(fù)位

觸發(fā)器的初始狀態(tài)應(yīng)由復(fù)位信號來設(shè)置。按復(fù)位信號對觸發(fā)器復(fù)位的操作不同,可以分為同步復(fù)位和非同步復(fù)位兩種。所謂同步復(fù)位,就是當(dāng)復(fù)位信號有效且在給定的時(shí)鐘邊沿到來時(shí),觸發(fā)器才被復(fù)位;非同步復(fù)位,也稱異步復(fù)位,則是當(dāng)復(fù)位信號有效時(shí),觸發(fā)器就被復(fù)位,不用等待時(shí)鐘邊沿信號。下面以D觸發(fā)器為例分別予以舉例12/20/20235.2.3寄存器和移位寄存器1.寄存(鎖存)器

寄存器用于寄存一組二值代碼,廣泛用于各類數(shù)字系統(tǒng)。因?yàn)橐粋€(gè)觸發(fā)器能儲存1位二值代碼,所以用N個(gè)觸發(fā)器組成的寄存器能儲存一組N位的二值代碼。下面給出一個(gè)8位寄存器的VHDL描述?!纠?.2.7】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREGISPORT(D:INSTD_LOGIC_VECTOR(0TO7);

CLK:INSTD_LOGIC;

Q:OUTSTD_LOGIC_VECTOR(0TO7));ENDREG;

12/20/2023ARCHITECTUREARTOFREGISBEGINPROCESS(CLK)BEGINIF(CLK'EVENTANDCLK=‘1’)THEN

Q<=D;

ENDIF;

ENDPROCESS;ENDART;2.移位寄存器

移位寄存器除了具有存儲代碼的功能以外,還具有移位功能。所謂移位功能,是指寄存器里存儲的代碼能在移位脈沖的作用下依次左移或右移。因此,移位寄存器不但可以用來寄存代碼,還可用來實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換、數(shù)值的運(yùn)算以及數(shù)據(jù)處理等。下面給出一個(gè)8位的移位寄存器,其具有左移一位或右移一位、并行輸入和同步復(fù)位的功能。

12/20/2023【例5.2.8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHIFTERISPORT(DATA:INSTD_LOGIC_VECTOR(7DOWNTO0);SHIFT_LEFT:INSTD_LOGIC;SHIFT_RIGHT:INSTD_LOGIC;RESET:INSTD_LOGIC;MODE:INSTD_LOGIC_VECTOR(1DOWNTO0);QOUT:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));12/20/2023ENDSHIFTER;ARCHITECTUREARTOFSHIFTERISBEGINPROCESSBEGINWAITUNTIL(RISING_EDGE(CLK));IF(RESET=‘1’)THENQOUT<="00000000"; ELSE --同步復(fù)位功能的實(shí)現(xiàn)CASEMODEISWHEN"01"=>QOUT<=SHIFT_RIGHT&QOUT(7DOWNTO1);12/20/2023

--右移一位WHEN"10"=>QOUT<=QOUT(6DOWNTO0)&SHIFT_LEFT;

--左移一位WHEN"11"=>QOUT<=DATA;WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

ENDPROCESS;圖5-36位串行輸入串行輸出移位寄存器ENDART;12/20/20235.2.4計(jì)數(shù)器

計(jì)數(shù)器是在數(shù)字系統(tǒng)中使用最多的時(shí)序電路,它不僅能用于對時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。計(jì)數(shù)器分為同步和異步。1.同步計(jì)數(shù)器:同步計(jì)數(shù)器指在時(shí)鐘脈沖(計(jì)數(shù)脈沖)的控制下,構(gòu)成計(jì)數(shù)器的各觸發(fā)器狀態(tài)同時(shí)發(fā)生變化的計(jì)數(shù)器。12/20/2023【例5.2.10】12進(jìn)制的計(jì)數(shù)器的設(shè)計(jì)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNTM12IS

PORT(Clk,clr,en:INSTD_LOGIC;

Qa,qb,qc,qd:OUTSTD_LOGIC;

Endcount12;ARCHITECTUREARTOFCount12ISSignalcount_4:STD_LOGIC_VECTOR(3DOWNTO0);begin

qa<=count_4(0);qb<=count_4(1);qc<=count_4(2);qd<=count_4(3);12/20/2023process(clk,clr)BEGIN

IF(clr=‘0’)THEN --異步復(fù)位

Count_4<="0000";ELSIF(CLK'EVENTANDCLK=‘1’)THEN --IF(en=‘1’)THEN IF(Count_4<="1011")THENCount_4<="0000";ELSE Count_4<=Count_4+1;--調(diào)用STD_LOGIC_UNSIGNED.ALL程序包就是為了實(shí)現(xiàn)不同數(shù)據(jù)類型直接相加

ENDIF;ENDIF;

12/20/2023ENDIF;ENDPROCESS;ENDART;【例5.2.11】加減計(jì)數(shù)器(仿真如圖5-4所示)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYupdncount64IS

PORT(Clk,clr,updn:INSTD_LOGIC;

qa,qb,qc,qd,qe,qf:OUTSTD_LOGIC);--輸出6位二進(jìn)制數(shù)最大為63,所以是64進(jìn)制計(jì)數(shù)器12/20/2023Endupdncount64;-ARCHITECTUREARTOFupdncount64IS圖5-4加減計(jì)數(shù)器仿波形

Signalcount_6:STD_LOGIC_VECTOR(5DOWNTO0);Begin

qa<=count_6(0);qb<=count_6(1);qc<=count_6(2);qd<=count_6(3);qe<=count_6(4);qf<=count_6(5);12/20/2023process(clk,clr)BEGIN

IF(clr=‘0’)THEN --異步復(fù)位

Count_6<="000000";ELSIF(CLK'EVENTANDCLK=‘1’)THEN -IF(updn=‘1’)THEN Count_6<=Count_6+1;--調(diào)用STD_LOGIC_UNSIGNED.ALL程序包就是為了實(shí)現(xiàn)不同數(shù)據(jù)類型直接相加

ELSECount_6<=Count_6-1;--為減1計(jì)數(shù)器

ENDIF;

12/20/2023ENDIF;ENDPROCESS;ENDART;【例5.2.12】60進(jìn)制(分、秒)計(jì)數(shù)器LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYClock60IS

PORT(Clk

:INSTD_LOGIC;

NRESET:INSTD_LOGIC;12/20/2023

Bcd1_out:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--個(gè)位顯示0~9需4位寬

Bcd10_out:OUTSTD_LOGIC_VECTOR(2DOWNTO0));--十位顯示0~5需3位寬ENDCLOCK60;ARCHITECTUREARTOFCLOCK60ISSIGNALBcd1n:STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALBcd10n:STD_LOGIC_VECTOR(2DOWNTO0);

BEGINBcd1_out<=Bcd1n;--把定義的中間信分別賦給輸出端口12/20/2023Bcd10_out<=Bcd10n;PROCESS(CLK,NRESET)BEGINIF(NRESET=‘0’)THEN --異步復(fù)位Bcd1n<="0000";Bcd10n<="000";ELSIF(CLK’EVENTANDCLK=’1’)THENIF(Bcd1n=9)THEN--如個(gè)位為9則清零12/20/2023Bcd1n<="0000";IF(Bcd10n=5)THEN如十位為5則清零Bcd10n<="000";ELSIFBcd10n<=Bcd10n+1;ENDIF;ELSFBcd1n<=Bcd1n+1;ENDIF;ENDIF;ENDPROCESS;ENDART;12/20/2023【例5.2.13】模為60具有異步復(fù)位、同步置數(shù)功能的8421BCD碼計(jì)數(shù)器LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYClock60IS

PORT(Clk,:INSTD_LOGIC;

NRESET:INSTD_LOGIC;

LOAD:INSTD_LOGIC;

D:INSTD_LOGIC_VECTOR(7DOWNTO0);

CLK:INSTD_LOGIC;

CO:OUTSTD_LOGIC;

12/20/2023QH:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0);

QL:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDCNTM60;ARCHITECTUREARTOFCNTM60ISBEGINCO<=‘1’WHEN(QH="0101"ANDQL="1001"ANDCI=‘1’)ELSE'0';

--進(jìn)位輸出的產(chǎn)生PROCESS(CLK,NRESET)

12/20/2023BEGINIF(NRESET=‘0’)THEN --異步復(fù)位

QH<="0000";

QL<="0000";ELSIF(CLK'EVENTANDCLK=‘1’)THEN --同步置數(shù)

IF(LOAD=‘1’)THENQH<=D(7DOWNTO4)QL<=D(3DOWNTO0);12/20/2023ELSIF(CI=‘1’)THEN --模60的實(shí)現(xiàn)

IF(QL=9)THENQL<="0000";

IF(QH=5)THENQH<="0000";

ELSE --計(jì)數(shù)功能的實(shí)現(xiàn)

QH<=QH+1;

ENDIFELSEQL<=QL+1;

ENDIF;

ENDIF; --ENDIFLOAD

ENDPROCESS;ENDART;12/20/20232.異步計(jì)數(shù)器

異步計(jì)數(shù)器又稱為行波計(jì)數(shù)器,它的低位計(jì)數(shù)器的輸出作為高位計(jì)數(shù)器的時(shí)鐘信號。由于是行波計(jì)數(shù),致使計(jì)數(shù)延遲增加,計(jì)數(shù)器工作頻率較低。用VHDL語言描述異步計(jì)數(shù)器,與同步計(jì)數(shù)器描述的區(qū)別主要體現(xiàn)在對各級時(shí)鐘的描述上。下面是一個(gè)由8個(gè)觸發(fā)器構(gòu)成的異步計(jì)數(shù)器,采用元件例化的方式生成。如圖5-5所示圖5-58個(gè)觸發(fā)器構(gòu)成的異步計(jì)數(shù)器12/20/2023【例5.2.14】

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDIFFRISPORT(CLK,CLR,D:INSTD_LOGIC;

Q,QB:OUTSTD_LOGIC);ENDDIFFR;ARCHITECTUREART1OFDIFFRISSIGNALQ_IN:STD_LOGIC;BEGINQ<=Q_IN;QB<=NOTQ_IN;PROCESS(CLK,CLR)12/20/2023BEGINIF(CLR=‘1’)THEN圖5-58個(gè)觸發(fā)器構(gòu)成的異步計(jì)數(shù)器

Q_IN<=‘0’;

ELSIF(CLK'EVENTANDCLK=‘1')THENQ_IN<=D;

ENDIF;

ENDPROCESS;ENDART1;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYRPLCOUNTIS

12/20/2023PORT(CLK,CLR:INSTD_LOGIC;

COUNT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDRPLCOUNT;ARCHITECTUREART2OFRPLCOUNTISSIGNALCOUNT_IN:STD_LOGIC_VECTOR(8DOWNTO0);

COMPONENTDFFRPORT(CLK,CLR,D:INSTD_LOGIC;

Q,QB:OUTSTD_LOGIC);

ENDCOMPONENT;12/20/2023

BEGINCOUNT_IN(0)<=CLK;

GEN1:FORIIN0TO7GENERATEU:DFFRPORTMAP(CLK=>COUNT_IN(I),--采用名字映射方式

CLR=>CLR,D=>COUNT_IN(I+1),

Q=>COUNT_IN(I),QB=>COUNT_IN(I+1));

ENDGENERATE;ENDART2;用計(jì)數(shù)器實(shí)現(xiàn)分頻器的設(shè)計(jì)(實(shí)現(xiàn)輸入信號的二分頻、四分頻)12/20/2023【例5.2.16】分頻器的設(shè)計(jì)LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYN_DIVISPORT(N:INSTD_LOGIC_VECTOR(7DOWNTO0);

Clk:INSTD_LOGIC;

ClkOUT:OUTSTD_LOGIC);

EndN_DIV;ARCHITECTUREARTOFN_DIVISSignalcnt:STD_LOGIC_VECTOR(7DOWNTO0);12/20/2023Signaln_t,n_1:STD_LOGIC_VECTOR(7DOWNTO0);BeginN_1<=N-1;--N_1代表N減一操作N_t<=‘0’&N(7DOWNTO1);--相當(dāng)于右移一位,即除2操作(N_t是中間暫存信號)process(N,clk)BEGINIFVLK’EVENTANDCLK=‘1’THEN --異步復(fù)位

IFCnt<=N_1;THEN;--判斷是否到計(jì)數(shù)的終值

CNT<=“00000000”;--到計(jì)數(shù)的終值清零ELSIF12/20/2023Cnt<=Cnt+1;--未到計(jì)數(shù)的終值則加1計(jì)數(shù)ENDIF;IFCNT<N_TTHEN--如小于N的一半則輸出低電平

CLKOUT<=‘0’;ELSECLKOUT<=‘1’;--如大于等于N的一半則輸出高電平(N為偶數(shù)時(shí),輸出方波信號)ENDIF;ENDPROCESS;ENDART;12/20/20235.2.5序列信號發(fā)生器、檢測器

在數(shù)字信號的傳輸和數(shù)字系統(tǒng)的測試中,有時(shí)需要用到一組特定的串行數(shù)字信號,產(chǎn)生序列信號的電路稱為序列信號發(fā)生器。1.“01111110”序列發(fā)生器(序列可任意)該電路可由計(jì)數(shù)器與數(shù)據(jù)選擇器構(gòu)成,其VHDL描述如下:【例5.2.17】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSENQGENIS

12/20/2023PORT(CLK,CLR,CLOCK:INSTD_LOGIC;--兩個(gè)時(shí)鐘信號

ZO:OUTSTD_LOGIC);ENDSENQGEN;ARCHITECTUREARTOFSENQGENISSIGNALCOUNT:STD_LOGIC_VECTOR(2DOWNTO0);--序列發(fā)生器的關(guān)鍵是計(jì)數(shù)器,COUNT的寬度決定序列的長度,此為8位

SIGNALZ:STD_LOGIC:=‘0’;--賦初值僅對仿真有用

BEGINPROCESS(CLK,CLR)12/20/2023BEGINIF(CLR=‘1’)THENCOUNT<="000";

ELSEIF(CLK=‘1’ANDCLK'EVENT)THENIF(COUNT="111")THENCOUNT<="000";--此處可不要

ELSECOUNT<=COUNT+1;

ENDIF;

ENDIF;ENDIF;ENDPROCESS;PROCESS(COUNT)12/20/2023BEGINCASECOUNTISWHEN"000"=>Z<=‘0’;WHEN"001"=>Z<=‘1’;WHEN"010"=>Z<=‘1’;WHEN"011"=>Z<=‘1’;WHEN"100"=>Z<=‘1’;WHEN"101"=>Z<=‘1’;WHEN"110"=>Z<=‘1’;WHENOTHERS=>Z<=‘0’;

ENDCASE;ENDPROCESS;12/20/2023PROCESS(CLOCK,Z)BEGIN --消除毛刺的鎖存器

IF(CLOCK'EVENTANDCLOCK=‘1’)THENZO<=Z;--把中間信號通過一個(gè)觸發(fā)器寄存輸出

ENDIF;

ENDPROCESS;ENDART;2.M序列發(fā)生器M序列發(fā)生器主要由移位寄存器和反饋環(huán)節(jié)組成。下面是一個(gè)20位的M序列發(fā)生器的VHDL描述。

12/20/2023【例5.2.18】LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYXLGEN20ISPORT(CLK,LOAD,EN:INSTD_LOGIC;

DATA:INSTD_LOGIC_VECTOR(20DOWNTO0);

LOUT:BUFFERSTD_LOGIC);ENDXLGEN20;12/20/2023ARCHITECTUREARTOFXLGEN20ISCONSTANTLEN:INTEGER:=20SIGNALLFSR_VAL:STD_LOGIC_VECTOR(LENDOWNTO0);

SIGNALDOUT:STD_LOGIC_VECTOR(LENDOWNTO0);

BEGINPROCESS(LOAD,EN,DOUT)BEGINIF(LOAD=‘1’)THENLFSR_VAL<=DATA;

ELSIF(EN=‘1’)THEN12/20/2023LFSR_VAL(0)<=DOUT(3)XORDOUT(LEN);

LFSR_VAL(LENDOWNTO1)<=DOUT(LEN-1DOWNTO0);ENDIF;

ENDPROCESS;

PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK=‘1’)THENDOUT<=LFSR_VAL;

LOUT<=LFSR_VAL(LEN);

ENDIF;

ENDPROCESS;ENDART;12/20/2023【例5.2.20】簡潔序列檢測器LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDETECT_SISPORT(DATAIN,CLK:INSTD_LOGIC;

Q:OUTSTD_LOGIC);ENDDETECT_S;ARCHITECTUREARTOFDETECT_SISSIGNALREG:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLK)BEGIN12/20/2023

IFCLK’EVENTANDCLK=’1’THEN—第一個(gè)IF語句

REG(0)<=DATAIN;--被檢測數(shù)據(jù)打入第一個(gè)寄存器的0位

REG(7DOWNTO1)<=REG(6DOWNTO0);--內(nèi)部寄存器進(jìn)行向高位的移位操作ENDIF;IFREG=”01111110”THENQ<=‘1’;第二個(gè)IF語句是判斷檢測到”01111110”圖5-7簡序列時(shí)把標(biāo)志置1ELSSEQ<=‘0’;ENDIF;ENDPROCESS;ENDART;12/20/20235.3存儲器設(shè)計(jì)半導(dǎo)體存儲器的種類很多,從功能上可以分為只讀存儲器(Read_OnlyMemory,簡稱ROM)和隨機(jī)存儲器(RandomAccessMemory,簡稱RAM)兩大類。本節(jié)主要詳細(xì)描述了只讀存儲器ROM、靜態(tài)數(shù)據(jù)存儲器SRAM、先進(jìn)先出堆棧FIFO的設(shè)計(jì)。5.3.1只讀存儲器ROM

只讀存儲器在正常工作時(shí)從中讀取數(shù)據(jù),不能快速地修改或重新寫入數(shù),適用于存儲固定數(shù)據(jù)的場合。下面是一個(gè)容量為256×4的ROM存儲的例子,該ROM有8位地址線ADR(0)~圖5-8只讀ROMADR(7),4位數(shù)據(jù)輸出線DOUT(0)~DOUT(3)及使能EN,如圖5-8所示。12/20/2023【例5.3.1】

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USESTD.TEXTIO.ALL;ENTITYROMIS

PORT(EN:INSTD_LOGIC;

ADR:INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDROM;ARCHITECTUREARTOFROMIS12/20/2023SUBTYPEWORDISSTD_LOGIC_VECTOR(3DOWNTO0);

TYPEMEMORYISARRAY(0TO255)OFWORD;

SIGNALADR_IN:INTEGERRANGE0TO255;

VARIABLEROM:MEMORY;

VARABLESTART_UP:BOOLEAN:=TRUE;

VARABLEL:LINE;

VARABLEJ:INTEGER;

FILEROMIN:TEXTISIN"ROMIN";

BEGINPROCESS(EN,ADR)IFSTART_UPTHEN --初始化開始

FORJINROM'RANGELOOP12/20/2023

READLINE(ROMIN,1);READ(1,ROM(J));

ENDLOOP;

START_UP:=FALSE; --初始化結(jié)束

ENDIF;

ADR_IN<=CONV_INTEGER(ADR);--將向量轉(zhuǎn)化成整數(shù)

IF(EN=‘1’)THENDOUT<=ROM(ADR_IN);

ELSEDOUT<="ZZZZ";

ENDIF;

ENDPROCESS;ENDART;12/20/20235.3.2靜態(tài)數(shù)據(jù)存儲器SRAMRAM和ROM的主要區(qū)別在于RAM描述上有讀和寫兩種操作,而且在讀寫上對時(shí)間有較嚴(yán)格的要求。下面我們給出一個(gè)8×8位的雙口SRAM的VHDL描述實(shí)例,如圖5-9所示。

圖5-9雙口SRAM12/20/2023【例5.3.2.】8×8位的雙口SRAM的VHDL描述(仿真圖如圖5-10)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDPRAMISGENERIC(WIDTH:INTEGER:=8;

DEPTH:INTEGER:=8;

ADDER:INTEGER:=3);

PORT(DATAIN:INSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

DATAOUT:OUT.STD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

12/20/2023CLOCK:INSTD_LOGIC;

WE,RE:INSTD_LOGIC;--讀寫控制信號WADD:INSTD_LOGIC_VECTOR(ADDER-1DOWNTO0);--讀地址3位寬

RADD:INSTD_LOGIC_VECTOR(ADDER-1DOWNTO0));--寫地址3位寬ENDDPRAM;ARCHITECTUREARTOFDPRAMISTYPEMEMISARRAY(0TODEPTH-1)OF--定義MEM為二維數(shù)組,數(shù)組有8個(gè)元素,每個(gè)元素為8位寬度

STD_LOGIC_VECTOR(WIDTH-1DOWNTO0);12/20/2023

SIGNALRAMTMP:MEM;--信號的類型為MEMBEGIN--第一個(gè)進(jìn)程完成將輸入數(shù)據(jù)寫入RAM指定地址單元

PROCESS(CLOCK)BEGINIF(CLOCK'EVENTANDCLOCK=‘1’)THENIF(WE=‘1’)THEN判寫使能信號有效否

RAMTMP(CONV_INTEGER(WADD))<=DATAIN;--調(diào)用轉(zhuǎn)換函數(shù)把寫地址矢量轉(zhuǎn)換為整數(shù)

ENDIF;

ENDIF;ENDPROCESS;--讀進(jìn)程12/20/2023PROCESS(CLOCK)BEGINIF(CLOCK'EVENTANDCLOCK=‘1’)THENIF(RE=‘1’)THEN--判讀使能有效否

DATAOUT<=RAMTMP(CONV_INTEGER(RADD));把輸入讀地址轉(zhuǎn)換為整數(shù),并把對應(yīng)單元的數(shù)據(jù)送輸出端口

ENDIF;

ENDIF;

ENDPROCESS;ENDART;12/20/20235.3.3先進(jìn)先出堆棧FIFOFIFO是先進(jìn)先出堆棧,作為數(shù)據(jù)緩沖器,通常其數(shù)據(jù)存放結(jié)構(gòu)完全與RAM一致,只是存取方式有所不同。圖5-11電路為一個(gè)8×8FIFO,其VHDL描述如例5.3.3?!纠?.3.3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYREG_FIFOISGENERIC(WIDTH:INTEGER:=8;

DEPTH:INTEGER:=8;ADDR:INTEGER:=3);12/20/2023PORT(DATA:INSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

Q:OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

ACLR:INSTD_LOGIC;圖5-118×8FIFO模塊

CLOCK:INSTD_LOGIC;

WE:INSTD_LOGIC;

RE:INSTD_LOGIC;FF:OUTSTD_LOGIC;FF:OUTSTD_LOGIC);ENDREG_FIFO;12/20/2023TYPEMEMISARRAY(0TODEPTH-1)OFSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);SIGNALRAMTMP:MEM;SIGNALWADD:STD_LOGIC_VECTOR(ADDR-1DOWNTO0);SIGNALRADD:STD_LOGIC_VECTOR(ADDR-1DOWNTO0);SIGNALWORDS:STD_LOGIC_VECTOR(ADDR-1DOWNTO0);ARCHITECTUREARTOFREG_FIFOIS12/20/2023BEGIN--寫指針修改進(jìn)程WRITE_POINTER:PROCESS(ACLR,CLOCK)BEGINIF(ACLR=‘0’)THENWADD<=(OTHERS=>‘0’);

ELSIF(CLOCK'EVENTANDCLOCK=‘1’)THENIF(WE=‘1’)THENIF(WADD=WORDS)THENWADD<=(OTHERS=>‘0’);ELSEWADD<=WADD+‘1’;

ENDIF;

ENDIF;12/20/2023

ENDIF;ENDPROCESS;--寫操作進(jìn)程WRITE_RAM:PROCESS(CLOCK)BEGINIF(CLOCK'EVENTANDCLOCK=‘1’)THEN

IF(WE=‘1’)THENRAMTMP(CONV_INTEGER(WADD))<=DATA;

ENDIF;

ENDIF;ENDPROCESS;12/20/2023--讀指針修改READ_POINIER:PROCESS(ACLR,CLOCK)BEGINIF(ACLR=‘0’)THENRADD<=(OTHERS=>‘0’);

ELSIF(CLOCK'EVENTANDCLOCK=‘1’)THENIF(RE=‘1’)THENIF(RADD=WORDS)THENRADD<=(OTHERS=>‘0’);

ELSERADD<=RADD+‘1’;

ENDIF;

12/20/2023ENDIF;

ENDIF;ENDPROCESS;--讀操作進(jìn)程READ_RAM

溫馨提示

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

評論

0/150

提交評論