電子設(shè)計自動化第6章課件_第1頁
電子設(shè)計自動化第6章課件_第2頁
電子設(shè)計自動化第6章課件_第3頁
電子設(shè)計自動化第6章課件_第4頁
電子設(shè)計自動化第6章課件_第5頁
已閱讀5頁,還剩174頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章常用接口控制電路6.1可編程并行接口電路6.2可編程定時/計數(shù)電路6.3SPI總線接口器件6.4堆棧(STACK)電路6.5先入先出(FIFO)電路習(xí)題與思考第6章常用接口控制電路6.1可編程并行接口電路

6.1可編程并行接口電路

6.1.1邏輯功能與分析

1.功能分析數(shù)據(jù)接口電路是計算機控制系統(tǒng)的重要構(gòu)成單元,為系統(tǒng)計算機及各構(gòu)成電路提供數(shù)據(jù)轉(zhuǎn)換、傳送通道,實現(xiàn)系統(tǒng)內(nèi)不同構(gòu)成單元之間的動態(tài)數(shù)據(jù)交互。相對而言,并行接口能夠一次實現(xiàn)多位數(shù)據(jù)的傳輸交換,無需串并轉(zhuǎn)換及并串轉(zhuǎn)換電路,具有結(jié)構(gòu)簡單、傳輸速度高等優(yōu)勢,是計算機控制系統(tǒng)中應(yīng)用較為廣泛的一種數(shù)據(jù)接口。

6.1可編程并行接口電路

6.1.1邏輯功能與分

8255是一種典型的傳統(tǒng)可編程并行接口器件,具有A、B、C三個8位并行接口,根據(jù)需要,可通過編程配置為通用輸入/輸出端口、帶選通的輸入/輸出端口、雙向傳輸端口等工作模式,同時,端口C具備位操作功能,器件的端口A或B工作于選通輸入/輸出或雙向傳輸模式時,端口C的相關(guān)數(shù)據(jù)位可用作選通或狀態(tài)信號,輔助完成計算機與外設(shè)的數(shù)據(jù)傳輸任務(wù)。8255器件具有A0、A1兩條地址線,占用4個地址,分別為A、B、C接口地址與控制字寄存器地址。

8255是一種典型的傳統(tǒng)可編程并行接口器件,具有A、B

2.器件邏輯與功能結(jié)構(gòu)

參考8255的典型功能與基本邏輯結(jié)構(gòu),對本例中的可編程并行接口適當(dāng)簡化,得到整個器件的邏輯功能結(jié)構(gòu)及其信息交互如圖6.1所示。

2.器件邏輯與功能結(jié)構(gòu)

參考8255的典型功能與基圖6.1可編程并行接口器件的邏輯功能結(jié)構(gòu)及其信息交互圖6.1可編程并行接口器件的邏輯功能結(jié)構(gòu)及其信息交互

3.實現(xiàn)原理

參照前述的器件邏輯結(jié)構(gòu),本例通過多進程描述實現(xiàn)相應(yīng)的可編程并行接口。根據(jù)器件功能與數(shù)據(jù)處理過程,分別設(shè)計專用電路的模式設(shè)置、數(shù)據(jù)寫入、輸出控制等進程,各進程間的輸入/輸出與啟動關(guān)系如圖6.2所示。

3.實現(xiàn)原理

參照前述的器件邏輯結(jié)構(gòu),本例通過多進圖6.2并口器件的進程與啟動關(guān)系圖6.2并口器件的進程與啟動關(guān)系

6.1.2電路的VHDL描述

參照圖6.2所述的接口電路描述結(jié)構(gòu),設(shè)定本例的并行接口的8位雙向數(shù)據(jù)端口為D、兩位地址輸入端為A、器件片選端為CS,器件的數(shù)據(jù)寫入端、讀出端分別定義為WR、RD,且均為低電平有效。器件并行端口為PA、PB,均為8位雙向并行接口。

為便于器件描述,在編程實現(xiàn)時,程序的所有端口、變量、信號定義以及進程設(shè)計與圖6.2中的描述嚴(yán)格一致,電路的VHDL實現(xiàn)程序如下。

6.1.2電路的VHDL描述

參照圖6.2所述的接

例6-1-1

8位可編程并行接口器件的VHDL描述:

例6-1-18位可編程并行接口器件的VHDL描述:電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

6.1.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用6.1.2節(jié)中的VHDL程序描述并行并口器件,將其作為設(shè)計項目的頂層實體,實現(xiàn)8位并行接口電路。創(chuàng)建項目時,項目名稱、頂層實體名稱保持一致,均設(shè)置為mPIO,頂層實體的VHDL實現(xiàn)程序名稱與頂層實體嚴(yán)格一致,命名為mPIO.vhd。根據(jù)程序復(fù)雜程度,初選MAXII系列的CPLD作為并口電路的實現(xiàn)器件,具體器件由開發(fā)系統(tǒng)根據(jù)編譯結(jié)果自行選擇。

6.1.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用6

如圖6.3所示為按照上述方法創(chuàng)建的8位可編程并行接口器件mPIO的實現(xiàn)項目及其編譯結(jié)果。根據(jù)器件所需要的邏輯復(fù)雜程度、I/O端口數(shù)量等資源狀況,開發(fā)系統(tǒng)在MAXII系列的CPLD中初步選擇使用器件EPM240T100C3來實現(xiàn)電路;器件提供240個邏輯宏單元,電路實際占用70個宏單元,宏單元占用率為29%;器件提供80個I/O端口,占用37個端口,端口占用率為46%。EPM240T100C3器件采用100腳TQFP封裝,速度等級為C3,相對較高。

如圖6.3所示為按照上述方法創(chuàng)建的8位可編程并行接口器圖6.3

8位可編程并行接口器件mPIO的項目實現(xiàn)及編譯結(jié)果圖6.38位可編程并行接口器件mPIO的項目實現(xiàn)及編譯結(jié)

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選器件EPM240T100C3完全可以滿足本例的并口器件,且宏單元占有率僅為29%,端口占用率僅為46%,容許以后對器件的控制邏輯進行一定的修改以升級系統(tǒng);所選PLD為3.3

V低功耗器件,TQFP封裝面積較小,速度等級較高,器件選擇較合理,因此考慮到后續(xù)的制版、布線等問題本例最終指定在項目中使用器件EPM240T100C3,本例中并行接口mPIO的引腳分配與器件指定如圖6.4所示。

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選器件EP圖6.4并行接口mPIO的引腳與器件分配圖6.4并行接口mPIO的引腳與器件分配

圖中的帶陰影引腳為已分配信號的引腳,按逆時針順序,從引腳1到引腳77,端口上被分配的信號依次為并行接口的8位雙向數(shù)據(jù)端D、片選信號CS、地址信號A、控制計算機讀信號Rd、寫信號Wr、A口外設(shè)響應(yīng)nAckA、選通nStbA、輸入緩沖滿標(biāo)志nIbfA、輸出緩沖滿標(biāo)志nObfA、端口PA、端口PB、輸出緩沖滿標(biāo)志nObfB、輸入緩沖滿標(biāo)志nIbfB、外設(shè)響應(yīng)nAckB、選通nStbB。各信號與實現(xiàn)器件引腳之間的詳細對應(yīng)關(guān)系如表6.1所示。

圖中的帶陰影引腳為已分配信號的引腳,按逆時針順序,從引電子設(shè)計自動化第6章課件

6.1.4電路測試及分析

1.功能仿真

如圖6.5所示為8位可編程并行接口mPIO的仿真輸入波形文件,圖中仿真柵格設(shè)置為20

ns,仿真總時長設(shè)置為2?μs。圖中的信號D為控制計算機雙向數(shù)據(jù)總線的數(shù)據(jù)設(shè)置情況,Data為仿真工作中電路數(shù)據(jù)總線D上的實際信號變化狀況;同樣,信號PA、PB為并行端口上的數(shù)據(jù)設(shè)置情況,響應(yīng)的信號rPA與rPB分別為端口PA、PB在電路仿真工作過程中的實際信號變化狀況。

6.1.4電路測試及分析

1.功能仿真

如圖6圖6.5可編程并行接口mPIO的仿真輸入圖6.5可編程并行接口mPIO的仿真輸入

