【正文】
。COMPONENT control IS PORT(clk,p1,p2,judge,who,sel,reset: IN STD_LOGIC。當(dāng)前局比分 total: IN integer range 0 to 7。 led_out: OUT STD_LOGIC_VECTOR(7 downto 0))。COMPONENT score_stat IS PORT(p1win,p2win,reset,reset_all: IN STD_LOGIC。END COMPONENT。 total1,total2: OUT integer range 0 to 4)。COMPONENT change IS PORT(first:IN STD_LOGIC。 total1,total2: IN integer range 0 to 4。 ends,who:OUT STD_LOGIC)。COMPONENT score_show IS PORT(clk: IN STD_LOGIC。 total1,total2: IN integer range 0 to 4。 digit:OUT STD_LOGIC_VECTOR(6 downto 0))。BEGIN U1: clk_div PORT MAP(clk = clk,clk_out = clk_temp,sel=speed_sel)。 U3: score_stat PORT MAP(p1win=p1win,p2win=p2win,reset=clear,reset_all=reset,score1=score1,score2=score2)。// 程序名稱:// 程序作者:陳 梁// 最后修改日期:200932library ieee。use 。ENTITY score_stat IS port(p1win,p2win,reset,reset_all: IN STD_LOGIC。END ENTITY。BEGIN PROCESS(p1win,reset,reset_all) BEGIN if(reset=39。 OR reset_all = 39。) then score_1 = 0。 end if。 PROCESS(p2win,reset,reset_all) BEGIN if(reset=39。 OR reset_all = 39。) then score_2 = 0。 end if。 score1 = score_1。END ARCHITECTURE。use 。use 。 score1,score2: IN integer range 0 to 11。 cat:OUT STD_LOGIC_VECTOR(5 downto 0)。 數(shù)碼管顯示END ENTITY。SIGNAL d1,d2,d3,d4,d5,d6:STD_LOGIC_VECTOR(6 downto 0)。 d2 = 1111110。 d2 = 0110000。 d2 = 1101101。 d2 = 1111001。 d2 = 0110011。 d2 = 1011011。 d2 = 1011111。 d2 = 1110000。 d2 = 1111111。 d2 = 1111011。 d2 = 1111110。 d2 = 0110000。 CASE score2 IS when 0= d3 = 0000000。 when 1= d3 = 0000000。 when 2= d3 = 0000000。 when 3= d3 = 0000000。 when 4= d3 = 0000000。 when 5= d3 = 0000000。 when 6= d3 = 0000000。 when 7= d3 = 0000000。 when 8= d3 = 0000000。 when 9= d3 = 0000000。 when 10=d3 = 0110000。 when 11=d3 = 0110000。 END CASE。 PROCESS(total1,total2) BEGIN CASE total1 IS when 0= d5 = 1111110。 when 2= d5 = 1101101。 when 4= d5 = 0110011。 CASE total2 IS when 0= d6 = 1111110。 when 2= d6 = 1101101。 when 4= d6 = 0110011。 END PROCESS。 else CASE count IS when 0= cat = 011111。 先掃描顯示比分 when 1= cat = 101111。 when 2= cat = 111101。 when 3= cat = 111110。 when 4= cat = 110111。 再掃描顯示總比分 when 5= cat = 111011。 END CASE。 end if。 END PROCESS。 // 程序名稱:// 程序作者:陳 梁// 最后修改日期:200932library ieee。use 。ENTITY clk_div IS PORT(clk,sel: IN STD_LOGIC。END ENTITY。BEGIN PROCESS(clk) VARIABLE count:integer range 0 to 99999。 clk_out_5hz = NOT clk_out_5hz。 end if。 END PROCESS。 end if。 WITH sel SELECT 選擇輸出時(shí)鐘 clk_out = clk_out_2hz when 39。, clk_out_5hz when 39。END ARCHITECTURE。use 。use 。總比分,清零,復(fù)位,結(jié)束標(biāo)志 total1,total2: OUT integer range 0 to 4)。ARCHITECTURE main OF total_stat ISSIGNAL total_1,total_2:integer range 0 to 4。139。比分清零 elsif(reset=39。) then 裁判按下開始鍵 if(ends=39。) then 判斷比賽是否全部結(jié)束 total_1 = 0。 elsif(rising_edge(p1total)) then total_1 = total_1 + 1。 END PROCESS。139。 elsif(reset=39。) then if(ends=39。) then total_2 = 0。 elsif(rising_edge(p2total)) then total_2 = total_2 + 1。 END PROCESS。 total2 = total_2。// 程序名稱:// 程序作者:陳 梁// 最后修改日期:200932library ieee。use 。ENTITY control IS PORT(clk,p1,p2,judge,who,sel,reset: IN STD_LOGIC。當(dāng)前局比分 total: IN integer range 0 to 4。p1/p2贏得該局或該球,清楚當(dāng)前比分,當(dāng)前首發(fā)權(quán)(輸出至發(fā)球權(quán)控制模塊) led_out: OUT STD_LOGIC_VECTOR(7 downto 0))。ARCHITECTURE main OF control ISSIGNAL led_pos:integer range 0 to 9。SIGNAL state : statetype。139。全局復(fù)位 elsif(rising_edge(clk)) then CASE state IS when waiting= p1win = 39。所有指示贏球的信號均為低電平 p2win = 39。 p1total = 39。 p2total = 39。 led_pos = 0。139。139。039。039。 when 39。= first=39。state=p2ready。 elsif(total = 1 OR total = 3 OR total = 5) then CASE sel IS when 39。= first=39。state=p2ready。139。039。以上控制首發(fā)權(quán) END CASE。 else state = waiting。 when p1ready= clear = 39。清除比分信號置為低電平 led_pos = 1。139。發(fā)球,狀態(tài)發(fā)生轉(zhuǎn)移 else state = p1ready。 when p2ready= clear = 39。 led_pos = 8。139。 else state = p2ready。 when p1top2= if(p2 = 39。) then檢測到對方擊球 if(led_pos = 7) then 判斷球的位置 state = p2top1。139。 狀態(tài)轉(zhuǎn)移至一球結(jié)束 end if。139。 else led_pos = led_pos + 1。狀態(tài)發(fā)生轉(zhuǎn)移 end if。139。 else p2win = 39。 state = ends。 elsif(led_pos = 0) then p2win = 39。 state = ends。 state = p2top1。 when ends= p1win = 39。 p2win = 39。 if(score1 = 11) then 一局比賽是否結(jié)否 p1total = 39。 總比分加1 state = waiting。139。 else CASE who IS 根據(jù)發(fā)球權(quán)選擇下一狀態(tài) when 39。= state = p1ready。139。 END CASE。 END CASE。 END PROCESS。 END ARCHITEC