課程設(shè)計(jì)---基于vhdl的乒乓游戲機(jī)的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  1引言1</b></p><p>  2 VHDL簡(jiǎn)介2</p><p>  2.1 VHDL的特點(diǎn)及優(yōu)點(diǎn)2</p><p><b>  2.2設(shè)計(jì)流圖3</b></p><p&

2、gt;<b>  3模塊設(shè)計(jì)6</b></p><p>  3.1七段數(shù)碼管顯示譯碼器7</p><p>  3.2按鍵去抖電路9</p><p>  3.3狀態(tài)機(jī)設(shè)計(jì)11</p><p>  3.3.1狀態(tài)機(jī)的6種狀態(tài)及狀態(tài)轉(zhuǎn)移11</p><p>  3.3.2狀態(tài)機(jī)/球臺(tái)控制程序

3、12</p><p>  3.4記分器設(shè)計(jì)17</p><p>  4系統(tǒng)硬件測(cè)試20</p><p>  4.1 GW48系統(tǒng)的主要性能和特點(diǎn)20</p><p>  4.2 FPGA目標(biāo)芯片管腳圖20</p><p>  4.3系統(tǒng)的編譯、綜合、適配22</p><p>  4.4

4、系統(tǒng)的有關(guān)仿真24</p><p>  4.5系統(tǒng)的編程配置26</p><p><b>  5結(jié)論28</b></p><p><b>  參考文獻(xiàn)29</b></p><p><b>  致謝30</b></p><p><b>

5、  摘 要</b></p><p>  VHDL是甚高速集成電路硬件描述語(yǔ)言。目前,VHDL已成為許多設(shè)計(jì)自動(dòng)化工具普遍采用的標(biāo)準(zhǔn)化硬件描述語(yǔ)言。VHDL語(yǔ)言功能性強(qiáng),覆蓋面廣,靈活性高,具有很好的實(shí)用性。本文設(shè)計(jì)一個(gè)基于VHDL的乒乓游戲機(jī),乒乓游戲機(jī)由狀態(tài)機(jī)、記分器、譯碼顯示器與按鍵去抖等部分所組成。通過(guò)對(duì)各部分編寫(xiě)VHDL程序,然后進(jìn)行編譯、仿真、邏輯綜合、邏輯適配,最后進(jìn)行編程下載,并且通過(guò)G

6、W48型EDA實(shí)驗(yàn)箱的驗(yàn)證,實(shí)現(xiàn)乒乓游戲機(jī)的基本功能。</p><p>  關(guān)鍵詞:VHDL;GW48;乒乓游戲機(jī)</p><p><b>  Abstract</b></p><p>  VHDL is high speed IC hardware describe language. VHDL already becomes the lan

7、guage of normalizing hardware describe that a lot of design automation implement adopts commonly at present. The VHDL language function is strong. The face covering is broad, flexibility high and have the very good pragm

8、atism. One main body of the book is designed waits for what part group is accomplished owing to that VHDL table tennis game machine, table tennis game machine go to tremble from state machine, marker, d</p><p&

9、gt;  Key words: VHDL; GW48; Table tennis game machine</p><p><b>  1引言</b></p><p>  隨著社會(huì)的進(jìn)步和工業(yè)技術(shù)的發(fā)展,在電子線路設(shè)計(jì)領(lǐng)域中,設(shè)計(jì)自動(dòng)化工具已經(jīng)逐步為設(shè)計(jì)者所接受,成為主要的設(shè)計(jì)手段。目前,VHDL已成為許多設(shè)計(jì)自動(dòng)化工具普遍采用的標(biāo)準(zhǔn)化硬件描述語(yǔ)言,掌握VHDL語(yǔ)言,

10、用VHDL語(yǔ)言設(shè)計(jì)電子線路,是電子線路設(shè)計(jì)者必須掌握的基本技能。VHDL支持?jǐn)?shù)字電路的開(kāi)發(fā)環(huán)境,VHDL也支持各種設(shè)計(jì)方法:自頂向下、自底向上或混合的方法[1]。VHDL語(yǔ)言功能性強(qiáng),覆蓋面大,靈活性高,具有很好的實(shí)用性[2]。本文設(shè)計(jì)一個(gè)基于VHDL的乒乓游戲機(jī),乒乓游戲機(jī)是由5個(gè)發(fā)光二極管代表乒乓球臺(tái),中間的發(fā)光二極管兼作球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定方向移動(dòng)來(lái)表示球的運(yùn)動(dòng)。在游戲機(jī)的兩側(cè)各設(shè)置兩個(gè)開(kāi)關(guān),甲乙二人按乒乓球比賽規(guī)則來(lái)操

11、作開(kāi)關(guān)。本設(shè)計(jì)由譯碼顯示器、記分器、狀態(tài)機(jī)/球臺(tái)控制器與按鍵去抖等部分組成。本設(shè)計(jì)是用實(shí)驗(yàn)箱GW48進(jìn)行模擬乒乓機(jī),用發(fā)光二極管代表乒乓球臺(tái),最中間的發(fā)光二極管作球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定方向移動(dòng)來(lái)表示球的運(yùn)動(dòng),用按鈕設(shè)置發(fā)球和接球開(kāi)關(guān)。</p><p>  設(shè)計(jì)總體要求:乒乓機(jī)能模擬乒乓球比賽的基本過(guò)程和規(guī)則,并能自動(dòng)裁判和記分。</p><p>  本設(shè)計(jì)的主要任務(wù)和要求如下:&l

12、t;/p><p> ?。?)使用乒乓機(jī)的甲乙雙放在不同的位置發(fā)球或擊球。</p><p>  (2)乒乓球的位置和移動(dòng)方向由燈亮及依次點(diǎn)亮的方向決定。球的速度為0.1s-0.5s移動(dòng)1位。球過(guò)網(wǎng),接球方向即可擊球,提前擊球或沒(méi)擊球均判失分。</p><p> ?。?)比賽按21分為一局進(jìn)行,甲乙雙方都應(yīng)設(shè)置自己的記分牌,任何一方先記滿21分,該方就算勝出,按RESET復(fù)

13、位重新開(kāi)局。</p><p><b>  2VHDL簡(jiǎn)介</b></p><p>  VHDL是Very high speed integrated circuit Hardware Description Language的縮寫(xiě),即“甚高速集成電路硬件描述語(yǔ)言”,最初由美國(guó)國(guó)防部和INTER、IBM、TI公司聯(lián)合開(kāi)發(fā),1987年成為IEEE標(biāo)準(zhǔn),即IEEE1076標(biāo)