在上述仿真激勵作用下,并行接口mPIO的仿真輸出波形如圖6.6所示。

圖6.6可編程并行接口mPIO的仿真結(jié)果

在上述仿真激勵作用下,并行接口mPIO的仿真輸出波形如

2.時序分析

通過Processing菜單下的時間分析工具,得到8位并行接口mPIO的時序分析結(jié)果如圖6.7所示。其中輸出延遲時間tpd、數(shù)據(jù)建立時間tsu、時鐘輸出延遲時間tco與信號保持時間th見圖中的時間分析工具窗ClassicTimingAnalyzerTool。

2.時序分析

通過Processing菜單下的時間圖6.7并行接口mPIO的時序分析及結(jié)果圖6.7并行接口mPIO的時序分析及結(jié)果

6.2可編程定時/計數(shù)電路

6.2.1邏輯功能與分析

1.功能分析定時計數(shù)功能是計算機控制系統(tǒng)的基本功能單元,主要為計算機及其他功能電路提供精確的時間控制、脈沖計數(shù)等功能。8253是一種典型的可編程定時/計數(shù)電路,器件具有8位外部CPU并行接口,內(nèi)置0、1、2三個16位計數(shù)器。

6.2可編程定時/計數(shù)電路

6.2.1邏輯功能與

考慮到兼容性與通用性,本例的可編程定時/計數(shù)電路保留8253傳統(tǒng)的8位CPU并行總線接口,同時內(nèi)部保留3個16位的定時/計數(shù)電路,依次命名為計數(shù)器0、1與計數(shù)器2。每個計數(shù)器均具有6種工作模式,通過編程,各計數(shù)器可分別工作于模式0~5。器件中同樣設(shè)置了計數(shù)器0、1、2的計數(shù)值專用寄存器與工作模式控制字寄存器,器件需占用4個地址以及兩條地址總線。本例的可編程定時/計數(shù)電路的邏輯功能結(jié)構(gòu)及其信息交互如圖6.8所示。

考慮到兼容性與通用性,本例的可編程定時/計數(shù)電路保留8圖6.8可編程定時/計數(shù)電路的邏輯功能結(jié)構(gòu)及信息交互圖6.8可編程定時/計數(shù)電路的邏輯功能結(jié)構(gòu)及信息交互

在圖6.8中,定時/計數(shù)器件通過8位的CPU讀寫控制電路,接收外部計算機提供的地址、數(shù)據(jù)與控制信息,根據(jù)地址、控制條件分別收發(fā)各定時/計數(shù)電路的模式控制字、計數(shù)值等數(shù)據(jù)。各計數(shù)器電路在計數(shù)與I/O控制電路作用下,根據(jù)外部計算機設(shè)定的計數(shù)參數(shù)、模式控制參數(shù),實現(xiàn)器件要求的定時/計數(shù)功能。同時,各計數(shù)器定時送出當(dāng)前計數(shù)值,供外部計算機查詢。

在圖6.8中,定時/計數(shù)器件通過8位的CPU讀寫控制電

2.工作模式及控制

本例的定時/計數(shù)電路共有6種工作模式,在實際系統(tǒng)中實現(xiàn)定時或計數(shù)時,需首先通過外部計算機設(shè)定器件的工作模式,才能啟動電路實現(xiàn)預(yù)定功能。

1)模式控制字

定時/計數(shù)電路的工作模式控制字共8位,按照功能分別為工作模式選擇位、計數(shù)器選擇位與保留位三部分,如表6.2所示。

2.工作模式及控制

本例的定時/計數(shù)電路共有6種工

其中,數(shù)據(jù)位D(5)和D(4)為計數(shù)器選擇位,取值“00”~“10”依次對應(yīng)于定時/計數(shù)器件的計數(shù)器0~計數(shù)器2;數(shù)據(jù)位D(2)、D(1)、D(0)為相應(yīng)計數(shù)器的工作模式選擇位,取值“000”~“101”依次對應(yīng)計數(shù)器的工作模式1~工作模式5。各計數(shù)器的缺省工作模式為模式0,若器件未設(shè)定工作模式則按模式0工作。

其中,數(shù)據(jù)位D(5)和D(4)為計數(shù)器選擇位,取

2)模式0-計數(shù)結(jié)束中斷

在定時/計數(shù)器件中,各計數(shù)器工作于模式0時的工作時序如圖6.9所示。

圖6.9定時/計數(shù)電路工作模式0的工作時序

2)模式0-計數(shù)結(jié)束中斷

在定時/計數(shù)器件中,各

工作于模式0時,計數(shù)器響應(yīng)計數(shù)脈沖,在脈沖的下降沿上,計數(shù)器做減1運算,減至0值,計數(shù)結(jié)束。計數(shù)結(jié)束后,計數(shù)值不能重裝,如需重新計數(shù),需重新寫入計數(shù)值。門控信號控制計數(shù)過程,若門控信號為“1”,計數(shù)啟動;若為“0”,計數(shù)暫停。計數(shù)器工作模式0的特點如下:

(1)寫入計數(shù)值,計數(shù)值立即裝入計數(shù)器;當(dāng)門控信號為“1”時,計數(shù)器響應(yīng)CLK下降沿,做減運算,輸出變?yōu)榈碗娖?。?dāng)計數(shù)值減至0時,計數(shù)結(jié)束,輸出變?yōu)楦唠娖健?/p>

(2)重新計數(shù)需重寫計數(shù)值。

(3)計數(shù)過程中寫入新值,計數(shù)器按新值重新計數(shù)。

(4)若門控信號為“0”,暫停計數(shù);若門控信號為“1”,計數(shù)繼續(xù)。

工作于模式0時,計數(shù)器響應(yīng)計數(shù)脈沖,在脈沖的下降沿上,

3)模式1——可編程單脈沖發(fā)生器

定時/計數(shù)電路工作于模式1時的工作時序如圖6.10所示。電路工作于模式1時,門控信號的上升沿啟動計數(shù);計數(shù)開始時,輸出端變?yōu)榈碗娖剑谟嫈?shù)脈沖的下降沿上,計數(shù)器執(zhí)行減計數(shù),減至“0”時,輸出變?yōu)楦唠娖?。若門控信號端出現(xiàn)上升沿,計數(shù)器裝入計數(shù)初值,重新開始計數(shù)。

3)模式1——可編程單脈沖發(fā)生器

定時/計數(shù)電路圖6.10定時/計數(shù)電路工作模式1的工作時序圖6.10定時/計數(shù)電路工作模式1的工作時序

計數(shù)器工作模式1的特點如下:

(1)門控信號出現(xiàn)升沿,電路響應(yīng)計數(shù)脈沖下降沿啟動計數(shù),輸出變?yōu)榈碗娖?;計?shù)結(jié)束時,輸出恢復(fù)高電平。

(2)計數(shù)完成后,如門控信號端重新出現(xiàn)升沿,計數(shù)器重裝計數(shù)初值并重新計數(shù)。

(3)若在計數(shù)過程中門控信號端出現(xiàn)升沿,則按計數(shù)初值重新計數(shù),輸出端電平狀態(tài)不變。

(4)若在計數(shù)過程中寫入新計數(shù)值,立即按新值計數(shù)。

計數(shù)器工作模式1的特點如下:

(1)門控信號出現(xiàn)

4)模式2——頻率發(fā)生器

定時/計數(shù)電路按模式2工作時的時序如圖6.11所示。電路工作于模式2時,計數(shù)器初始輸出為高電平,如GATE為高電平,計數(shù)器響應(yīng)計數(shù)脈沖的下降沿,執(zhí)行減計數(shù)。當(dāng)計數(shù)值減至“1”時,計數(shù)器輸出端變?yōu)榈碗娖讲⒕S持一個計數(shù)脈沖周期;然后,計數(shù)器重新裝入原始計數(shù)值,計數(shù)器輸出端輸出一個周期的低電平后,重新變?yōu)楦唠娖?,開始新一輪計數(shù)。

4)模式2——頻率發(fā)生器

定時/計數(shù)電路按模式2圖6.11定時/計數(shù)電路工作模式2的工作時序圖6.11定時/計數(shù)電路工作模式2的工作時序

計數(shù)器工作模式2的特點如下:

