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