14、準(zhǔn)(俗稱87版VHDL)[1]。此后,美國(guó)國(guó)防部要求官方與高速集成電路設(shè)計(jì)的所有文檔必須用VHDL描述,因?yàn)閂HDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的應(yīng)用,漸漸成為工業(yè)界的標(biāo)準(zhǔn)。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,公布了新的VHDL標(biāo)準(zhǔn),即IEEE1076-1993版(俗稱93版VHDL)[3]。</p><p>  2.1VHDL的特點(diǎn)及優(yōu)點(diǎn)</p><p>  VHDL具有以下特點(diǎn)[4]

15、:</p><p> ?。?)支持“自頂向下”的設(shè)計(jì)方法:設(shè)計(jì)可按層次分解,采用結(jié)構(gòu)化開(kāi)發(fā)手段,可實(shí)現(xiàn)多人、多任務(wù)的并行工作方式,使系統(tǒng)的設(shè)計(jì)效力大幅提高。</p><p>  (2)系統(tǒng)硬件描述能力強(qiáng):可以同時(shí)支持“行為描述”、“數(shù)字流描述”和“結(jié)構(gòu)描述”3種描述方式,并可混用[5]。其中,強(qiáng)大的“行為描述”能力使設(shè)計(jì)者可以避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)。這一特

16、點(diǎn)使VHDL成為系統(tǒng)設(shè)計(jì)領(lǐng)域中最佳的硬件描述語(yǔ)言。</p><p> ?。?)系統(tǒng)仿真能力強(qiáng):VHDL最初是作為一種仿真標(biāo)準(zhǔn)問(wèn)世的,因此VHDL具有仿真語(yǔ)句和庫(kù)函數(shù)。另外,VHDL強(qiáng)大的“行為描述”能力也使其十分適用于系統(tǒng)級(jí)仿真。</p><p> ?。?)工藝無(wú)關(guān)性[6]:在使用VHDL設(shè)計(jì)系統(tǒng)硬件時(shí),沒(méi)有嵌入與工藝相關(guān)的信息。正因?yàn)閂HDL的硬件描述與具體工藝無(wú)關(guān),因而其程序的硬件實(shí)現(xiàn)

17、目標(biāo)器件有廣闊的選擇范圍,其中包括各種CPLD、FPGA及ASIC等。</p><p>  同時(shí),VHDL具有以下優(yōu)點(diǎn)[7]:</p><p> ?。?)與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力。強(qiáng)大的行為描述能力是避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。就目前流行EDA工具和VHDL綜合器而言,將基于抽象的行為描述風(fēng)格的VHDL程序綜合成為具體

18、FPGA和CPLD等目標(biāo)器件的網(wǎng)表文件已不成問(wèn)題,只是在綜合與優(yōu)化效率上略有差異。</p><p> ?。?)VHDL具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期,就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)系統(tǒng)進(jìn)行仿真模擬,使設(shè)計(jì)者對(duì)整個(gè)工程的結(jié)構(gòu)和功能可行性做出判斷。</p><p> ?。?)VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu),決定了它具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用

19、功能。高效、高速完成符號(hào)市場(chǎng)需求的大規(guī)模系統(tǒng)設(shè)計(jì)必須有多人甚至多個(gè)開(kāi)發(fā)組共同并行工作才能實(shí)現(xiàn)。VHDL中設(shè)計(jì)實(shí)體的概念、程序包的概念、設(shè)計(jì)庫(kù)的概念為設(shè)計(jì)的分解和并行工作提供了有利的支持。</p><p> ?。?)用VHDL完成一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門(mén)級(jí)網(wǎng)表(根據(jù)不同的芯片)。這種方式突破了門(mén)級(jí)設(shè)計(jì)的瓶頸,極大地減少電路設(shè)計(jì)的時(shí)間和可能發(fā)生的錯(cuò)誤,降低

20、了開(kāi)發(fā)成本。利用EDA工具的邏輯優(yōu)化功能,可以自動(dòng)地把一個(gè)綜合后的設(shè)計(jì)變成一個(gè)更小、更高速的電路系統(tǒng)。反過(guò)來(lái),設(shè)計(jì)者還可以容易地從綜合和優(yōu)化的電路獲得設(shè)計(jì)信息,返回去修改VHDL設(shè)計(jì)描述,使之更加完善。</p><p> ?。?)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性。設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管最終設(shè)計(jì)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。正因?yàn)閂HDL的硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無(wú)關(guān),所以VHDL設(shè)計(jì)

21、程序的硬件實(shí)現(xiàn)目標(biāo)器件有廣闊的選擇范圍,其中包括各種系列的CPLD、FPGA及各種門(mén)陣列器件。</p><p> ?。?)VHDL具有類屬描述語(yǔ)句和子程序調(diào)用等功能,對(duì)于完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變類屬參量或函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)。</p><p>  正因?yàn)閂HDL有如此多的特點(diǎn)和優(yōu)點(diǎn),所以本設(shè)計(jì)運(yùn)用VHDL進(jìn)行乒乓球游戲機(jī)軟設(shè)計(jì)。</p>&

22、lt;p><b>  2.2設(shè)計(jì)流圖</b></p><p>  設(shè)計(jì)流程圖如圖1所示。這一流程圖基本可使用任何基本硬件描述語(yǔ)言的設(shè)計(jì)。下面對(duì)這個(gè)流程中的步驟進(jìn)行說(shuō)明[1]:</p><p> ?。?)系統(tǒng)層次劃分/畫(huà)出系統(tǒng)框圖(Hierarchy/Block Diagram):按照“自頂向下”的設(shè)計(jì)方法對(duì)系統(tǒng)進(jìn)行劃分(確定系統(tǒng)由哪些模塊構(gòu)成,各個(gè)模塊又由哪些子

23、模塊構(gòu)成)。</p><p> ?。?)編碼:寫(xiě)出VHDL代碼,大多數(shù)集成開(kāi)發(fā)環(huán)境(如MAX+plus2等)都集成了針對(duì)VHDL的編輯。這些編輯器一般都具有VHDL關(guān)鍵詞的亮點(diǎn)顯示等特點(diǎn),有的還內(nèi)嵌了常用的VHDL程序模塊。</p><p>  圖1 VHDL的設(shè)計(jì)流程圖</p><p>  (3)編譯(Compilation):編譯器會(huì)對(duì)VHDL程序進(jìn)行語(yǔ)法檢查,