(1)計數(shù)器工作于模式2時可以實現(xiàn)重復(fù)計數(shù),即計數(shù)器響應(yīng)脈沖的下降沿,執(zhí)行減計數(shù),計數(shù)值減到數(shù)值“1”時,電路輸出單周期的負(fù)脈沖;然后,電路自動重裝計數(shù)值,計數(shù)器輸出回變?yōu)殡娖?,開始新一輪的計數(shù)過程。

(2)計數(shù)器連續(xù)工作,輸出固定頻率的脈沖。

(3)當(dāng)門控信號G為高電平時,允許計數(shù);為低電平時,暫停計數(shù)。

計數(shù)器工作模式2的特點如下:

(1)計數(shù)器工作于

5)模式3——方波發(fā)生器

定時/計數(shù)電路工作于模式3時的工作時序如圖6.12所示。定時/計數(shù)電路工作于模式3時,如果門控信號G為高電平,計數(shù)器響應(yīng)計數(shù)脈沖的下降沿,執(zhí)行減計數(shù),輸出端輸出并保持高電平;當(dāng)計數(shù)值減至計數(shù)初值的1/2時,計數(shù)器輸出端轉(zhuǎn)為低電平并保持;一次計數(shù)結(jié)束后,器件重裝計數(shù)初值,計數(shù)輸出回復(fù)高電平,開始新一輪的計數(shù)過程。

5)模式3——方波發(fā)生器

定時/計數(shù)電路工作于模圖6.12定時/計數(shù)電路工作模式3的工作時序圖6.12定時/計數(shù)電路工作模式3的工作時序

當(dāng)計數(shù)初值為偶數(shù)時,計數(shù)值減到N/2,計數(shù)輸出端發(fā)生變化;當(dāng)計數(shù)初值為奇數(shù)時,計數(shù)值減到(N-1)/2,計數(shù)輸出端轉(zhuǎn)為低電平。計數(shù)器工作模式3的特點如下:

(1)定時/計數(shù)電路的工作模式3與工作模式2類似,計數(shù)初值能夠自動重裝,產(chǎn)生固定頻率的方波。

(2)計數(shù)初值為偶數(shù)時,在前半計數(shù)周期內(nèi),計數(shù)器輸出高電平,后半計數(shù)周期輸出低電平,即產(chǎn)生等距方波。

(3)計數(shù)初值為奇數(shù)時,脈寬較脈間多一個計數(shù)脈沖周期。

(4)當(dāng)門控信號G為高電平時,允許計數(shù);當(dāng)G為低電平時,禁止計數(shù)。在計數(shù)過程中,G變?yōu)榈碗娖剑⒓唇K止計數(shù);G重新變?yōu)楦唠娖綍r,計數(shù)器恢復(fù)計數(shù)初值,重新開始計數(shù)。

當(dāng)計數(shù)初值為偶數(shù)時,計數(shù)值減到N/2,計數(shù)輸出端發(fā)生變

6)模式4——軟件觸發(fā)的選通信號發(fā)生器

定時/計數(shù)電路工作于模式4的工作時序如圖6.13所示。定時/計數(shù)電路以模式4工作時,若門控G為高電平,計數(shù)器響應(yīng)計數(shù)脈沖的下降沿,計數(shù)器輸出高電平,執(zhí)行減計數(shù);計數(shù)值減至0,計數(shù)輸出端輸出一個計數(shù)脈沖周期的負(fù)脈沖,然后恢復(fù)高電平,計數(shù)結(jié)束。

6)模式4——軟件觸發(fā)的選通信號發(fā)生器

定時/計圖6.13定時/計數(shù)電路工作模式4的工作時序圖6.13定時/計數(shù)電路工作模式4的工作時序

器件工作模式4的特點如下:

(1)如果G為高電平,計數(shù)器開始減計數(shù),OUT保持高電平,減至0時,OUT輸出低電平,產(chǎn)生1個時鐘周期的負(fù)脈沖。

(2)計數(shù)結(jié)束后,計數(shù)器不重裝計數(shù)值,只有重新寫入計數(shù)值,才可重新計數(shù)。

(3)在計數(shù)過程中,若G變?yōu)榈碗娖剑瑒t停止計數(shù);G恢復(fù)高電平后,繼續(xù)計數(shù)且不從計數(shù)初值開始計數(shù)。

(4)在計數(shù)過程中寫入新計數(shù)初值,立即按新計數(shù)初值計數(shù)。

器件工作模式4的特點如下:

(1)如果G為高電平

7)模式5——硬件觸發(fā)的選通信號發(fā)生器

工作于方式5時,計數(shù)器的工作時序如圖6.14所示。定時/計數(shù)電路工作于方式5時,門控信號G的上升沿啟動計數(shù),每來一個時鐘下降沿,計數(shù)值減1,當(dāng)計數(shù)值減到0時,計數(shù)器輸出端產(chǎn)生一個時鐘周期的負(fù)脈沖。一個計數(shù)周期結(jié)束后,若G端再次出現(xiàn)上升沿,計數(shù)器裝入原計數(shù)初值,重新開始計數(shù)。

7)模式5——硬件觸發(fā)的選通信號發(fā)生器

工作于方圖6.14定時/計數(shù)電路工作模式5的工作時序圖6.14定時/計數(shù)電路工作模式5的工作時序

計數(shù)器工作模式5的特點如下:

(1)當(dāng)門控信號G的上升沿到來時,開始計數(shù);計數(shù)到0時,輸出一個寬度為1個計數(shù)脈沖周期的負(fù)脈沖。

(2)門控信號G上升沿?zé)o條件觸發(fā)計數(shù)過程,每來一個G的上升沿,計數(shù)器均從頭開始計數(shù)。

(3)在計數(shù)過程中寫入新值,計數(shù)不受影響,若G信號出現(xiàn)上升沿,則電路按新值計數(shù)。

計數(shù)器工作模式5的特點如下:

(1)當(dāng)門控信號G

3.實現(xiàn)原理

參照前述的器件邏輯結(jié)構(gòu)與功能描述,本例通過結(jié)構(gòu)化描述結(jié)合多進程描述的描述方法實現(xiàn)預(yù)定的定時/計數(shù)功能。對應(yīng)于電路功能與數(shù)據(jù)處理過程,分別設(shè)計專用電路的模式設(shè)置、計數(shù)值寫入、計數(shù)控制等7個進程,各進程間的輸入、輸出邏輯關(guān)系與啟動關(guān)系如圖6.15所示。

3.實現(xiàn)原理

參照前述的器件邏輯結(jié)構(gòu)與功能描述,本

在圖示結(jié)構(gòu)中,寫進程CntWrtP、模式設(shè)置進程MdSet、讀進程RdP、計數(shù)值獲取進程RData以及讀控制RdCon實現(xiàn)器件與外部其他電路的數(shù)據(jù)交換,器件提供標(biāo)準(zhǔn)CPU并行接口及協(xié)議;復(fù)位控制進程RstCon、計數(shù)控制進程CntP實現(xiàn)模式0~模式5的定時/計數(shù)功能。其中,進程CntWrtP與MdSet響應(yīng)標(biāo)準(zhǔn)CPU并行接口寫時序,分別寫入各計數(shù)器的計數(shù)值與工作模式控制字;進程RdP響應(yīng)外部CPU的讀時序,根據(jù)地址信息,將計數(shù)器的當(dāng)前計數(shù)值或狀態(tài)信息送上數(shù)據(jù)總線D;進程RData響應(yīng)讀信號Rd,根據(jù)地址信息獲取對應(yīng)計數(shù)器的當(dāng)前計數(shù)值,供進程RdP檢索。

在圖示結(jié)構(gòu)中,寫進程CntWrtP、模式設(shè)置進程MdS圖6.15可編程定時/計數(shù)器的進程設(shè)計與啟動關(guān)系圖6.15可編程定時/計數(shù)器的進程設(shè)計與啟動關(guān)系

6.2.2電路的VHDL描述

1.頂層實體mTCnt的VHDL描述

考慮到器件的通用性,在設(shè)計頂層實體mTCnt時,設(shè)定并行接口的數(shù)據(jù)總線D為8位雙向數(shù)據(jù)端口、兩位地址輸入為A、片選為CS,寫、讀信號分別定義為Wr、Rd,且低電平有效。為便于描述,程序中的端口、變量、信號定義與器件的結(jié)構(gòu)、功能以及進程關(guān)系描述一致,頂層實體mTCnt的VHDL實現(xiàn)程序如下。

