成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

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

基于VHDL的倒計(jì)時(shí)控制器設(shè)計(jì)Basys3開發(fā)板驗(yàn)證

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

1-231120225531112.doc

共1個(gè)文件

名稱:基于VHDL的倒計(jì)時(shí)控制器設(shè)計(jì)Basys3開發(fā)板驗(yàn)證(代碼在文末下載)

軟件:VIVADO

語言:VHDL

代碼功能:

倒計(jì)時(shí)控制器:

1、可以通過按鍵切換倒計(jì)時(shí)狀態(tài)、設(shè)置狀態(tài)。

2、在設(shè)置狀態(tài)下設(shè)計(jì)倒計(jì)時(shí)的時(shí)間,通過上下兩個(gè)按鍵控制時(shí)間加減。

3、時(shí)間設(shè)置好后,通過按鍵切換到倒計(jì)時(shí)狀態(tài),從設(shè)置的時(shí)間開始倒計(jì)時(shí)。

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

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

basys3開發(fā)板.png

演示視頻:

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

1. 工程文件

2. 程序文件

3. 程序編譯

4. 仿真圖

4.1 main1_one_digit模塊仿真

Testbench

仿真圖

4.2 main2_four_digits模塊仿真

Testbench

仿真圖

4.3 整體仿真

Testbench