24、還會(huì)產(chǎn)生用于仿真的一些內(nèi)部信息。這一步驟通常由編譯器自動(dòng)完成,無(wú)須我們干預(yù)。如果VHDL語(yǔ)言有錯(cuò)誤,編譯無(wú)法通過(guò),則需要修改程序,即回到第(2)步。事實(shí)上,VHDL設(shè)計(jì)過(guò)程中,常常根據(jù)需要往后退一步,甚至更多。</p><p>  (4)功能仿真(Functional Simulation):VHDL仿真器允許定義輸入并應(yīng)用到設(shè)計(jì)中,不必生成實(shí)際電路就可以觀察輸出。此仿真主要用于檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性,不涉及具

25、體器件的硬件特性。</p><p> ?。?)綜合(Synthesis):利用綜合器對(duì)VHDL代碼進(jìn)行綜合優(yōu)化處理,生成門(mén)級(jí)描述的網(wǎng)表文件,這是將VHDL語(yǔ)言描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。這一步通常由綜合器自動(dòng)完成,但設(shè)計(jì)者可以設(shè)定一些技術(shù)上的約束條件(如限定邏輯層次的最大數(shù)等)來(lái)“幫助”綜合器。</p><p> ?。?)適配(Fitting):利用適配器將綜合后的網(wǎng)表文件針對(duì)某一具體的

26、目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化、布局布線等。</p><p>  此步驟將產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:①適配報(bào)告,包括芯片內(nèi)部資源的利用情況、設(shè)計(jì)的布爾方程描述情況等;②適配后的仿真模型;③器件編程文件。</p><p> ?。?)時(shí)序仿真(Timing Simulation):根據(jù)適配后的仿真模型,可以進(jìn)行時(shí)序仿真。因?yàn)檫@時(shí)已經(jīng)得到目標(biāo)器件的實(shí)際硬件特性(如時(shí)延特性

27、等),所以仿真結(jié)果能比較精確的預(yù)期芯片的實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就需要修改VHDL源代碼或選擇不同的目標(biāo)器件,甚至要重構(gòu)整個(gè)系統(tǒng),圖1就是所設(shè)計(jì)者極力避免出現(xiàn)的情況。</p><p> ?。?)下載CPLD/FPGA(Programming):如果時(shí)序仿真通過(guò),就可將“適配”時(shí)產(chǎn)生的器件編程文件下載到CPLD或FPGA中(FPGA的編程通過(guò)被稱為“配置”)。雖然流程圖中未標(biāo)出從此步“往回走”的箭頭,

28、但事實(shí)上,實(shí)際的結(jié)果有可能與仿真結(jié)果有差異(可能是設(shè)計(jì)時(shí)未考慮到外部硬件的實(shí)際情況;也可能是由于仿真時(shí)測(cè)試的條件不夠多,沒(méi)有發(fā)現(xiàn)其中隱藏的錯(cuò)誤),這時(shí),必須回頭重新找出問(wèn)題所在。</p><p><b>  3模塊設(shè)計(jì)</b></p><p>  乒乓游戲機(jī)的組成示意圖如圖2所示。</p><p>  圖2 乒乓游戲機(jī)的組成示意圖</p&

29、gt;<p>  本設(shè)計(jì)中的乒乓游戲機(jī)是由5個(gè)發(fā)光二極管代表乒乓球臺(tái),中間的發(fā)光二極管兼作球網(wǎng),用點(diǎn)亮的發(fā)光二極管按一定方向移動(dòng)來(lái)表示球的運(yùn)動(dòng)。在游戲機(jī)的兩側(cè)各設(shè)置兩個(gè)開(kāi)關(guān),一個(gè)是發(fā)球開(kāi)關(guān)STARTA、STARTB;另一個(gè)是擊球開(kāi)關(guān)HITA、HITB。甲乙二人按乒乓球比賽規(guī)則來(lái)操作開(kāi)關(guān)。當(dāng)甲方按動(dòng)發(fā)球開(kāi)關(guān)STARTA時(shí),靠近甲方的第一個(gè)發(fā)光二極管亮,然后發(fā)光二極管由甲向乙依次點(diǎn)亮,代表乒乓球的移動(dòng)。當(dāng)球過(guò)網(wǎng)后按設(shè)計(jì)者規(guī)定的

30、球位,乙方就可以擊球。若乙方提前擊球或沒(méi)有擊中球,則判乙方失分,甲方的記分牌自動(dòng)加一分。然后重新發(fā)球,比賽繼續(xù)進(jìn)行。比賽一直要進(jìn)行到一方記分牌達(dá)到21分,該局才結(jié)束。本設(shè)計(jì)由譯碼顯示器、按鍵去抖、狀態(tài)機(jī)/球臺(tái)控制器和記分器等部分所組成。本系統(tǒng)的邏輯分框圖如圖3所示。</p><p>  圖3 系統(tǒng)邏輯分框圖</p><p>  3.1七段數(shù)碼管顯示譯碼器</p><p&

31、gt;  七段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進(jìn)制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運(yùn)算都是2進(jìn)制的,所以輸出表達(dá)都是16進(jìn)制的,為了滿足16進(jìn)制數(shù)的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實(shí)現(xiàn)。七段數(shù)碼管分為共陰極和共陽(yáng)極兩種[8]。簡(jiǎn)而言之,對(duì)共陰極來(lái)說(shuō),公共引腳要接地,想要點(diǎn)亮某段數(shù)碼管,就在相應(yīng)的引腳加上高電平;對(duì)共陰極來(lái)說(shuō)剛好相反,公共引腳提高電平,想

32、要點(diǎn)亮某段數(shù)碼管,就在相應(yīng)的引腳加上低電平[9]。七段BCD碼譯碼器的設(shè)計(jì),輸出信號(hào)LED7S的7位分別接如圖4所示數(shù)碼管的七個(gè)段,高位在左,低位在右[9]。例如當(dāng)LED7S輸出為“1101101” 時(shí),數(shù)碼管的7個(gè)段:g、f、e、d、c、b、a分別接1、1、0、1、1、0、1,接有高電平的段發(fā)亮,于是數(shù)碼管顯示“5”。</p><p>  帶使能信號(hào)EN的譯碼電路的VHDL程序中,EN為高電平時(shí),譯碼器正常工作