6.2.2電路的VHDL描述

1.頂層實體mTCn

例6-2-1可編程定時/計數(shù)電路頂層實體mTCnt的VHDL描述:

例6-2-1可編程定時/計數(shù)電路頂層實體mTCnt電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

2.計數(shù)器mCnt的VHDL描述

實體mCnt實現(xiàn)針對計數(shù)脈沖的定時與計數(shù)功能。根據(jù)器件的進程結(jié)構(gòu),實體mCnt的結(jié)構(gòu)體中主要包括計數(shù)重裝進程RstCon與定時計數(shù)進程CntP,實現(xiàn)代碼如下。

例6-2-2可編程定時/計數(shù)電路的計數(shù)實體mCnt的VHDL描述:

2.計數(shù)器mCnt的VHDL描述

實體mCnt實現(xiàn)電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

6.2.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

采用前一節(jié)中的VHDL程序描述定時/計數(shù)電路的各個構(gòu)成進程,創(chuàng)建設(shè)計項目,實現(xiàn)16位可編程定時/計數(shù)器件。項目名稱與頂層實體名稱保持一致,均設(shè)置為mTCnt。頂層實體的VHDL實現(xiàn)程序名稱與頂層實體嚴(yán)格一致,命名為mTCnt.vhd;計數(shù)器實體描述文件與實體命名一致,命名為mCnt.h。

6.2.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

采用前

相對于前述章節(jié)中的實例電路,本例中的可編程定時/計數(shù)器具有一定的邏輯復(fù)雜程度,考慮到邏輯規(guī)模,本例初選MAXII系列的CPLD作為定時/計數(shù)電路的實現(xiàn)器件,具體器件型號參照開發(fā)系統(tǒng)的編譯結(jié)果另行指定。如圖6.16所示為按照上述方法創(chuàng)建的可編程定時/計數(shù)器件mTCnt的實現(xiàn)項目及其編譯結(jié)果。

相對于前述章節(jié)中的實例電路,本例中的可編程定時/計數(shù)器具有圖6.16可編程定時/計數(shù)器件的項目實現(xiàn)及編譯結(jié)果圖6.16可編程定時/計數(shù)器件的項目實現(xiàn)及編譯結(jié)果

2.器件、引腳分配

根據(jù)編譯結(jié)果,器件EPM570T100C3能夠滿足電路的所有預(yù)定功能,宏單元占有率為64%,端口占用率僅為29%,允許以后對電路控制邏輯進行小幅修改,實現(xiàn)系統(tǒng)升級;同時,EPM570T100C3為3.3?V低功耗器件,封裝面積較小,速度等級較高,器件選擇較合理。兼顧后續(xù)制版、布線等操作,本例的定時/計數(shù)電路引腳分配與器件指定如圖6.17所示。

2.器件、引腳分配

根據(jù)編譯結(jié)果,器件EPM570圖6.17可編程定時/計數(shù)器件的引腳與器件分配圖6.17可編程定時/計數(shù)器件的引腳與器件分配

圖中帶陰影引腳為已分配引腳,信號與器件引腳之間的具體對應(yīng)關(guān)系如表6.3所示。

圖中帶陰影引腳為已分配引腳,信號與器件引腳之間的具體對

6.2.4電路測試及分析

1.功能仿真

如圖6.18所示為定時/計數(shù)電路的仿真輸入,圖6.19所示為電路工作于模式0時的工作時序。

6.2.4電路測試及分析

1.功能仿真

如圖6圖6.18可編程定時/計數(shù)器件的仿真輸入圖6.18可編程定時/計數(shù)器件的仿真輸入圖6.19可編程定時/計數(shù)器件模式0的仿真結(jié)果圖6.19可編程定時/計數(shù)器件模式0的仿真結(jié)果

工作于模式1時,計數(shù)器的工作時序波形模擬如圖6.20所示。在圖中的工作時序中,控制計算機向地址“11”(模式寄存器地址)依次寫入模式控制字01H、11H與21H,將計數(shù)器0~2的工作模式分別設(shè)置為模式1;然后,將16位計數(shù)值0007H分別寫入計數(shù)器0、1、2(地址依次為“00”、“01”、“10”)。之后,3個計數(shù)器的門控G出現(xiàn)上升沿(由“111”轉(zhuǎn)為“000”),3個計數(shù)器響應(yīng)Clk,開始模式1計數(shù)。

工作于模式1時,計數(shù)器的工作時序波形模擬如圖6.20所圖6.20可編程定時/計數(shù)器件模式1的仿真結(jié)果圖6.20可編程定時/計數(shù)器件模式1的仿真結(jié)果

如圖6.21所示為計數(shù)器作于模式2時的工作時序模擬,計數(shù)器工作于模式3時的時序模擬如圖6.22所示。

如圖6.21所示為計數(shù)器作于模式2時的工作時序模擬,計圖6.21可編程定時/計數(shù)器件模式2的仿真結(jié)果圖6.21可編程定時/計數(shù)器件模式2的仿真結(jié)果圖6.22可編程定時/計數(shù)器件模式3的仿真結(jié)果圖6.22可編程定時/計數(shù)器件模式3的仿真結(jié)果

圖6.23所示為工作于模式4時計數(shù)器的工作時序,計數(shù)器工作于模式5時的工作時序如圖6.24所示。

圖6.23所示為工作于模式4時計數(shù)器的工作時序,計數(shù)器圖6.23可編程定時/計數(shù)器件模式4的仿真結(jié)果圖6.23可編程定時/計數(shù)器件模式4的仿真結(jié)果圖6.24可編程定時/計數(shù)器件模式5的仿真結(jié)果圖6.24可編程定時/計數(shù)器件模式5的仿真結(jié)果

2.時序分析

通過Processing菜單下的時間分析工具ClassicTimingAnalyzerTool,得到可編程定時/計數(shù)器件的時序分析結(jié)果如圖6.25所示。其中,器件的輸出延遲時間tpd、數(shù)據(jù)建立時間tsu、時鐘輸出延遲時間tco與信號保持時間th等詳細參數(shù)見圖中的時間分析工具窗ClassicTimingAnalyzerTool。

2.時序分析

通過Processing菜單下的時間圖6.25可編程定時/計數(shù)器件的時序分析及結(jié)果圖6.25可編程定時/計數(shù)器件的時序分析及結(jié)果

6.3

SPI總線接口器件

6.3.1邏輯功能與分析

1.功能分析串行數(shù)據(jù)接口電路是現(xiàn)代計算機系統(tǒng),尤其是嵌入式計算機系統(tǒng)內(nèi)部以及系統(tǒng)之間數(shù)據(jù)交換、傳輸?shù)闹匾考?。與并行接口相比,串行接口及其通信協(xié)議具有接線少、傳輸方便等優(yōu)勢,在遠距離、高速數(shù)據(jù)傳輸?shù)葓龊蠎?yīng)用廣泛。

6.3SPI總線接口器件

6.3.1邏輯功能與分

2.器件邏輯與功能結(jié)構(gòu)

為便于設(shè)計,本例采用圖6.26所示的邏輯功能結(jié)構(gòu)。本例中的器件作為SPI的從器件使用,具有1個SPI接口以及端口信號Sck、nSS、MOSI、MISO,與標(biāo)準(zhǔn)SPI協(xié)議一致。器件具有16位并行輸入、輸出接口各1個,分別命名為并行端口InP與OutP;應(yīng)答信號與選通信號各一個,分別為nAck、nSTB;輸入、輸出緩沖滿標(biāo)志各一個,分別為InBF與OutBF。

2.器件邏輯與功能結(jié)構(gòu)

為便于設(shè)計,本例采用圖6.圖6.26

SPI接口器件的邏輯功能結(jié)構(gòu)圖6.26SPI接口器件的邏輯功能結(jié)構(gòu)

