资源描述:
《Verilog HDL乒乓球游戏机.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、moduleping_pang(clk1khz,rst,af,aj,bf,bj,shift,seg71,seg72);inputclk1khz,rst;inputaf,aj,bf,bj;//af,aj为A方发球,A方击球output[7:0]shift;//output[3:0]scan;output[6:0]seg71,seg72;regclk2hz;reg[31:0]cnt;reg[6:0]seg71,seg72;reg[3:0]a_score,b_score;rega,b;reg[7:0]shift;/
2、*******2Hz分频********/always@(posedgeclk1khz)beginif(cnt==19999999)begincnt=0;clk2hz=~clk2hz;endelsecnt=cnt+1'b1;end/*******比赛规则********/always@(posedgeclk2hz,posedgerst)beginif(rst)begina_score=0;b_score=0;a=0;b=0;shift=8'b0;endelseif(a==0&&b==0&&af==1)//A发
3、球begina=1;shift=8'b10000000;endelseif(a==0&&b==0&&bf==1)//B发球beginb=1;shift=8'b00000001;endelseif(a==1&&b==0)begin//球从A到Bif(shift>16)//若没过球网B击球,A加分beginif(bj==1)begina_score=a_score+1'b1;a=0;b=0;shift=8'b00000000;endelseshift={1'b0,shift[7:1]};endelseif(shi
4、ft==0)//B一直没击球,A加分begina_score=a_score+1'b1;a=0;b=0;endelsebeginif(bj==1)//B击球成功begina=0;b=1;endelseshift={1'b0,shift[7:1]};endendelseif(b==1&&a==0)//球从B到A移动beginif(shift<16&&shift!==0)beginif(aj==1)beginb_score=b_score+1'b1;a=0;b=0;shift=0;endelseshift={sh
5、ift[6:0],1'b0};endelseif(shift==0)beginb_score=b_score+1'b1;a=0;b=0;endelsebeginif(aj==1)begina=1;b=0;endelseshift={shift[6:0],1'b0};endendendalways@(a_score,b_score)begincase(a_score)0:seg71=7'b0111111;1:seg71=7'b0000110;2:seg71=7'b1011011;3:seg71=7'b10011
6、11;4:seg71=7'b1100110;5:seg71=7'b1101101;6:seg71=7'b1111101;7:seg71=7'b0000111;8:seg71=7'b1111111;9:seg71=7'b1101111;default:seg71=7'b0000000;endcasecase(b_score)0:seg72=7'b0111111;1:seg72=7'b0000110;2:seg72=7'b1011011;3:seg72=7'b1001111;4:seg72=7'b1100110;
7、5:seg72=7'b1101101;6:seg72=7'b1111101;7:seg72=7'b0000111;8:seg72=7'b1111111;9:seg72=7'b1101111;default:seg72=7'b0000000;endcaseendendmodule