33、;EN為低電平時(shí),譯碼器輸出0000000,表示數(shù)碼管無(wú)顯示。用選擇信號(hào)賦值語(yǔ)句描述,將綜合成組合邏輯電路。</p><p>  圖4 共陰數(shù)碼管及電路</p><p>  圖5 多模塊共同控制七段數(shù)碼管譯碼電路示意圖</p><p>  帶使能信號(hào)EN的譯碼電路的VHDL程序如下:</p><p>  LIBRARY IEEE;</p

34、><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY DISPLAY IS </p><p><b>  PORT</b></p><p>  (EN: IN STD_LOGIC;</p><p>  NUM: IN INTEGER RANGE 0

35、TO 15;</p><p>  DISPLAY: OUT STD_LOGIC_VECTOR (0 TO 6));</p><p><b>  END;</b></p><p>  ARCHITECTURE DECODER OF DISPLAY IS</p><p><b>  BEGIN</b>&

36、lt;/p><p>  PROCESS (EN, NUM)</p><p><b>  BEGIN</b></p><p>  IF EN=’ 1 ’ THEN --使能信號(hào)EN為1時(shí),譯碼器正常工作</p><p>  CASE NUM IS</p><p>

37、;  WHEN 0=>DISPLAY<=”1111110”;</p><p>  WHEN 1=>DISPLAY<=”0110000”;</p><p>  WHEN 2=>DISPLAY<=”1101101”;</p><p>  WHEN 3=>DISPLAY<=”1111001”;</p><

38、p>  WHEN 4=>DISPLAY<=”0110011”;</p><p>  WHEN 5=>DISPLAY<=”1011011”;</p><p>  WHEN 6=>DISPLAY<=”0011111”;</p><p>  WHEN 7=>DISPLAY<=”1110000”;</p>

39、<p>  WHEN 8=>DISPLAY<=”1111111”;</p><p>  WHEN OTHERS=>DISPLAY<=”0000000”;</p><p>  END CASE; </p><p><b>  ELSE</b></p><p>  DISPLAY<=”

40、0000000”; --EN為0,數(shù)碼管無(wú)顯示</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p>  值得注意的是,本程序是組合邏輯電路,PROCESS

41、的敏感信號(hào)參數(shù)表中一定要有NUM;否則編譯時(shí)會(huì)提示如下出錯(cuò)信息:“Else Clause following a Clock edge must hold the state of signal ‘Display’”。</p><p>  出現(xiàn)此提示信息的原因是:綜合器將EN誤判為時(shí)鐘信號(hào),并試圖將程序綜合成時(shí)序邏輯電路,但該程序的格式又不符合綜合器對(duì)時(shí)鐘信號(hào)描述的要求,因此無(wú)法綜合。</p>&l

42、t;p><b>  3.2按鍵去抖電路</b></p><p>  鍵盤(pán)的按鍵閉合與釋放瞬間,輸入的信號(hào)會(huì)有毛刺。如果不進(jìn)行消抖處理,系統(tǒng)會(huì)將這些毛刺誤以為是用戶的另一次輸入,導(dǎo)致系統(tǒng)的誤操作。防抖電路有很多種,最簡(jiǎn)單、最容易理解的就是計(jì)數(shù)法。其原理是對(duì)鍵值進(jìn)行計(jì)數(shù),當(dāng)某一鍵值保持一段時(shí)間不改變時(shí)(計(jì)數(shù)器達(dá)到一定值后),才確認(rèn)它為有效值;否則將其判為無(wú)效鍵值,重新對(duì)鍵值進(jìn)行計(jì)算[2]。

43、</p><p>  下面是基于計(jì)數(shù)法的防抖電路程序:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTUTY ANTITWITTER IS</p><p><b>  PORT</b><

44、/p><p>  (CLOCK: IN STD_LOGIC;</p><p>  NUMIN: IN INTEGER RANGE 0 TO 15;</p><p>  NUMOUT: OUT INTEGER RANGE 0 TO 15);</p><p><b>  END;</b></p><p>

45、  ARCHITECTURE BEHAVIOR OF ANTITWITTER IS</p><p>  SIGNAL TEMPNUM: INTEGER RANGE 0 TO 15;</p><p>  SIGNAL COUNTER: INTEGER RANGE 0 TO 31;</p><p>  SIGNAL START: STD_LOGIC;</p>

46、<p><b>  BEGIN</b></p><p>  PROCESS (CLOCK)</p><p><b>  BEGIN</b></p><p>  IF RISING_EDGE (CLOCK) THEN</p><p>  IF START=‘0’THEN

47、 --上電后立即對(duì)輸出的鍵值賦予無(wú)效值</p><p>  TEMPNUM<=15; --此處沿將15作為無(wú)效值</p><p>  NUMOUT<=15; --此無(wú)效值務(wù)必隨實(shí)際情況改變</p><p>  START <= ‘1’;</p><p

48、><b>  ELSE</b></p><p>  IF NUMIN<=TEMPNUM THEN --上一鍵值與此鍵值不同</p><p>  TENPNUM<=NUMIN; --記錄此鍵值</p><p>  COUNTER<= ‘0’; --并對(duì)計(jì)數(shù)器清0,準(zhǔn)備對(duì)此鍵

49、值計(jì)時(shí)</p><p><b>  ELSE </b></p><p>  IF COUNTER31 THEN; --當(dāng)鍵值保持31個(gè)時(shí)鐘周期不變時(shí)</p><p>  NUMOUT<=NUMIN; --即確定為有效鍵值,并輸出</p><p>  COUNTER<= ‘0’;&

50、lt;/p><p><b>  ELSE</b></p><p>  COUNTER<=COUNTER+1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b>  

51、END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p><b>  3.3狀態(tài)機(jī)設(shè)計(jì)</b></p><p>  

52、3.3.1狀態(tài)機(jī)的6種狀態(tài)及狀態(tài)轉(zhuǎn)移</p><p>  本狀態(tài)機(jī)有6種狀態(tài),分別是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含義如表1所示。</p><p>  表1 狀態(tài)機(jī)的6種狀態(tài)及含義</p><p>  結(jié)合表1,從圖6中很清楚地看出乒乓游戲機(jī)比賽過(guò)程中球的移動(dòng)情況,及加分方法,還可以初步了解到本狀態(tài)機(jī)設(shè)