在圖6.26中,接口器件通過MOSI接收控制計算機的數(shù)據(jù)信息,將其轉(zhuǎn)化為并行數(shù)據(jù)送至輸出緩沖,同時置位輸出緩沖標(biāo)志;然后,器件響應(yīng)信號nAck,將數(shù)據(jù)發(fā)至端口OutP,清除輸出緩沖標(biāo)志;接收數(shù)據(jù)時,InP將外設(shè)數(shù)據(jù)送入輸入緩沖,輸入輸出控制置輸入緩沖標(biāo)志為高,SPI收發(fā)控制獲取輸入緩沖并將其轉(zhuǎn)換為串行數(shù)據(jù),響應(yīng)Sck,逐位將數(shù)據(jù)發(fā)至MISO端。

在圖6.26中,接口器件通過MOSI接收控制計算機的數(shù)

3.實現(xiàn)原理

參照器件邏輯功能,本例通過多進程實現(xiàn)預(yù)定的控制邏輯,各進程間的輸入、輸出關(guān)系與啟動關(guān)系如圖6.27所示。圖中的接口控制邏輯由SPI數(shù)據(jù)收進程OutCon、輸出標(biāo)志控制進程OutFlg、輸出進程OutProc與SPI數(shù)據(jù)發(fā)進程InCon、輸入進程InProc、輸入標(biāo)志控制進程InFlg構(gòu)成。

3.實現(xiàn)原理

參照器件邏輯功能,本例通過多進程實現(xiàn)圖6.27

SPI總線接口器件的進程與啟動關(guān)系圖6.27SPI總線接口器件的進程與啟動關(guān)系

6.3.2電路的VHDL描述

本例所用的SPI協(xié)議工作時序設(shè)置如圖6.28所示。執(zhí)行數(shù)據(jù)傳輸時,nSS變?yōu)榈碗娖剑琒PI主、從機分別響應(yīng)數(shù)據(jù)時鐘Sck,在Sck上升沿上發(fā)送串行數(shù)據(jù)各數(shù)據(jù)位,在Sck下降沿上接收各串行數(shù)據(jù)位。參照前述的電路邏輯功能結(jié)構(gòu)與集成關(guān)系,實現(xiàn)器件。

6.3.2電路的VHDL描述

本例所用的SPI協(xié)議圖6.28本例所用的SPI協(xié)議工作時序圖6.28本例所用的SPI協(xié)議工作時序

為便于器件描述,在編程實現(xiàn)時,程序的所有端口、變量、信號定義以及進程設(shè)計與圖6.27中的描述一致,電路的VHDL描述程序如下。

例6-3-1

SPI總線接口器件的VHDL描述程序:

為便于器件描述,在編程實現(xiàn)時,程序的所有端口、變量、信電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

描述程序的實體名稱設(shè)置為mSPI,采用SPI標(biāo)準(zhǔn)端口,信號包括主機數(shù)據(jù)輸出/從機數(shù)據(jù)輸入MOSI(MasterOutputSlaveInput)、主機數(shù)據(jù)輸入/從機數(shù)據(jù)輸出MISO(MasterInputSlaveOutput)、數(shù)據(jù)時鐘Sck與從機選擇端nSS。此外,器件端口還包括16位數(shù)據(jù)輸入端口InP、16位數(shù)據(jù)輸出端口OutP、輸入選通信號nStb、輸出響應(yīng)信號nAck、輸出緩沖滿標(biāo)志OutBF與輸入緩沖滿標(biāo)志InBF。為便于實現(xiàn),描述程序設(shè)計輸入緩沖InBuf與輸出緩沖OutBuf,分別暫存來自SPI的輸出數(shù)據(jù)與來自外設(shè)的輸入數(shù)據(jù)。

描述程序的實體名稱設(shè)置為mSPI,采用SPI標(biāo)準(zhǔn)端口,

執(zhí)行數(shù)據(jù)輸出操作時,如果輸出緩沖滿標(biāo)志iOutBF為低電平且nSS有效,進程OutCon響應(yīng)SPI數(shù)據(jù)時鐘Sck下降沿,采樣端口MOSI,依次獲取各輸出數(shù)據(jù)位,送入輸出緩沖OutBuf。一幀數(shù)據(jù)(16位)接受結(jié)束后,進程OutCon發(fā)出信號iTrD,通知進程OutFlg修改輸出緩沖滿標(biāo)志iOutBF;然后,OutFlg修改標(biāo)志iOutBF,OutCon檢測到iOutBF變?yōu)楦唠娖?,撤銷iTrD;iOutBF變化引起端口OutBF變化。外設(shè)收到OutBF,發(fā)出響應(yīng)信號nAck,OutProc響應(yīng)nAck下降沿,將OutBuf送至端口OutP;同時,nAck下降沿觸發(fā)進程OutFlg,清除輸出緩沖滿標(biāo)志iOutBF,端口OutBF清零,數(shù)據(jù)輸出完成。

執(zhí)行數(shù)據(jù)輸出操作時,如果輸出緩沖滿標(biāo)志iOutBF為低

執(zhí)行數(shù)據(jù)輸入操作時,進程InProc監(jiān)測選通信號nStb,當(dāng)nStb下降沿來臨且輸入緩沖滿標(biāo)志無效為“0”時,InProc將端口InP的數(shù)據(jù)送入輸入緩沖InBuf;同時,進程InCon響應(yīng)nStb下降沿,置位輸入緩沖滿標(biāo)志iInBF;監(jiān)測到標(biāo)志iInBF為高電平且nSS有效后,SPI發(fā)進程OutCon響應(yīng)SPI數(shù)據(jù)時鐘Sck上升沿,由高至低依次將InBuf各數(shù)據(jù)位送至端口MISO。一幀數(shù)據(jù)(16位)發(fā)送結(jié)束后,進程InCon將信號iRcDOv置為高電平,通知進程InFlg修改輸入緩沖滿標(biāo)志iInBF;然后,InFlg將iInBF置為低電平,InCon檢測到iInBF變低,清零iRcDOv;iInBF的變化引起端口InBF變化,數(shù)據(jù)輸入完畢。

執(zhí)行數(shù)據(jù)輸入操作時,進程InProc監(jiān)測選通信號nSt

6.3.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

如圖6.29所示為SPI總線接口器件mSPI的實現(xiàn)項目及項目編譯情況。

6.3.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

如圖6圖6.29

SPI總線接口器件mSPI的項目實現(xiàn)及編譯圖6.29SPI總線接口器件mSPI的項目實現(xiàn)及編譯

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選的器件EPM240T100C3完全可以滿足本例的接口器件,同時項目35%的宏單元占用率、50%端口占用率,能夠為后續(xù)的邏輯功能完善、修改以及系統(tǒng)升級提供較大的選擇余地。EPM240T100C3為3.3

V低功耗器件,封裝面積較小,價格、速度等級等情況合理,后續(xù)的電路焊接以及調(diào)測試均較為方便。因此,本例為項目最終指定器件EPM240T100C3。

考慮到后續(xù)制版、布線與調(diào)測試的方便性,本例的SPI總線接口器件mSPI的引腳分配與器件指定如圖6.30所示。

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選的器件E圖6.30

SPI總線接口器件mSPI的引腳信號與器件分配圖6.30SPI總線接口器件mSPI的引腳信號與器件分配

圖中的帶陰影引腳為已分配信號的引腳,從引腳5到引腳85,按照逆時針順序,端口上分配的信號依次為:SPI總線的信號Sck、nSS、MOSI、MISO、外設(shè)響應(yīng)信號nAck、16位輸出端口OutP、輸出緩沖滿標(biāo)志OutBF、選通信號nStb、16位輸入端口InP、輸入緩沖滿標(biāo)志nInBF。表6.4給出了SPI接口電路mSPI的實現(xiàn)器件EPM240T100C3各引腳與I/O信號的詳細對應(yīng)關(guān)系。

圖中的帶陰影引腳為已分配信號的引腳,從引腳5到引腳85電子設(shè)計自動化第6章課件

6.3.4電路功能測試及分析

1.邏輯功能仿真

圖6.31所示為SPI總線接口器件mSPI的邏輯功能仿真輸入波形文件。

6.3.4電路功能測試及分析

1.邏輯功能仿真

圖6.31

SPI總線接口器件mSPI的仿真輸入圖6.31SPI總線接口器件mSPI的仿真輸入

在圖示仿真輸入中,仿真柵格Grid大小設(shè)置為20

