【正文】
條件(如限定邏輯層次的最大數(shù)等)來“幫助”綜合器。因為這時已經(jīng)得到目標器件的實際硬件特性(如時延特性等),所以仿真結果能比較精確的預期芯片的實際性能。2.模塊設計乒乓游戲機的組成示意圖如圖2所示。當甲方按動發(fā)球開關STARTA時,靠近甲方的第一個發(fā)光二極管亮,然后發(fā)光二極管由甲向乙依次點亮,代表乒乓球的移動。比賽一直要進行到一方記分牌達到21分,該局才結束。七段數(shù)碼管分為共陰極和共陽極兩種[8]。帶使能信號EN的譯碼電路的VHDL程序中,EN為高電平時,譯碼器正常工作;EN為低電平時,譯碼器輸出0000000,表示數(shù)碼管無顯示。ENTITY DISPLAY IS PORT(EN: IN STD_LOGIC。BEGINPROCESS (EN, NUM)BEGIN IF EN=’ 1 ’ THEN 使能信號EN為1時,譯碼器正常工作CASE NUM IS WHEN 0=DISPLAY=”1111110”。WHEN 4=DISPLAY=”0110011”。 WHEN 8=DISPLAY=”1111111”。 EN為0,數(shù)碼管無顯示END IF。出現(xiàn)此提示信息的原因是:綜合器將EN誤判為時鐘信號,并試圖將程序綜合成時序邏輯電路,但該程序的格式又不符合綜合器對時鐘信號描述的要求,因此無法綜合。其原理是對鍵值進行計數(shù),當某一鍵值保持一段時間不改變時(計數(shù)器達到一定值后),才確認它為有效值;否則將其判為無效鍵值,重新對鍵值進行計算[2]。NUMOUT: OUT INTEGER RANGE 0 TO 15)。SIGNAL START: STD_LOGIC。 ELSE IF NUMIN=TEMPNUM THEN 上一鍵值與此鍵值不同 TENPNUM=NUMIN。 即確定為有效鍵值,并輸出 COUNTER= ‘0’。 END IF。本狀態(tài)機有6種狀態(tài),分別是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含義如表1所示。本次設計中狀態(tài)機的符號如圖7所示。表2 輸入/輸出引腳的作用引 腳作 用CLK10Hz的時鐘,可由系統(tǒng)時鐘分頻得到。ENTITY STATEMACHINE ISPORT (CLK: IN STD_LOGIC。 CLEAR, INCREASEA, INCREASEB: OUT STD_LOGIC。SIGNAL STATE: STATE_TYPE。 THEN 按下復位鍵,比賽開始 STATE=WAITSTATE。039。039。039。THEN 如果A開球 STATE=ATOB。THEN 如果B開球(A、B開球有定的優(yōu)先級區(qū)別 STATE=BTOA。END IF。THEN 如果檢測到B方擊球 IF TABLESTATE=2 THEN 若未過網(wǎng)提前擊球 STATE=ASCORE。 否則球繼續(xù)移動 END IF。 判為B勝 ELSE 若過了網(wǎng)擊球,球從A STATE=ATOB。 否則球繼續(xù)移動 END IF。 A方加1分 STATE=WAITSTATE。 回到等待開球狀態(tài) WHEN FINALRESULT= 最后結果 IF(SCOREA=21) THEN 若A方先達到21分 AWIN=39。 否則,表示B方勝出的燈亮 END IF。 PROCESS(CLK) 此進程控制5個發(fā)光二極管的亮滅 BEGIN IF FALLING_EDGE (CLK) THEN IF ((STATE=ATOB) OR (STATE=BTOA)) THEN CASE TABLESTATE IS WHEN 0=TABLELIGHT=10000。 WHEN 4=TABLELIGHT=00001。 END IF。圖8 記分器元件符號記分器元件符號如圖8所示,本設計中記分器比較簡單,只須根據(jù)狀態(tài)機給出的兩個信號(INCREASEA和INCREASEB)對六個分數(shù)(SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB)進行操作,記分器的程序如下:LIBRARY IEEE。SCOREAL, SCOREAH, SCOREBL, SCOREBH: BUFFERSTD_LOGIC_VECTOR (3 DOWNTO 0)SCOREA,SCOREB:BUFFER INTRGER RANGE 0 TO 21)。 THEN 清0 SCOREAL=0000。 SCORES=0。 THEN A方加1分 IF SCOREAH0010 THEN 若高位小于2 IF SCOREAL1001 THEN 如果低位小于9SCOREAL=SCOREAL+1。 ELSIF SCOREAH= 0010 THEN 若高位為2 IF SCOREAL0001 THEN 如果低位小于1SCOREAL=SCOREAL+1。 END IF。 THEN IF SCOREBH2 THEN 若高位小于2 IF SCOREBL1001 THEN 如果低位小于9SCOREBL=SCOREBL+1。 ELSIF SCOREBH=0010 THEN 若高位為2 IF SCOREBL0001 THEN 如果低位小于1SCOREBL=SCOREBL+1。 END IF。3.系統(tǒng)硬件測試(1)GW48系統(tǒng)設有通用的系統(tǒng)編程下載電路,可對Lattice、Xilinx、Vantis、Altera、Atmel和Cypress等世界六大PLD公司各種ISP編程下載方式或現(xiàn)場配置的CPLD/FPGA系列器件進行實驗或開發(fā)。設計所用的GW48實驗箱中,適配的目標芯片為ALTERA類中FLEX10K系列的EPF10K10,EPF10K10LC84型號的芯片有84個引腳[11],如圖9所示,本設計中用到的引腳情況如下:(1)CLK:時鐘信號,決定球的移動速度,對應實驗箱中的輸入時鐘選擇模塊中的CLOCK0。(4)HITA、HITB:擊球鍵,分別對應實驗箱的鍵鍵8,分別對應芯片的引腳16。(8)AH0、AHAHAH3:顯示A方得分情況中十位上的分值,對應數(shù)碼管2,分別對應芯片引腳33338。在按鍵與CPLD相連的引腳需要設置下拉電阻(300~1000Ω即可)以便在沒有按鍵按下時將輸入也穩(wěn)定在低電平,否則系統(tǒng)會不穩(wěn)定。(2)選擇目標器件及鎖定引腳:先選擇用編程的目標芯片。如果是總線形式的引腳名,也應分別寫出總線中的每一個信號引腳設定,如表3所示。按“OK”按鈕,選中的信號將出現(xiàn)在波形編輯器中[12]。其中“0”、 “1”、“X”、“Z”、“INV”、“G”分別表示低電平、高電平、任意、高電阻、反相和總線數(shù)據(jù)設置。根據(jù)需要將各輸入信號進行設置,并保存。本系統(tǒng)含有時鐘信號,希望在不改變輸入時鐘信號周期的條件下,延長運算時間,所以進行下面設置:在波形編輯窗口打開的情況下,選擇“File”→“END Time”,在彈出的窗口中設置仿真結束時間,按“OK”按鈕,選擇菜單“MAX+PLUSⅡ”→“Simulator”,在“Simulator”子窗口“END Time”處設置同一時間長度。用鼠標雙擊編譯器子窗口的下載圖標,可調(diào)出編程器(Programmer)窗口。下載成功后將在一彈出的窗口中顯示“Configuration Complete”。最終實現(xiàn)乒乓機能模擬乒乓球比賽的基本過程和規(guī)則,并能自動裁判和記分。在整個設計過程中,我學到了很多東西。33