53、計(jì)的基本思路。</p><p>  圖6 乒乓游戲機(jī)狀態(tài)轉(zhuǎn)移圖</p><p>  3.3.2狀態(tài)機(jī)/球臺(tái)控制程序</p><p>  狀態(tài)機(jī)是種很重要的時(shí)序電路,也是本設(shè)計(jì)的核心部件。狀態(tài)機(jī)屬于時(shí)序電路范疇,實(shí)現(xiàn)一個(gè)控制功能更為方便,并提高了控制速度[10]。本次設(shè)計(jì)中狀態(tài)機(jī)的符號(hào)如圖7所示。</p><p><b>  圖7 狀

54、態(tài)機(jī)符號(hào)</b></p><p>  在本設(shè)計(jì)中,狀態(tài)機(jī)用兩個(gè)信號(hào)表示狀態(tài):STATE表示當(dāng)前狀態(tài), TABLESTATE表示下一個(gè)狀態(tài)。此狀態(tài)機(jī)由兩個(gè)進(jìn)程構(gòu)成,狀態(tài)機(jī)的輸入/輸出引腳的作用如表2所示。其中SCOREAL[3..0]、SCOREAH[3..0]、SCOREBL[3..0]、SCOREBH[3..0]用七段BCD碼譯碼器顯示得分情況,而SCOREA、SCOREB用二進(jìn)制進(jìn)行加分,由記分器

55、反饋回來(lái)。</p><p>  表2 輸入/輸出引腳的作用</p><p><b>  狀態(tài)機(jī)的程序如下:</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC

56、_UNSIGNED.ALL;</p><p>  ENTITY STATEMACHINE IS</p><p>  PORT (CLK: IN STD_LOGIC;</p><p>  RESET: IN STD_LOGIC;</p><p>  STARTA, HITA, STARTB, HITB: IN STD_LOGIC;</p&

57、gt;<p>  SCOREA, SCOREB: IN INTEGER RANGE 0 TO 21;</p><p>  CLEAR, INCREASEA, INCREASEB: OUT STD_LOGIC;</p><p>  TABLELIGHT: OUT STD_LOGIC_VECTOR (0 TO 4);</p><p>  AWIN, BWI

58、N: OUT STD_LOGIC);</p><p><b>  END;</b></p><p>  ARCHITECTURE BEHAVIOR OF STATEMACHINE IS</p><p>  TYPE STATE_TYPE IS (WAITSTATE, ATOB, BTOA, ASCORE, BSCORE, FINALRESULT

59、);</p><p>  SIGNAL STATE: STATE_TYPE;</p><p>  SIGNAL TABLESTATE: INTEGER RANGE 0 TO 4;</p><p><b>  BEGIN</b></p><p>  PROCESS (CLK, RESET)</p><p

60、><b>  BEGIN</b></p><p>  IF RESET='1' THEN --按下復(fù)位鍵,比賽開(kāi)始</p><p>  STATE<=WAITSTATE; --進(jìn)入等待狀態(tài)</p><p>  CLEAR<='1

61、9;; --記分器清零</p><p>  AWIN<='0';</p><p>  BWIN<='0';</p><p>  ELSIF RISING_EDGE (CLK) THEN</p><p>  CASE STATE IS</p>

62、<p>  WHEN WAITSTATE=></p><p>  CLEAR<='0';</p><p>  INCREASEA<='0';</p><p>  INCREASEB<='0';</p><p>  IF((SCOREA =21 ) OR (SC

63、OREB=21))THEN--如果一方先得到21分</p><p>  STATE<=FINALRESULT; --比賽結(jié)束 </p><p><b>  ELSE</b&

64、gt;</p><p>  IF STARTA='1'THEN --如果A開(kāi)球</p><p>  STATE<=ATOB; --球從A向B方移動(dòng)</p><p>  TABLESTATE<=0; --A方第一個(gè)燈點(diǎn)亮&

65、lt;/p><p><b>  ELSE</b></p><p>  IF STARTB='1'THEN --如果B開(kāi)球(A、B開(kāi)球有</p><p><b>  --定的優(yōu)先級(jí)區(qū)別</b></p><p>  STATE<=BTOA;

66、 --球從B向A方移動(dòng)</p><p>  TABLESTATE<=4; --B方第一個(gè)燈亮</p><p><b>  ELSE</b></p><p>  STATE<=WAITSTATE;</p><p><b>  END IF;&

67、lt;/b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  WHEN ATOB=> --球從A向B移動(dòng)的過(guò)程</p><p>  IF HITB='1'TH

68、EN --如果檢測(cè)到B方擊球</p><p>  IF TABLESTATE<=2 THEN --若未過(guò)網(wǎng)提前擊球</p><p>  STATE<=ASCORE; --判為A勝</p><p>  ELSE </p><p&

69、gt;  STATE<=BTOA; --若過(guò)了網(wǎng)擊球,球從B</p><p><b>  --向A移動(dòng)</b></p><p><b>  END IF;</b></p><p>  ELSE --若未檢測(cè)到B方擊球</p>

70、;<p>  IF TABLESTATE=4 THEN --如果離B方最近的燈</p><p><b>  --已經(jīng)亮</b></p><p>  STATE<=ASCORE; --判為A勝</p><p><b>  ELSE</b></p>

71、<p>  TABLESTATE<=TABLESTATE+1; --否則球繼續(xù)移動(dòng)</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  WHEN BTOA=> --球從B向A移動(dòng)的過(guò)程&

72、lt;/p><p>  IF HITA='1'THEN --如果檢測(cè)A方擊球</p><p>  IF TABLESTATE>=2 THEN --若未過(guò)網(wǎng)提前擊球</p><p>  STATE<=BSCORE; --判為B勝</p><p&g

73、t;  ELSE --若過(guò)了網(wǎng)擊球,球從A</p><p>  STATE<=ATOB; --向B移動(dòng)</p><p><b>  END IF;</b></p><p>  ELSE --若未檢

74、測(cè)到A擊球</p><p>  IF TABLESTATE=0 THEN --如果離A最近的燈亮了</p><p>  STATE<=BSCORE; --判為B勝</p><p><b>  ELSE</b></p><p>  TABLESTATE<=TABLES

75、TATE-1; --否則球繼續(xù)移動(dòng)</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  WHEN ASCORE=> --如果A勝</p><p>  INCREASEA<=

76、9;1'; --A方加1分</p><p>  STATE<=WAITSTATE; --回到等待開(kāi)球狀態(tài)</p><p>  WHEN BSCORE=> --如果B勝</p><p>  INCREASEB<='1';

77、 --B方加1分</p><p>  STATE<=WAITSTATE; --回到等待開(kāi)球狀態(tài)</p><p>  WHEN FINALRESULT=> --最后結(jié)果</p><p>  IF(SCOREA=21) THEN --若A方先達(dá)到21分&

78、lt;/p><p>  AWIN<='1'; --表示A方勝出的燈亮</p><p><b>  ELSE</b></p><p>  BWIN<='1'; --否則,表示B方勝出的燈亮</p><p>

79、;<b>  END IF;</b></p><p>  WHEN OTHERS=></p><p>  STATE<=WAITSTATE;</p><p><b>  END CASE;</b></p><p><b>  END IF;</b></p>

80、;<p>  END PROCESS;</p><p>  PROCESS(CLK) --此進(jìn)程控制5個(gè)發(fā)光二極管的亮滅</p><p><b>  BEGIN</b></p><p>  IF FALLING_EDGE (CLK) THEN <

81、/p><p>  IF ((STATE=ATOB) OR (STATE=BTOA)) THEN</p><p>  CASE TABLESTATE IS</p><p>  WHEN 0=>TABLELIGHT<="10000";</p><p>  WHEN 1=>TABLELIGHT<="

82、01000";</p><p>  WHEN 2=>TABLELIGHT<="00100";</p><p>  WHEN 3=>TABLELIGHT<="00010";</p><p>  WHEN 4=>TABLELIGHT<="00001";</p&

83、gt;<p>  WHEN OTHERS=>TABLELIGHT<="00000";</p><p><b>  END CASE;</b></p><p><b>  ELSE</b></p><p>  TABLELIGHT<="00000";&l

84、t;/p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p><b>  3.4記分器設(shè)計(jì)<

85、;/b></p><p>  圖8 記分器元件符號(hào)</p><p>  記分器元件符號(hào)如圖8所示,本設(shè)計(jì)中記分器比較簡(jiǎn)單,只須根據(jù)狀態(tài)機(jī)給出的兩個(gè)信號(hào)(INCREASEA和INCREASEB)對(duì)六個(gè)分?jǐn)?shù)(SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB)進(jìn)行操作,記分器的程序如下:</p><p>  LIBRARY