ns,仿真總時長設(shè)置為3?μs。圖中的信號?\OutCon:tmp為SPI協(xié)議從機數(shù)據(jù)收進程OutCon的數(shù)據(jù)位計數(shù)器,與其相對應(yīng),信號?\InCon:tmp為SPI協(xié)議從機數(shù)據(jù)發(fā)進程InCon的數(shù)據(jù)位計數(shù)器。對應(yīng)于每個數(shù)據(jù)時鐘Sck,SPI每執(zhí)行一次數(shù)據(jù)位的收發(fā),兩個信號tmp分別計數(shù)一次。收發(fā)完16位數(shù)據(jù),兩個tmp信號均清零。

在上述仿真激勵的作用下,SPI總線接口器件mSPI的工作時序仿真結(jié)果波形如圖6.32所示。

在圖示仿真輸入中,仿真柵格Grid大小設(shè)置為20ns 圖6.32

SPI總線接口器件mSPI的邏輯功能仿真 圖6.32SPI總線接口器件mSPI的邏輯功能仿真

2.時序分析

通過Processing菜單下的時間分析工具ClassicTimingAnalyzerTool,對SPI總線接口電路mSPI進行時序分析,結(jié)果如圖6.33所示。其中,電路各信號的輸出延遲時間tpd、數(shù)據(jù)建立時間tsu、時鐘輸出延遲時間tco與信號保持時間th值見圖中的時間分析工具窗ClassicTimingAnalyzerTool。

2.時序分析

通過Processing菜單下的時間

通過圖6.33中的按鈕Start,啟動電路的時序分析,然后選擇按鈕Report,得到接口電路mSPI各時間參數(shù)的極端值,數(shù)據(jù)建立時間tsu的最大值為0.986?ns,時鐘輸出延遲時間tco的最大值為7.276?ns,數(shù)據(jù)信號保持時間th的最大值為1.447?ns,Sck的最高容許頻率為209.78?MHz,nSTB的最高容許頻率為304.04

MHz。

通過圖6.33中的按鈕Start,啟動電路的時序分析,圖6.33

SPI總線接口器件mSPI的時序分析圖6.33SPI總線接口器件mSPI的時序分析

6.4堆棧(STACK)電路

6.4.1邏輯功能與分析

1.功能分析堆棧是計算機系統(tǒng)中應(yīng)用非常廣泛的一種典型存儲電路,它遵從先入后出的存取原則,常用于計算機控制過程中一些重要運行參數(shù)與數(shù)據(jù)的存儲與恢復(fù)。假定某計算機控制系統(tǒng)中的存儲電路中設(shè)置專用堆棧存儲區(qū)STACK、堆棧指針SP,如圖6.34所示。

6.4堆棧(STACK)電路

6.4.1邏輯功能圖6.34堆棧存儲電路的結(jié)構(gòu)與操作圖6.34堆棧存儲電路的結(jié)構(gòu)與操作

2.實現(xiàn)原理

根據(jù)堆棧的定義及其操作過程的描述,本例通過多進程實現(xiàn)堆棧預(yù)定的各種控制邏輯,進程設(shè)計以及各進程間的輸入、輸出關(guān)系與啟動關(guān)系如圖6.35所示。

2.實現(xiàn)原理

根據(jù)堆棧的定義及其操作過程的描述,本圖6.35堆棧存儲電路的進程設(shè)計與啟動關(guān)系圖6.35堆棧存儲電路的進程設(shè)計與啟動關(guān)系

6.4.2電路的VHDL描述

參照堆棧結(jié)構(gòu)功能以及操作過程,考慮兼容性與通用性,本例堆棧電路采用標(biāo)準(zhǔn)8位并行接口,設(shè)置器件8位雙向數(shù)據(jù)端口為D、器件片選端為CS,器件的數(shù)據(jù)寫入端、讀出端分別定義為WR、RD,且均為低電平有效。為方便使用,器件設(shè)置專用狀態(tài)標(biāo)志端口,包括堆??諛?biāo)志信號Empt與堆棧滿標(biāo)志Full。

為便于程序理解與電路描述,在編程實現(xiàn)時,描述程序的所有端口、變量、信號定義以及進程設(shè)計與圖6.35中的描述一致,電路的VHDL描述程序如下。

6.4.2電路的VHDL描述

參照堆棧結(jié)構(gòu)功能以及

例6-4-1堆棧(STACK)的VHDL描述程序:

例6-4-1堆棧(STACK)的VHDL描述程序:電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

描述程序的實體名稱設(shè)置為mStck,堆棧電路mStck在正常工作時,數(shù)據(jù)的出入棧動作均會影響讀寫指針pRd與pWr,當(dāng)數(shù)據(jù)持續(xù)入棧時,電路中的寫指針pWr、讀指針pRd均持續(xù)進行加1運算;數(shù)據(jù)持續(xù)出棧時,寫指針pWr、讀指針pRd均持續(xù)進行減1運算。同時,當(dāng)堆棧為滿或空狀態(tài)時,讀寫指針相等;否則,讀寫指針滿足條件pWr?=?pRd?+?1。

描述程序的實體名稱設(shè)置為mStck,堆棧電路mStck

根據(jù)上述原理描述寫進程WrProc與指針控制進程PntCon。寫進程WrProc響應(yīng)信號WR的上升沿,CS為低電平有效且堆棧mStck不為滿狀態(tài),若上次操作為出棧(iDeta?=‘1’),WrProc獲取讀指針pRd,根據(jù)pRd計算當(dāng)前寫指針pWr。當(dāng)上次操作為入棧(iDeta?=‘0’)時,如果pWr到達棧頂,將堆棧滿標(biāo)志iFull置位,調(diào)整寫指針pWr。然后,寫進程WrProc獲取數(shù)據(jù)總線D,送入堆棧存儲區(qū)DSeg中由pWr指定的存儲單元DSeg(pWr),同時清除標(biāo)志iDeta。由于寫指針pWr的計算與上次棧操作類型有關(guān),進程WrProc監(jiān)測讀信號RD,若RD發(fā)生變化、CS有效且堆棧不空(EmptF為“0”),進程WrProc將iDeta置位,供WrProc執(zhí)行入棧操作時計算pWr使用。

根據(jù)上述原理描述寫進程WrProc與指針控制進程Pnt

進程PntCon計算堆棧電路的讀指針pRd,進程響應(yīng)讀信號的下降沿,若CS有效且堆棧不為空(EmptF為“0”),則計算堆棧讀指針pRd,執(zhí)行出棧操作。計算pRd時,若上次操作為壓棧(iDeta?=‘1’),則PntCon獲取寫指針pWr,根據(jù)pWr計算當(dāng)前讀指針。當(dāng)上次操作為出棧時,如果堆棧讀指針pRd?=?0,則將堆??諛?biāo)志EmptF置位。同樣,進程PntCon監(jiān)測信號WR,若WR、CS有效且堆棧不滿,PntCon清除空標(biāo)志iEmpt,將iDeta置位,供PntCon在執(zhí)行出棧操作時計算pRd使用。進程RdProc響應(yīng)讀信號RD,在CS有效且堆棧不為空時,將讀指針對應(yīng)的堆棧存儲單元DSeg(pRd)送上數(shù)據(jù)總線D。

進程PntCon計算堆棧電路的讀指針pRd,進程響應(yīng)讀

6.4.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用上述VHDL程序描述堆棧電路器件,創(chuàng)建項目,將描述程序加入設(shè)計項目并作為頂層實體,實現(xiàn)預(yù)定的堆棧功能電路。項目的頂層實體、項目名稱保持一致,均命名為mStck。同時,實體的VHDL描述程序名稱與頂層實體嚴(yán)格對應(yīng),命名為mStck.vhd。初選MAXII系列CPLD器件實現(xiàn)預(yù)定的電路,圖6.36所示為按照上述方法創(chuàng)建的堆棧電路mStck的實現(xiàn)項目及項目編譯情況。

6.4.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用上圖6.36堆棧電路mStck的項目實現(xiàn)及編譯圖6.36堆棧電路mStck的項目實現(xiàn)及編譯

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選的器件EPM240T100C3完全可以滿足本例接口器件的要求,同時項目46%的宏單元占用率、16%的端口占用率,能為后續(xù)的邏輯功能擴展、修改以及系統(tǒng)升級提供較大的選擇余地。EPM240T100C3為3.3

