• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

籃球計(jì)時器倒計(jì)時器DE0-CV開發(fā)板籃球比賽定時器VHDL

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-231101144532A2.doc

共1個文件

名稱:籃球計(jì)時器倒計(jì)時器DE0-CV開發(fā)板籃球比賽定時器(代碼在文末下載)

軟件:Quartus II

語言:VHDL

代碼功能:

籃球計(jì)時器倒計(jì)時器要求籃球比賽:

(1)主持人宣布比賽開始前,所有模塊就位 。

(2)裁判宣布開始時,比賽正式開始,進(jìn)入12分鐘倒計(jì)時,同時進(jìn)入24秒倒計(jì)時搶球,且信號燈顯示搶到球的一方。

(3)當(dāng)球被另方奪取時,重新進(jìn)入24秒倒計(jì)時,信號燈顯示搶到球的一方。

(4)當(dāng)24秒倒計(jì)時為0時(犯規(guī)時),蜂嗚器(信號燈)提示。

(5)當(dāng)裁判宣布暫停吋,12分鐘倒計(jì)吋暫停,24秒倒計(jì)時復(fù)位,進(jìn)人60秒倒計(jì)時。60秒倒計(jì)時為0時,暫停結(jié)束,蜂鳴器(信號燈)提示,繼續(xù)12分鐘倒計(jì)時。

(6)一節(jié)比賽結(jié)束時,蜂鳴器(信號燈)提示,數(shù)碼管顯示節(jié)數(shù)。

本代碼已在DE0-CV開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可通過修改管腳適配:

DE0_cv.png

演示視頻:

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--控制模塊
ENTITY?control?IS
???PORT?(
??????clk????????????:?IN?STD_LOGIC;--時鐘
??????reset??????????:?IN?STD_LOGIC;--復(fù)位
??????clk_1??????????:?IN?STD_LOGIC;--1hz
??????start_n????????:?IN?STD_LOGIC;--開始
??????stop_n?????????:?IN?STD_LOGIC;--暫停
??????ball_sw1???????:?IN?STD_LOGIC;--搶球1
??????ball_sw2???????:?IN?STD_LOGIC;--搶球2
??????stop_led???????:?OUT?STD_LOGIC;--暫停指示燈
??????over24sec_led??:?OUT?STD_LOGIC;--24s超時指示燈
??????ball_led???????:?OUT?STD_LOGIC_VECTOR(1?DOWNTO?0);--搶球指示燈
??????end_led????????:?OUT?STD_LOGIC;--結(jié)束指示燈
??????match??????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--比賽節(jié)數(shù)
??????timedown_o?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒計(jì)時
??????time12_min_o???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--12分鐘分
??????time12_sec_o???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--12分鐘秒
???);
END?control;
ARCHITECTURE?trans?OF?control?IS
???type?state_type?is?(s_idle,s_wait12min,s_stop,s_over24sec,s_end,s_start);
???signal?state?:?state_type;
???SIGNAL?ball_sw1_buf0?:?STD_LOGIC;
???SIGNAL?ball_sw1_buf1?:?STD_LOGIC;
???SIGNAL?ball_sw2_buf0?:?STD_LOGIC;
???SIGNAL?ball_sw2_buf1?:?STD_LOGIC;
???SIGNAL?sw1_r?????????:?STD_LOGIC;
???SIGNAL?sw2_r?????????:?STD_LOGIC;
???SIGNAL?time24????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?time60????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?time12_min????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?time12_sec????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?match_num?????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
???
???
BEGIN
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????ball_sw1_buf0?<=?ball_sw1;--搶球1
?????????ball_sw1_buf1?<=?ball_sw1_buf0;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????ball_sw2_buf0?<=?ball_sw2;--搶球2
?????????ball_sw2_buf1?<=?ball_sw2_buf0;
??????END?IF;
???END?PROCESS;
???
???sw1_r?<=?NOT(ball_sw1_buf0)?AND?ball_sw1_buf1;--搶球1
???sw2_r?<=?NOT(ball_sw2_buf0)?AND?ball_sw2_buf1;--搶球2
???
???timedown_o?<=?time60?WHEN?(state?=?s_stop)?ELSE--根據(jù)狀態(tài)切換顯示60s還是24s倒計(jì)時
?????????????????time24;
???time12_min_o?<=?time12_min;--分鐘倒計(jì)時
???time12_sec_o?<=?time12_sec;--秒鐘倒計(jì)時
???
???PROCESS?(clk,?reset)
???BEGIN
??????IF?((NOT(reset))?=?'1')?THEN
?????????time60?<=?"00111100";--復(fù)位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_wait12min?AND?stop_n?=?'0')?THEN
????????????time60?<=?"00111100";--60s
?????????ELSIF?(state?=?s_stop?AND?clk_1?=?'1')?THEN
????????????time60?<=?time60?-?"00000001";--倒計(jì)時
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--24秒倒計(jì)時
???PROCESS?(clk,?reset)
???BEGIN
??????IF?((NOT(reset))?=?'1')?THEN
?????????time24?<=?"00011000";
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(sw1_r?=?'1'?OR?sw2_r?=?'1'?OR?start_n?=?'0')?THEN
????????????time24?<=?"00011000";
?????????ELSIF?(state?=?s_stop)?THEN
????????????time24?<=?"00011000";
?????????ELSIF?(state?=?s_wait12min?AND?clk_1?=?'1')?THEN
????????????time24?<=?time24?-?"00000001";
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--12分鐘倒計(jì)時
???PROCESS?(clk,?reset)
???BEGIN
??????IF?((NOT(reset))?=?'1')?THEN
?????????time12_min?<=?"00000000";
?????????time12_sec?<=?"00000000";
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_start)?THEN

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 管腳分配

6. 仿真圖

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=234

  • 1-231101144532A2.doc
    下載

相關(guān)推薦