86、IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY COUNTER IS</p><p>  PORT (CLK: IN STD_LOGIC;</p><p> 

87、 CLEAR: IN STD_LOGIC;</p><p>  INCREASEA, INCREASEB: IN STD_LOGIC;</p><p>  SCOREAL, SCOREAH, SCOREBL, SCOREBH: BUFFER</p><p>  STD_LOGIC_VECTOR (3 DOWNTO 0)</p><p>  S

88、COREA,SCOREB:BUFFER INTRGER RANGE 0 TO 21);</p><p><b>  END;</b></p><p>  ARCHITECTURE COUNT OF COUNTER IS</p><p><b>  BEGIN</b></p><p>  PROCES

89、S (CLK, CLEAR) IS</p><p><b>  BEGIN</b></p><p>  IF CLEAR='1' THEN --清0</p><p>  SCOREAL<="0000";</p><p>  SCOREA

90、H<="0000";</p><p>  SCOREBL<="0000";</p><p>  SCOREBH<="0000";</p><p>  SCORES<=0;</p><p>  SCOREB<=0;</p><p>

91、  ELSIF FALLING_EDGE (CLK) THEN</p><p>  IF INCREASEA='1' THEN --A方加1分</p><p>  IF SCOREAH<"0010" THEN --若高位小于2</p><p>  IF SCOREAL<

92、;"1001" THEN --如果低位小于9</p><p>  SCOREAL<=SCOREAL+1; --則低位加1</p><p>  ELSE SCOREAL<="0000"; --當(dāng)?shù)臀粸?,則清0</p><p>  SCOREAH<=SCO

93、REAH+1; --高位加1</p><p><b>  END IF;</b></p><p>  ELSIF SCOREAH<= "0010" THEN --若高位為2</p><p>  IF SCOREAL<"0001" THEN --如果低位小于

94、1</p><p>  SCOREAL<=SCOREAL+1; --則低位加1</p><p>  ELSE SCOREAL<="0000"; --否則高位、低位都清0</p><p>  SCOREAH<="0000";</p><p><

95、;b>  END IF;</b></p><p><b>  END IF;</b></p><p>  SCOREA<=SCOREA+1;</p><p>  ELSIF INCREASEB='1' THEN</p><p>  IF SCOREBH<2 THEN

96、 --若高位小于2</p><p>  IF SCOREBL<"1001" THEN --如果低位小于9</p><p>  SCOREBL<=SCOREBL+1; --則低位加1</p><p>  ELSE SCOREBL<="0000";

97、 --當(dāng)?shù)臀粸?,則清0</p><p>  SCOREBH<=SCOREBH+1; --高位加1</p><p><b>  END IF;</b></p><p>  ELSIF SCOREBH<="0010" THEN --若高位為2</p>&l

98、t;p>  IF SCOREBL<"0001" THEN --如果低位小于1</p><p>  SCOREBL<=SCOREBL+1; --則低位加1</p><p>  ELSE SCOREBL<="0000"; --否則高位、低位都清0</p>

99、<p>  SCOREBH<="0000";</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  SCOREB<=SCOREB+1;</p><p><b>  END IF

100、;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p>  編寫(xiě)VHDL源程序后,不能將設(shè)計(jì)文本存入根目錄下,本設(shè)計(jì)都存在文件夾CHENLY中,還要注意設(shè)計(jì)文本的后綴名一定

101、是“.VHD”,編寫(xiě)時(shí)一定要注意實(shí)體名跟設(shè)計(jì)文件名一致,這些是程序能順利進(jìn)行編輯和編譯、邏輯綜合、邏輯適配、編程下載成功的最重要的前提條件。</p><p><b>  4系統(tǒng)硬件測(cè)試</b></p><p>  4.1GW48系統(tǒng)的主要性能和特點(diǎn)</p><p> ?。?)GW48系統(tǒng)設(shè)有通用的系統(tǒng)編程下載電路,可對(duì)Lattice、Xilin