V低功耗器件,集成度、價格、速度等條件較為理想。同時,TQFP封裝使后續(xù)的電路焊接以及調(diào)測試更為方便。因此,本例為項目最終指定器件EPM240T100C3,考慮到后續(xù)制版、布局、布線的合理性以及調(diào)測試的方便性,本例堆棧電路mStck的引腳分配與器件指定情況如圖6.37所示。

2.器件、引腳分配

根據(jù)上述編譯結(jié)果,初選的器件E圖6.37堆棧電路mStck的引腳信號與器件分配圖6.37堆棧電路mStck的引腳信號與器件分配

圖中的帶陰影引腳為已分配信號的引腳,從引腳1到引腳67,按照逆時針順序,端口上分配的信號依次為:雙向數(shù)據(jù)總線的數(shù)據(jù)端口D、片選信號CS、計算機并行接口的讀信號RD、計算機并行接口的寫信號WR、堆棧電路Stck滿標(biāo)志Full、堆棧電路mStck空標(biāo)志Empt。表6.5給出了堆棧電路mStck實現(xiàn)器件EPM240T100C3引腳與I/O信號的詳細對應(yīng)關(guān)系。

圖中的帶陰影引腳為已分配信號的引腳,從引腳1到引腳67

6.4.4電路功能測試及分析

1.邏輯功能仿真

圖6.38所示為堆棧電路mStck的邏輯功能仿真輸入波形文件,圖中仿真柵格Grid大小設(shè)置為20?ns,仿真總時長設(shè)置為3?μs。信號\PntCon:iRd為堆棧電路mStck的讀指針,與其相對應(yīng),信號?\WrProc:iWr為堆棧電路mStck的寫指針。信號D為計算機并行接口8位雙向數(shù)據(jù)端口的設(shè)定值,信號DATA為堆棧電路mStck工作時8位雙向數(shù)據(jù)端口D的信號變化狀況。

6.4.4電路功能測試及分析

1.邏輯功能仿真

圖6.38堆棧電路mStck的仿真輸入圖6.38堆棧電路mStck的仿真輸入

在上述仿真激勵中的時間段30~450

ns內(nèi),并行接口寫信號WR連續(xù)產(chǎn)生下降沿,向堆棧電路mStck持續(xù)寫入10個數(shù)據(jù)。此時,堆棧電路mStck的工作時序仿真結(jié)果如圖6.39所示。

在上述仿真激勵中的時間段30~450ns內(nèi),并行接口圖6.39堆棧電路mStck持續(xù)壓棧時的邏輯功能仿真圖6.39堆棧電路mStck持續(xù)壓棧時的邏輯功能仿真

從時刻30

ns開始,并行接口向堆棧電路mStck持續(xù)送入數(shù)據(jù)01H~0AH,寫指針iWr依次增加,當(dāng)寫至數(shù)據(jù)08H時,滿標(biāo)志Full變?yōu)楦唠娖?,堆棧滿。在時間段520~580?ns內(nèi),RD連續(xù)發(fā)出讀脈沖,DATA送出最后的壓棧數(shù)據(jù)08H、07H。在時間段660~720?ns內(nèi),將數(shù)據(jù)10H、11H壓棧,F(xiàn)ull重新變?yōu)楦唠娖?。圖6.40所示為mStck持續(xù)出棧情況。

從時刻30ns開始,并行接口向堆棧電路mStck持續(xù)圖6.40堆棧電路mStck持續(xù)出棧時的邏輯功能仿真圖6.40堆棧電路mStck持續(xù)出棧時的邏輯功能仿真

從800

ns時刻開始,RD連續(xù)發(fā)出讀脈沖,數(shù)據(jù)總線DATA端連續(xù)送出數(shù)據(jù)11H、10H、06H、05H、04H、03H、02H與01H,與前文的壓棧數(shù)據(jù)順序一一對應(yīng)。在800

ns時刻,RD變?yōu)榈碗娖?,堆棧mStck開始送出數(shù)據(jù),滿標(biāo)志Full迅速變低;送出8個數(shù)據(jù)后,空標(biāo)志Empt置位,堆棧清空。

當(dāng)堆棧滿后,數(shù)據(jù)隨機出棧時的堆棧電路工作時序仿真結(jié)果如圖6.41所示。

從800ns時刻開始,RD連續(xù)發(fā)出讀脈沖,數(shù)據(jù)總線D圖6.41連續(xù)壓棧堆棧滿后隨機出棧時電路的工作時序仿真圖6.41連續(xù)壓棧堆棧滿后隨機出棧時電路的工作時序仿真

從時刻1.28?μs開始,CS有效,WR連續(xù)發(fā)出寫脈沖,DATA端數(shù)據(jù)20H~27H依次被壓入堆棧mStck。壓棧開始,空標(biāo)志Empt迅速變?yōu)榈碗娖?。?dāng)8個數(shù)據(jù)完成壓棧后,堆棧滿標(biāo)志Full置位。在時刻1.74?μs處,RD連續(xù)發(fā)出4個隨機的讀信號,棧頂?shù)?個數(shù)據(jù)27H、26H、25H與24H被送上mStck電路的數(shù)據(jù)總線DATA,此時,堆棧內(nèi)順序保留數(shù)據(jù)23H、22H、21H與20H。圖6.42所示為隨機壓棧至堆棧滿后,持續(xù)出棧時電路的工作時序仿真結(jié)果。

從時刻1.28?μs開始,CS有效,WR連續(xù)發(fā)出寫脈沖

圖6.42隨機狀態(tài)下堆棧電路mStck壓棧滿后持續(xù)出棧的工作時序仿真

圖6.42隨機狀態(tài)下堆棧電路mStck壓棧滿后持續(xù)出棧

2.時序分析

通過quartusII自帶的時間分析工具,對堆棧電路mStck進行時間分析。選擇Processing菜單下的功能子菜單ClassicTimingAnalyzerTool,運行時序分析工具,結(jié)果如圖6.43所示。圖中時間分析工具窗口ClassicTimingAnalyzerTool列表顯示電路各端口信號的輸出延遲時間tpd、數(shù)據(jù)建立時間tsu、時鐘輸出延遲時間tco與信號保持時間th值。

2.時序分析

通過quartusII自帶的時間分圖6.43堆棧電路mStck的時序分析圖6.43堆棧電路mStck的時序分析

當(dāng)預(yù)定的電路邏輯功能或時間分析參數(shù)不理想或達不到設(shè)計要求時,可以修改描述程序、PLD器件或其他的器件、布局、布線等參數(shù),重新編譯仿真,以獲得更高的性能與更好的輸出效果。

當(dāng)預(yù)定的電路邏輯功能或時間分析參數(shù)不理想或達不到設(shè)計要

6.5先入先出(FIFO)電路

6.5.1邏輯功能與分析

1.功能分析先入先出又稱FIFO(FirstInFirstOut),是計算機系統(tǒng)結(jié)構(gòu)中應(yīng)用非常廣泛的另外一種典型存儲電路,F(xiàn)IFO存儲電路的邏輯結(jié)構(gòu)如圖6.44所示。

6.5先入先出(FIFO)電路

6.5.1邏輯功圖6.44先入先出(FIFO)存儲電路的結(jié)構(gòu)與操作圖6.44先入先出(FIFO)存儲電路的結(jié)構(gòu)與操作

2.實現(xiàn)原理

根據(jù)先入先出(FIFO)電路的定義、功能及其操作過程的描述,本例通過多進程實現(xiàn)FIFO存儲電路預(yù)定的各種功能控制邏輯,電路的進程設(shè)計以及各構(gòu)成進程間的輸入/輸出關(guān)系與啟動關(guān)系如圖6.45所示。

2.實現(xiàn)原理

根據(jù)先入先出(FIFO)電路的定義、圖6.45先入先出(FIFO)存儲電路的進程設(shè)計與啟動關(guān)系圖6.45先入先出(FIFO)存儲電路的進程設(shè)計與啟動關(guān)

6.5.2電路的VHDL描述