仿真圖

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--計(jì)時(shí)模塊
ENTITY?downcnt_time?IS
???PORT?(
??????clk????????:?IN?STD_LOGIC;--100MHz
??????clk_5KHz???:?OUT?STD_LOGIC;--輸出5KHz,用于控制數(shù)碼管切換
??????btnU???????:?IN?STD_LOGIC;--按鍵
??????btnD???????:?IN?STD_LOGIC;--按鍵
??????btnC???????:?IN?STD_LOGIC;--按鍵
??????d3?????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--分鐘十位
??????d2?????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--分鐘個(gè)位
??????d1?????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--秒鐘十位
??????d0?????????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0)--秒鐘十位
???);
END?downcnt_time;
ARCHITECTURE?Behavioral?OF?downcnt_time?IS
--定義信號(hào)
???TYPE?State_type?IS?(s_timing,?s_set,?s_setting,?s_time);??--?定義狀態(tài)
???SIGNAL?state?:?State_Type;????--?創(chuàng)建信號(hào)
???SIGNAL?clk_1Hz????:?STD_LOGIC;--1hz,用于計(jì)時(shí)
???SIGNAL?clk_5K?????:?STD_LOGIC?:=?'0';
???SIGNAL?count_1Hz??????:?integer?:=?0;
???SIGNAL?count_5KHz?????:?integer?:=?0;??
???SIGNAL?btnU_dff1??:?STD_LOGIC;
???SIGNAL?btnU_dff2??:?STD_LOGIC;
???SIGNAL?btnD_dff1??:?STD_LOGIC;
???SIGNAL?btnD_dff2??:?STD_LOGIC;
???SIGNAL?btnU_push????:?STD_LOGIC;
???SIGNAL?btnD_push????:?STD_LOGIC;
???SIGNAL?Min_10?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--分鐘十位
???SIGNAL?Min_1?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--分鐘個(gè)位
???SIGNAL?Sec_10?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--秒鐘十位
???SIGNAL?Sec_1?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--秒鐘十位
BEGIN
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(count_5KHz?>=?100)?THEN--100MHz計(jì)數(shù)10000后翻轉(zhuǎn)得到5KHz的信號(hào),仿真時(shí)將10000改小為100
????????????count_5KHz?<=?0;
????????????clk_5K?<=?NOT(clk_5K);--翻轉(zhuǎn),得到5Khz
?????????ELSE
????????????count_5KHz?<=?count_5KHz?+?1;--計(jì)數(shù)
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???clk_5KHz?<=?clk_5K;--輸出5KHz
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(count_1Hz?>=?1000)?THEN--100MHz分頻到1Hz,計(jì)數(shù)100000000,仿真時(shí)減小為1000
????????????count_1Hz?<=?0;
clk_1Hz?<=?'1';--得到1Hz信號(hào)脈沖
?????????ELSE
????????????count_1Hz?<=?count_1Hz?+?1;--計(jì)數(shù)
clk_1Hz?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--狀態(tài)控制
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?state?IS
????????????WHEN?s_timing?=>--計(jì)時(shí)狀態(tài)
???????????????IF?(btnC?=?'1')?THEN--btnC按下
??????????????????state?<=?s_set;
???????????????ELSE
??????????????????state?<=?s_timing;
???????????????END?IF;
????????????WHEN?s_set?=>--btnC按鍵按下
???????????????IF?(btnC?=?'0')?THEN--btnC按鍵松開
??????????????????state?<=?s_setting;--進(jìn)入設(shè)置狀態(tài)
???????????????ELSE
??????????????????state?<=?s_set;
???????????????END?IF;
????????????WHEN?s_setting?=>--設(shè)置狀態(tài)
???????????????IF?(btnC?=?'1')?THEN--btnC按下
??????????????????state?<=?s_time;
???????????????ELSE
??????????????????state?<=?s_setting;
???????????????END?IF;
????????????WHEN?s_time?=>--btnC按下
???????????????IF?(btnC?=?'0')?THEN--btnC按鍵松開
??????????????????state?<=?s_timing;--進(jìn)入計(jì)時(shí)狀態(tài)
???????????????ELSE
??????????????????state?<=?s_time;
???????????????END?IF;
????????????WHEN?OTHERS?=>
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???--使用D觸發(fā)器將btnU和btnD緩存
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????btnU_dff1?<=?btnU;
?????????btnU_dff2?<=?btnU_dff1;
?????????btnD_dff1?<=?btnD;
?????????btnD_dff2?<=?btnD_dff1;
??????END?IF;
???END?PROCESS;
???
???--得到btnU和btnD的按鍵上升沿,只保持一個(gè)時(shí)鐘周期的高電平
???btnU_push?<=?btnU_dff1?AND?NOT(btnU_dff2);
???btnD_push?<=?btnD_dff1?AND?NOT(btnD_dff2);
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_setting)?THEN--設(shè)置時(shí)間狀態(tài)
????????????IF?(btnU_push?=?'1')?THEN--btnU按鍵按下,控制分鐘時(shí)間加
???????????????IF?(Min_10?=?"1001"?AND?Min_1?=?"1001")?THEN--分鐘為99時(shí),不再增加
??????????????????Min_10?<=?"1001";
??????????????????Min_1?<=?"1001";
???????????????ELSIF?(Min_1?=?"1001")?THEN--分鐘個(gè)位是9
??????????????????Min_10?<=?Min_10?+?"0001";--十位加1
??????????????????Min_1?<=?"0000";
???????????????ELSE
??????????????????Min_10?<=?Min_10;
??????????????????Min_1?<=?Min_1?+?"0001";--個(gè)位加1
???????????????END?IF;
????????????ELSIF?(btnD_push?=?'1')?THEN--btnU按鍵按下,控制分鐘時(shí)間減
???????????????IF?(Min_10?=?"0000"?AND?Min_1?=?"0000")?THEN--時(shí)間減到0,不再減
??????????????????Min_10?<=?"0000";
??????????????????Min_1?<=?"0000";
???????????????ELSIF?(Min_1?=?"0000")?THEN--個(gè)位為0
??????????????????Min_10?<=?Min_10?-?"0001";--十位減1
??????????????????Min_1?<=?"1001";
???????????????ELSE
??????????????????Min_10?<=?Min_10;
??????????????????Min_1?<=?Min_1?-?"0001";--個(gè)位減1
???????????????END?IF;
????????????END?IF;
?????????ELSIF?(state?=?s_timing)?THEN--倒計(jì)時(shí)狀態(tài)
????????????IF?(clk_1Hz?=?'1')?THEN
???????????????IF?(Min_10?=?"0000"?AND?Min_1?=?"0000"?AND?Sec_10?=?"0000"?AND?Sec_1?=?"0000")?THEN--減到0,倒計(jì)時(shí)結(jié)束
??????????????????Min_10?<=?"0000";
??????????????????Min_1?<=?"0000";
???????????????ELSIF?(Min_1?=?"0000"?AND?Sec_10?=?"0000"?AND?Sec_1?=?"0000")?THEN--
??????????????????Min_10?<=?Min_10?-?"0001";--分鐘十位減1
??????????????????Min_1?<=?"1001";
???????????????ELSIF?(Sec_10?=?"0000"?AND?Sec_1?=?"0000")?THEN
??????????????????Min_10?<=?Min_10;
??????????????????Min_1?<=?Min_1?-?"0001";--分鐘個(gè)位減1
???????????????ELSE
??????????????????Min_10?<=?Min_10;
??????????????????Min_1?<=?Min_1;
???????????????END?IF;
????????????END?IF;
?????????END?IF;
??????END?IF;
???END?PROCESS;

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

  • 1-231120225531112.doc
    下載

相關(guān)推薦

濮阳县| 登封市| 革吉县| 灵武市| 汤原县| 久治县| 达拉特旗| 遂溪县| 宁武县| 辽阳县| 岚皋县| 东丰县| 厦门市| 北票市| 肥东县| 瑞安市| 邵阳县| 宿州市| 华宁县| 仁化县| 巴彦淖尔市| 莲花县| 黎城县| 当雄县| 逊克县| 嵊泗县| 荥经县| 大姚县| 宁南县| 洛浦县| 汾阳市| 玉林市| 垫江县| 阳城县| 五指山市| 聂荣县| 秦皇岛市| 新竹市| 阜新市| 手机| 义马市|