102、x、Vantis、Altera、Atmel和Cypress等世界六大PLD公司各種ISP編程下載方式或現(xiàn)場(chǎng)配置的CPLD/FPGA系列器件進(jìn)行實(shí)驗(yàn)或開(kāi)發(fā)。其主系統(tǒng)板與芯片板都采用接插式結(jié)構(gòu),動(dòng)態(tài)電路結(jié)構(gòu)自動(dòng)切換工作方式,含有可自動(dòng)切換的12種實(shí)驗(yàn)電路結(jié)構(gòu)模式。</p><p>  (2)GW48系統(tǒng)基于“電路重構(gòu)軟件配置”的設(shè)計(jì)思想,采用了I/O口可任意定向目標(biāo)板的智能化電路結(jié)構(gòu)設(shè)計(jì)方案,利用在系統(tǒng)微控制器對(duì)I/

103、O口進(jìn)行任意定向設(shè)置和控制,從而實(shí)現(xiàn)了CPLD/FPGA目標(biāo)芯片I/O口與實(shí)驗(yàn)輸入/輸出資源以各種不同方式連接來(lái)構(gòu)造形式各異的實(shí)驗(yàn)電路的目的。</p><p> ?。?)GW48充實(shí)豐富的實(shí)驗(yàn)資源外,還擴(kuò)展了A/D、D/A、VGA視頻、PS/2接口、RS232通信、單片機(jī)獨(dú)立用戶系統(tǒng)編程下載接口、48MHz高頻時(shí)鐘源及在板數(shù)字頻率計(jì),在其上可完成200多種基于FPGA和CPLD的各類電子設(shè)計(jì)和數(shù)字系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)與開(kāi)

104、發(fā)項(xiàng)目,從而能使實(shí)驗(yàn)更接近實(shí)際的工程設(shè)計(jì)[8]。</p><p>  4.2FPGA目標(biāo)芯片管腳圖</p><p>  設(shè)計(jì)所用的GW48實(shí)驗(yàn)箱中,適配的目標(biāo)芯片為ALTERA類中FLEX10K系列的EPF10K10,EPF10K10LC84型號(hào)的芯片有84個(gè)引腳[11],如圖9所示,本設(shè)計(jì)中用到的引腳情況如下:</p><p>  (1)CLK:時(shí)鐘信號(hào),決定球的

105、移動(dòng)速度,對(duì)應(yīng)實(shí)驗(yàn)箱中的輸入時(shí)鐘選擇模塊中的CLOCK0。對(duì)應(yīng)芯片引腳2。</p><p>  (2)RESET:復(fù)位鍵,對(duì)應(yīng)實(shí)驗(yàn)箱的鍵1,對(duì)應(yīng)芯片的引腳5。</p><p>  (3)STARTA、STARTB:開(kāi)球鍵,分別對(duì)應(yīng)實(shí)驗(yàn)箱的鍵4、鍵7,分別對(duì)應(yīng)芯片的引腳8、11。</p><p>  (4)HITA、HITB:擊球鍵,分別對(duì)應(yīng)實(shí)驗(yàn)箱的鍵5、鍵8,分別對(duì)

106、應(yīng)芯片的引腳9、16。</p><p>  (5)L0、L1、L2、L3、L4:代表乒乓球臺(tái),L2為球網(wǎng),分別對(duì)應(yīng)發(fā)光二極管的D1、D2、D3、D4、D5,分別對(duì)應(yīng)芯片引腳17、18、19、21、22。</p><p>  (6)AWIN、BWIN:表示A、B勝出的標(biāo)志,分別接二極管D7、D8,哪個(gè)先點(diǎn)亮,說(shuō)明該方已經(jīng)得里21分,分別對(duì)應(yīng)芯片引腳24、25。</p><

107、p>  (7)AL0、AL1、AL2、AL3:顯示A方得分情況中個(gè)位上的分值,對(duì)應(yīng)數(shù)碼管1,分別對(duì)應(yīng)芯片引腳27、28、29、30。</p><p>  (8)AH0、AH1、AH2、AH3:顯示A方得分情況中十位上的分值,對(duì)應(yīng)數(shù)碼管2,分別對(duì)應(yīng)芯片引腳35、36、37、38。</p><p>  (9)BL0、BL1、BL2、BL3:顯示B方得分情況中個(gè)位上的分值,對(duì)應(yīng)數(shù)碼管3分別

108、對(duì)應(yīng)芯片引腳39、47、48、49。</p><p>  (10)BH0、BH1、BH2、BH3:顯示B方得分情況中十位上的分值,對(duì)應(yīng)數(shù)碼管4,對(duì)應(yīng)芯片引腳50、51、52、53。</p><p>  圖9 目標(biāo)芯片頂面圖</p><p>  4.3系統(tǒng)的編譯、綜合、適配</p><p>  頂層文件元件連接PINGPANG.GDF,如圖10

109、所示,模塊STATEMACHINE1是狀態(tài)機(jī)/球臺(tái)控制,當(dāng)復(fù)位鍵為低電平時(shí),若A方(STARTA)或B方(STARTB)開(kāi)始發(fā)球,模塊LIGHT的發(fā)光二極管L0、L1、L2、L3、L4在下降沿來(lái)臨時(shí)正向或反向依次點(diǎn)亮,當(dāng)有方得分時(shí),將啟動(dòng)加分信號(hào)INCREASEA、INCREASEB,同時(shí)啟動(dòng)記分器模塊COUNTER1,加分情況將通過(guò)四個(gè)數(shù)碼管來(lái)顯示,并將其反饋回狀態(tài)機(jī)模塊,當(dāng)有一方先達(dá)到21時(shí),其對(duì)應(yīng)的勝分標(biāo)志發(fā)光二極管將被點(diǎn)亮。&l

110、t;/p><p>  在按鍵與CPLD相連的引腳需要設(shè)置下拉電阻(300~1000Ω即可)以便在沒(méi)有按鍵按下時(shí)將輸入也穩(wěn)定在低電平,否則系統(tǒng)會(huì)不穩(wěn)定。</p><p>  (1)設(shè)置頂層文件:在編譯系統(tǒng)文件PINGPANG.GDF之前,需要設(shè)置該文件為頂層文件Project(工程文件)。選擇菜單“File”→ “Project”→ “Set Project to Current File”,當(dāng)