參照前文的先入先出(FIFO)電路的結(jié)構(gòu)功能以及操作過程分析,兼顧電路的兼容性與通用性,本例中FIFO電路的外部端口采用標(biāo)準(zhǔn)8位并行接口,端口的數(shù)據(jù)端設(shè)置為8位雙向數(shù)據(jù)總線D、器件片選端端口設(shè)置為CS,讀、寫信號端分別定義為WR、RD,均為低電平有效。為便于數(shù)據(jù)交換,F(xiàn)IFO電路中設(shè)置專用端口來描述器件存儲區(qū)的空滿狀態(tài),包括空標(biāo)志端口Empt與滿標(biāo)志端口Full。

6.5.2電路的VHDL描述

參照前文的先入先出(

為便于程序理解與電路描述,描述程序的所有端口、變量、信號定義以及進程設(shè)計與前文的邏輯功能、過程描述一致,F(xiàn)IFO電路的VHDL實現(xiàn)程序如下。

例6-5-1先入先出(FIFO)電路的VHDL描述程序:

為便于程序理解與電路描述,描述程序的所有端口、變量、信電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件電子設(shè)計自動化第6章課件

描述程序的實體名稱設(shè)定為mFIFO,按照前文所述的進程設(shè)置、進程處理過程與進程啟動關(guān)系描述各進程的數(shù)據(jù)處理過程。寫進程WrProc響應(yīng)并行接口的寫信號,在WR的上升沿時刻,進程監(jiān)測片選信號CS與滿狀態(tài)標(biāo)志iFull。若信號CS有效且FIFO不為滿狀態(tài),WrProc獲取并口數(shù)據(jù)D,根據(jù)當(dāng)前寫指針pWr將數(shù)據(jù)D送入FIFO存儲區(qū)DSeg。然后重新計算寫指針pWr,如果pWr到達存儲區(qū)頂部,則pWr清零;否則,pWr執(zhí)行自加運算。寫指針pWr調(diào)整完畢后,進程判別存儲區(qū)滿狀態(tài),若讀、寫指針相等,則FIFO的存儲區(qū)已滿,標(biāo)志iFull置位。同時,寫進程WrProc響應(yīng)并行接口的讀信號RD,當(dāng)RD、CS有效且空標(biāo)志iEmpt為“0”時,進程WrProc撤銷滿標(biāo)志,iFull清零。

描述程序的實體名稱設(shè)定為mFIFO,按照前文所述的進程

進程RdProc響應(yīng)讀信號RD,判斷FIFO電路的狀況,若RD、CS有效且電路存儲區(qū)不為空狀態(tài)時,RdProc將存儲單元DSeg內(nèi)讀指針pRd對應(yīng)的數(shù)據(jù)DSeg(pRd)堆棧送上數(shù)據(jù)總線D;反之,將數(shù)據(jù)總線置為高阻態(tài)。

進程RdProc響應(yīng)讀信號RD,判斷FIFO電路的狀況

進程DataCon專門用于FIFO電路的讀指針pRd的運算及電路空狀態(tài)標(biāo)志的操作。DataCon響應(yīng)并行接口讀信號RD,一次讀操作完成后,在RD信號的上升沿上,DataCon判斷FIFO電路的工作狀態(tài),若CS有效且FIFO標(biāo)志iEmpt為“0”,進程DataCon重新計算讀指針pRd。若讀指針到達存儲區(qū)頂部,pRd清零;否則,pRd執(zhí)行加1運算。當(dāng)讀指針pRd計算完畢后,DataCon判斷讀、寫指針pWr與pRd的取值狀況,若二者取值相等,則將iEmpt置位,同時DataCon響應(yīng)寫信號WR,若WR、CS有效且電路存儲區(qū)不為滿狀態(tài)時,進程將FIFO電路存儲區(qū)的空標(biāo)志iEmpt清零。

進程DataCon專門用于FIFO電路的讀指針pRd的

6.5.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用前文所述的VHDL程序描述先入先出電路器件,創(chuàng)建項目mFIFO,將電路描述程序加入設(shè)計項目并作為頂層實體,實現(xiàn)預(yù)定的先入先出存儲電路功能。項目的頂層實體、項目名稱保持一致,均命名為mFIFO。同時,頂層實體的VHDL描述程序名稱與實體嚴(yán)格對應(yīng),命名為mFIFO.vhd。項目初選MAXII系列CPLD作為預(yù)定的電路實現(xiàn)器件,圖6.46所示為按照上述方法及過程創(chuàng)建的先入先出電路mFIFO的實現(xiàn)項目及其編譯情況。

6.5.3電路實現(xiàn)

1.項目創(chuàng)建與編譯

利用前圖6.46先入先出(FIFO)存儲電路的項目實現(xiàn)及編譯圖6.46先入先出(FIFO)存儲電路的項目實現(xiàn)及編譯

2.器件、引腳分配

根據(jù)項目編譯結(jié)果,采用開發(fā)工具選定的器件EPM240T100C3能夠滿足堆棧電路需要的邏輯資源數(shù)量與運行速度,同時邏輯單元以及端口的使用狀況,為后續(xù)的邏輯功能擴展、修改以及系統(tǒng)升級能夠提供可能性;使用100腳TQFP封裝更便于焊接、調(diào)測試,因此本例選擇器件EPM240T100C3來實現(xiàn)該項目。

2.器件、引腳分配

根據(jù)項目編譯結(jié)果,采用開發(fā)工具

6.5.4電路功能測試及分析

1.邏輯功能仿真

圖6.47所示為先入先出電路mFIFO的邏輯功能仿真輸入波形文件。

6.5.4電路功能測試及分析

1.邏輯功能仿真

圖6.47先入先出電路mFIFO的仿真輸入圖6.47先入先出電路mFIFO的仿真輸入

圖示仿真輸入中的仿真柵格Grid大小設(shè)置為20

ns,仿真總時長設(shè)置為4?μs。信號\DataCon:iRd的取值大小對應(yīng)于先入先出電路mFIFO的讀指針,與其相對應(yīng),信號\WrProc:iWr的大小對應(yīng)于先入先出電路mFIFO的寫指針。信號D為存儲電路mFIFO并行接口8位雙向數(shù)據(jù)端口的設(shè)定值,信號DATA為電路mFIFO正常工作時8位雙向數(shù)據(jù)端口D的端口變化情況。

圖示仿真輸入中的仿真柵格Grid大小設(shè)置為20ns,

先入先出電路mFIFO的一個完整的存取工作循環(huán)的工作時序仿真如圖6.48所示。在上述仿真激勵作用下的時間段30~450?ns,片選端CS有效,并行接口的寫端口WR連續(xù)產(chǎn)生下降沿,向先入先出電路mFIFO持續(xù)發(fā)出10個寫入信號。此時,數(shù)據(jù)01H~0AH被依次送上數(shù)據(jù)總線DATA。在圖中的40?ns時刻處,WR端口出現(xiàn)低電平,空標(biāo)志Empt清零。當(dāng)D端口上的數(shù)據(jù)寫至08H時,在340?ns時刻的WR上升沿后,mFIFO被寫滿,因此滿標(biāo)志Full置位變成高電平。在數(shù)據(jù)寫入過程中,寫指針?\WrProc:iWr依次增大,增至7后清零。

先入先出電路mFIFO的一個完整的存取工作循環(huán)的工作時圖6.48先入先出電路mFIFO的完整存取工作循環(huán)時序仿真圖6.48先入先出電路mFIFO的完整存取工作循環(huán)時序仿

在時間段490~890

ns內(nèi),片選CS重新變?yōu)榈碗娖角页掷m(xù)有效,讀端口RD連續(xù)發(fā)出讀脈沖,滿標(biāo)志Full被迅速撤銷,先入先出內(nèi)存儲的數(shù)據(jù)01H~08H依次被送上數(shù)據(jù)總線DATA。先寫入的數(shù)據(jù)01H首先送出,最后寫入的數(shù)據(jù)08H被最后送至數(shù)據(jù)總線DATA,符合先入先出的功能定義。數(shù)據(jù)讀出時,讀指針\DataCon:iRd依次增大,達到數(shù)值7后,iRd返回“0”值,mFIFO被讀空,標(biāo)志Empt置位。圖6.49所示為隨機寫入、持續(xù)讀空時mFIFO的工作時序仿真

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論