【正文】
tor(1 downto 0)??刂戚斎? row: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 行 col: OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 列 END dianzhen。 ARCHITECTURE a OF dianzhen IS signal tmp:integer range 0 to 7。 SIGNAL tmp_row:STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL tmp_col:STD_LOGIC_VECTOR(7 DOWNTO 0)。 beginp1:process(clkin)07計數(shù)器 begin if clkin39。event and clkin=39。139。 then if tmp=7 then tmp=0。 else tmp=tmp+1。 end if。 end if。 end process p1。 p2:process(v,tmp) begin if v = 01then顯示甲 case tmp is WHEN 0=tmp_col=。tmp_row=。 WHEN 1=tmp_col=。tmp_row=。 WHEN 2=tmp_col=。tmp_row=。 WHEN 3=tmp_col=。tmp_row=。 WHEN 4=tmp_col=。tmp_row=。 WHEN 5=tmp_col=。tmp_row=。 WHEN 6=tmp_col=。tmp_row=。 WHEN 7=tmp_col=。tmp_row=。 end case。 elsif v=10then 顯示乙方 case tmp is WHEN 0=tmp_col=。tmp_row=。 WHEN 1=tmp_col=。tmp_row=。 WHEN 2=tmp_col=。tmp_row=。 WHEN 3=tmp_col=。tmp_row=。 WHEN 4=tmp_col=。tmp_row=。 WHEN 5=tmp_col=。tmp_row=。 WHEN 6=tmp_col=。tmp_row=。 WHEN 7=tmp_col=。tmp_row=。 end case。 else tmp_col=。 不顯示 end if。 end process p2。 p3:process(v) begin if v=10 or v=01then beep=39。139。有人獲勝,輸出高電平,蜂鳴器發(fā)聲 else beep=39。039。 end if。 end process p3。 row=tmp_col。 col=tmp_row。end a。五、 功能說明及資源利用情況實(shí)際電路框圖:功能說明:事先約定,甲方先按按鍵,乙方后按。當(dāng)程序初始化之后,在clk_x時鐘下,xx、xx1開始計數(shù)。在clk_y時鐘下yy、yy1開始計數(shù),如果甲按下按鍵btn0,在btn0的上升沿觸發(fā)下,xx和yy同時對6取余之后結(jié)果加1,產(chǎn)生兩個16的隨機(jī)數(shù),由于clkx和clky頻率不同,以及甲按鍵按下的時間是隨機(jī)的,于是產(chǎn)生的兩個數(shù)是隨機(jī)數(shù),顯示在數(shù)碼管disp01上,同時局?jǐn)?shù)加1,顯示在數(shù)碼管disp5上,標(biāo)志新一局開始;然后乙按下按鍵btn1,產(chǎn)生兩個隨機(jī)數(shù),顯示在數(shù)碼管disp23上;同時,在乙按鍵btn1的下降沿觸發(fā)之下,開始比較,勝負(fù)結(jié)果顯示在點(diǎn)陣上。期間如果遇到復(fù)位信號reset,則局?jǐn)?shù)歸零,重新開始游戲。資源利用情況:注:工程名字為shumaguanceshi5,測試時各部分分別調(diào)試,最后選用了一個已存在工程整體調(diào)試,未改名。六、 故障及問題分析 產(chǎn)生的兩個隨機(jī)數(shù)是相同的。原因:計數(shù)頻率相同。解決方法:clkx改為2kHz,x計數(shù)改為0100,y計數(shù)改為100200,成功解決問題。 產(chǎn)生隨機(jī)數(shù),開始時是xy分別除以7取余,產(chǎn)生06的隨機(jī)數(shù),將0調(diào)整為1,導(dǎo)致1的概率略大。解決方法:xy分別除以6取余,然后結(jié)果加1,這樣產(chǎn)生16的概率相同,接近于純隨機(jī)數(shù)。 點(diǎn)陣顯示的圖形一片模糊,雖然能夠看出狀態(tài)間確實(shí)有切換,但分辨不出顯示的圖形,檢查后發(fā)現(xiàn)是下載時點(diǎn)陣掃描的行和列下載反了,改正后就可顯示漢字,但是顯示方向略有問題,不過,能正常看出獲勝一方,故沒有進(jìn)一步改正。 比較判斷時總是顯示上一局結(jié)果。經(jīng)過老師指導(dǎo),得知是時鐘賦值時有時延,故比較錯誤。解決方法:將jia1與jia2相加和yi1與yi2相加的命令放在時鐘之外,這樣只要jia12和yi12有變化就會相加,不需要時鐘,故不存在時延問題。七、總結(jié)和結(jié)論這次數(shù)電綜合實(shí)驗(yàn)進(jìn)行的不是很順利,主要是上學(xué)期的基礎(chǔ)沒有打好,對知識的理解沒有深入,導(dǎo)致了很多錯誤的發(fā)生,比如不能在不同時鐘下對同一個信號賦值和同一個if下的判斷條件必須為同一種。在這一過程中,我對vhdl語言的理解也更加的深入,解決了許多理論課上半懂不懂的問題,為今后從事相關(guān)的開發(fā)奠定了基礎(chǔ)。同時,這次實(shí)驗(yàn)提高了我的邏輯思考能力,彌補(bǔ)了理論課學(xué)習(xí)上的不足,這也將為我學(xué)習(xí)其他課程產(chǎn)生幫助。