111、前的工程,即被設(shè)為PINGPANG。首先通過(guò)選擇“MAX+PIUS II” → “Compiler”菜單,進(jìn)入編輯窗。</p><p> ?。?)選擇目標(biāo)器件及鎖定引腳:先選擇用編程的目標(biāo)芯片。選擇菜單“Assign”→“Device…”在彈出的對(duì)話框中的“Device Family”下拉欄中選擇“FLEX10”,然后在“Devices”列表框中選擇芯片型號(hào)“EPF10K10-PLCC84”,按“OK”。<

112、/p><p>  選擇菜單“Assign” →“Pin/Location/Chip…”彈出一個(gè)對(duì)話框來(lái)設(shè)置引腳。在“Pin”右邊的下拉欄中選擇芯片引腳號(hào),然后按下“Add”按鈕,就會(huì)在下面的子窗口出現(xiàn)引腳設(shè)定說(shuō)明語(yǔ)句,當(dāng)前的一個(gè)引腳設(shè)置就加到了列表中。如果是總線形式的引腳名,也應(yīng)分別寫(xiě)出總線中的每一個(gè)信號(hào)引腳設(shè)定,頂層文件引腳鎖定文件為PINGPANG.PPN,如表3所示。</p><p> 

113、 圖10 乒乓游戲機(jī)頂層文件連接圖</p><p>  4.4系統(tǒng)的有關(guān)仿真</p><p> ?。?)建立仿真波形文件:選擇菜單“File”→ “New”對(duì)話框中選擇“Waveform Editor file”,按“OK”后將出現(xiàn)波形編輯器子窗口。選擇菜單“Node”→“Enter Nodes from SNF”,出現(xiàn)選擇結(jié)點(diǎn)對(duì)話框。按右上側(cè)的“List”按鈕,左邊的列表框?qū)⒘⒓戳谐鏊?/p>

114、可以選擇的信號(hào)結(jié)點(diǎn),然后按中間的“=>”按鈕,將左邊列表框的結(jié)點(diǎn)全部選中到右邊的列表框。按“OK”按鈕,選中的信號(hào)將出現(xiàn)在波形編輯器中[12]。其中有全部的輸入信號(hào)CLK、RESET、STARTA、HITA、STARTB、HITB,輸出信號(hào)L0、L1、L2、L3、L4、AL0 、AL1、AL2、AL3、AH0、AH1、AH2、AH3、BL0、BL1、BL2、BL3、BH0、BH1、BH2、BH3、AWIN、BWIN。最后通過(guò)菜單“

115、File”→ “Save”在彈出的窗口中將波形文件存在同一個(gè)目錄下,文件取名為PINGPANG.SCF。</p><p> ?。?)設(shè)置輸入信號(hào)波形:波形觀察左排按鈕是用于設(shè)置輸入信號(hào)的,使用時(shí)只要先用鼠標(biāo)在輸入波形上拖一個(gè)需要改變的黑色區(qū)域,然后單擊左排相應(yīng)按鈕即可。其中“0”、 “1”、“X”、“Z”、“INV”、“G”分別表示低電平、高電平、任意、高電阻、反相和總線數(shù)據(jù)設(shè)置。時(shí)鐘信號(hào)用鼠標(biāo)點(diǎn)時(shí)鐘信號(hào)的“VA

116、LUE”區(qū)域,可以將時(shí)鐘信號(hào)選中。這時(shí)時(shí)鐘信號(hào)的波形區(qū)域全都變成黑色,按集成環(huán)境左邊上的時(shí)鐘按鈕,將出現(xiàn)時(shí)鐘信號(hào)設(shè)置對(duì)話框,按下“OK”,即可設(shè)置時(shí)鐘信號(hào)。按集成環(huán)境右邊的“縮小”按鈕,可以隨小波形顯示,以便在仿真時(shí)能夠?yàn)g覽波形全貌。根據(jù)需要將各輸入信號(hào)進(jìn)行設(shè)置,并保存。 </p><p> ?。?)運(yùn)行仿真器進(jìn)行仿真:選擇菜單“MAX+PIUSⅡ”→“Simulator”,按下

117、“Simulator”,出現(xiàn)仿真參數(shù)設(shè)置與仿真啟動(dòng)窗。這時(shí)按一下該窗口中的“Start”按鈕,即進(jìn)行仿真運(yùn)算,當(dāng)仿真結(jié)果顯示“0 errors,0 warnings”,表示仿真運(yùn)算結(jié)束。仿真結(jié)果可以確認(rèn)設(shè)計(jì)正確。本系統(tǒng)含有時(shí)鐘信號(hào),希望在不改變輸入時(shí)鐘信號(hào)周期的條件下,延長(zhǎng)運(yùn)算時(shí)間,所以進(jìn)行下面設(shè)置:在波形編輯窗口打開(kāi)的情況下,選擇“File”→“END Time”,在彈出的窗口中設(shè)置仿真結(jié)束時(shí)間,按“OK”按鈕,選擇菜單“MAX+PL

118、USⅡ”→“Simulator”,在“Simulator”子窗口“END Time”處設(shè)置同一時(shí)間長(zhǎng)度。然后啟動(dòng)仿真操作,結(jié)束后可觀察仿真波形。如果在開(kāi)始沒(méi)有打開(kāi)波形觀察窗,可選擇“File”→“Open”,然后在彈出一名為“Open”的窗口中選擇“Waveform Editor file”,并在“Files”窗口彈出的波形文件名PINGPANG.SCF上雙擊,即可進(jìn)入波形觀察窗,如圖11所示。</p><p>

119、  表3 PINGPANG.PPN的設(shè)計(jì)過(guò)程</p><p><b>  續(xù)表3</b></p><p><b>  圖11 仿真波形圖</b></p><p>  4.5系統(tǒng)的編程配置</p><p>  編程器型號(hào)的選擇方法是啟動(dòng)“Programmer”,選菜單“Option”→“Hardwa

120、re Setup”,在“Hardware Type”下拉窗中選“ByteBlaster(MV)”,按“OK”即可。用鼠標(biāo)雙擊編譯器子窗口的下載圖標(biāo),可調(diào)出編程器(Programmer)窗口。在將設(shè)計(jì)文件編程配置(對(duì)此FPGA下載稱為配置)進(jìn)硬件芯片前,需連接好硬件測(cè)試系統(tǒng)。將實(shí)驗(yàn)板接好,接好電源,一切準(zhǔn)備就緒后,方可按下編程器窗口中的“Configure”按鈕??蓪⑺O(shè)計(jì)的內(nèi)容下載到芯片中。下載成功后將在一彈出的窗口中顯示“Config

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論