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

數字秒表VHDL啟動暫停清零

8小時前
151
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-231020213505515.doc

共1個文件

名稱:數字秒表VHDL啟動暫停清零(代碼在文末付費下載)

軟件:Quartus

語言:VHDL

代碼功能:

數字秒表

使用VHDL語言設置數字秒表。要求具有百分秒、秒和分鐘顯示,百分秒范圍00-99,秒范圍00-59,分鐘范圍00-59。

系統(tǒng)具有啟動/暫停功能系統(tǒng)具有清零功能。

本資源包含2個不同的代碼工程,每個工程都可獨立實現上述功能。具體可以下載下文中的設計文檔閱讀。

演示視頻:

FPGA代碼資源下載網:hdlcode.com

部分代碼展示

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--秒表控制模塊
ENTITY?miaobaio_ctrl?IS
???PORT?(
??????clk_50M????????????????:?IN?STD_LOGIC;
??????clk_100Hz??????????????:?IN?STD_LOGIC;--100Hz--對應10ms
??????start??????????????:?IN?STD_LOGIC;--啟動
??????stop???????????????:?IN?STD_LOGIC;--暫停
??????reset??????????????:?IN?STD_LOGIC;--復位
??????Millisecond??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--百分秒
??????second???????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--秒
??????minute???????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--分
???);
END?miaobaio_ctrl;
ARCHITECTURE?trans?OF?miaobaio_ctrl?IS
???
???SIGNAL?state???????????:?STD_LOGIC_VECTOR(2?DOWNTO?0)?:=?"000";
???
???SIGNAL?Millisecond_cnt?:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?second_cnt??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?minute_cnt??????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
BEGIN
--計時狀態(tài)機
???PROCESS?(clk_50M)
???BEGIN
??????IF?(clk_50M'EVENT?AND?clk_50M?=?'1')?THEN
?????????IF?((NOT(reset))?=?'1')?THEN
????????????state?<=?"011";--復位狀態(tài)
?????????ELSE
????????????CASE?state?IS
???????????????WHEN?"011"?=>--復位狀態(tài)
??????????????????state?<=?"000";
???????????????WHEN?"000"?=>--空閑狀態(tài)
??????????????????IF?((NOT(start))?=?'1')?THEN
?????????????????????state?<=?"001";
??????????????????ELSE
?????????????????????state?<=?"000";
??????????????????END?IF;
???????????????WHEN?"001"?=>--計時狀態(tài)
??????????????????IF?((NOT(stop))?=?'1')?THEN
?????????????????????state?<=?"010";
??????????????????ELSE
?????????????????????state?<=?"001";
??????????????????END?IF;
???????????????WHEN?"010"?=>--暫停狀態(tài)
??????????????????IF?((NOT(start))?=?'1')?THEN
?????????????????????state?<=?"001";
??????????????????ELSE
?????????????????????state?<=?"010";
??????????????????END?IF;
???????????????WHEN?OTHERS?=>
????????????END?CASE;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk_50M)
???BEGIN
??????IF?(clk_50M'EVENT?AND?clk_50M?=?'1')?THEN
?????????IF?(state?=?"011")?THEN
????????????minute_cnt?<=?"00000000";
?????????ELSIF?(state?=?"001"?AND?clk_100Hz?=?'1')?THEN--計時狀態(tài)
????????????IF?(Millisecond_cnt?=?"01100011"?AND?second_cnt?=?"00111011")?THEN--59秒99‘時向前記1分
???????????????IF?(minute_cnt?<?"00111011")?THEN
??????????????????minute_cnt?<=?minute_cnt?+?"00000001";--計時到990ms,下一次就到1秒了
???????????????ELSE
??????????????????minute_cnt?<=?"00000000";
???????????????END?IF;
????????????ELSE
???????????????minute_cnt?<=?minute_cnt;
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk_50M)
???BEGIN
??????IF?(clk_50M'EVENT?AND?clk_50M?=?'1')?THEN
?????????IF?(state?=?"011")?THEN--復位狀態(tài)
????????????second_cnt?<=?"00000000";
?????????ELSIF?(state?=?"001"?AND?clk_100Hz?=?'1')?THEN--計時狀態(tài)
????????????IF?(Millisecond_cnt?=?"01100011")?THEN--990ms時向前記1秒
???????????????IF?(second_cnt?<?"00111011")?THEN
??????????????????second_cnt?<=?second_cnt?+?"00000001";--計時到990ms,下一次就到1秒了
???????????????ELSE
??????????????????second_cnt?<=?"00000000";
???????????????END?IF;
????????????ELSE
???????????????second_cnt?<=?second_cnt;
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk_50M)
???BEGIN
??????IF?(clk_50M'EVENT?AND?clk_50M?=?'1')?THEN
?????????IF?(state?=?"011")?THEN--復位狀態(tài)
????????????Millisecond_cnt?<=?"00000000";
?????????ELSIF?(state?=?"001"?AND?clk_100Hz?=?'1')?THEN--計時狀態(tài)
????????????IF?(Millisecond_cnt?<?"01100011")?THEN--計時到990ms,下一次就到1秒了
???????????????Millisecond_cnt?<=?Millisecond_cnt?+?"00000001";
????????????ELSE
???????????????Millisecond_cnt?<=?"00000000";--計時到990ms,下一次就到1秒了
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???Millisecond?<=?Millisecond_cnt;
???second?<=?second_cnt;
???minute?<=?minute_cnt;
???
END?trans;

 

設計文檔:

設計文檔2.doc

1. 工程文件

2. 程序文件

3. 程序編譯

4. RTL圖

5. 仿真圖

整體仿真圖

分頻模塊

控制模塊

顯示模塊

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

  • 1-231020213505515.doc
    下載

相關推薦