名稱:乒乓球游戲機(jī)(代碼在文末付費(fèi)下載)
軟件:ISE
語言:Verilog
要求:
設(shè)計(jì)一個由兩人參賽的乒乓球游戲機(jī),用?4?個?LED?排成一條直線,兩邊各?代表參賽雙方的位置,其中一只點(diǎn)亮的?LED?指示球的當(dāng)前位置,點(diǎn)亮的?LED?一?次從左到右,或者從右到左,其移動速度應(yīng)能調(diào)節(jié)。
當(dāng)“球”將運(yùn)動到某方的最 后一位時,參賽者應(yīng)能果斷地按下位于自己一方的按鈕開關(guān),即表示啟動球拍擊球,若擊中,則球向相反方向移動;若未擊中,球掉出桌外,則對方得一分。
雙方各設(shè)一個 LED?表示擁有發(fā)球權(quán),每隔兩次自動交換發(fā)球權(quán),擁有發(fā)球權(quán)的一?方發(fā)球才有效。
設(shè)置計(jì)分電路,其中參賽選手各有一個可顯示自己當(dāng)前分?jǐn)?shù)的按鈕,當(dāng)按下個人分?jǐn)?shù)按鈕,可用 LED?燈顯示自己分?jǐn)?shù),當(dāng)某一方率先達(dá)到?11?分時,所有 LED?燈閃爍,表示比賽結(jié)束。
演示視頻:
部分代碼展示
module?pindpang( input?clk,//系統(tǒng)時鐘 input?rst,//異步復(fù)位 input?in1,//右邊選手擊球信號 input?in2,//左邊選手擊球信號 input?score1,//右邊選手分?jǐn)?shù)查詢信號 input?score2,//左邊選手分?jǐn)?shù)查詢信號 output?reg?[3:0]?led//球運(yùn)動軌跡及分?jǐn)?shù) ); wire?s0;//s0?和?s5?為球掉出桌外的信號 wire?s5; wire?s1;//s1~s4?為球運(yùn)動軌跡寄存器 wire?s2; wire?s3; wire?s4; reg?[3:0]?R_score1=4'd0; reg?[3:0]?R_score2=4'd0; reg?turn_l=0;//移位信號寄存器信號 reg?turn_r=0;//移位信號寄存器信號 reg?right1=0;//發(fā)球權(quán) reg?right2=0;//發(fā)球權(quán) reg?[2:0]?state=3'd0; parameter?s_idle_L=3'd1; parameter?s_idle_R=3'd2; parameter?s_turn_L=3'd3; parameter?s_turn_R=3'd4;
設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):
1. 工程文件
2. 程序文件
3. 程序編譯
4. Testbench
5. 仿真圖
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=167