名稱:騎行碼數(shù)表設(shè)計(jì)VHDL代碼Quartus仿真
軟件:Quartus
語言:VHDL
代碼功能:
騎行碼數(shù)表設(shè)計(jì)
設(shè)計(jì)一個(gè)騎行碼速表,其功能要求如下:
1、速度和距離:碼速表可以實(shí)時(shí)顯示騎行速度和行駛距離,幫助騎行者了解自己的騎行表現(xiàn)。
2、時(shí)間管理:記錄騎行時(shí)間,幫助騎行者制定和調(diào)整訓(xùn)練計(jì)劃。
其余功能根據(jù)自己調(diào)研情況自由發(fā)揮。
提示:
1、使用頻率為10Hz的時(shí)鐘信號(hào)(頻率太高耗電量高),做一個(gè)時(shí)鐘,用于時(shí)間管理。
2、設(shè)置按鈕,用于顯示切換,時(shí)鐘設(shè)置、數(shù)據(jù)清零、輪轂尺寸設(shè)置等,一個(gè)供系統(tǒng)“復(fù)位”用。
3、顯示使用OLED顯示屏。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1、工程文件
2、程序文件
3、程序編譯
4、RTL圖
5、Testbench
6、仿真圖
整體仿真圖
上圖可以看出,總共騎行3分26秒,騎行距離478米。計(jì)算的騎行速度為2.3米每秒
分頻器模塊
模式設(shè)置模塊
輪轂尺寸設(shè)置模塊
控制模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ???USE?ieee.std_logic_arith.all; --?控制模塊 ENTITY?control?IS ???PORT?( ??????clk_in??????:?IN?STD_LOGIC;?--?10Hz時(shí)鐘輸入 ??????reset???????:?IN?STD_LOGIC;?--?重置信號(hào) ??Wheel_pulse?:?IN?STD_LOGIC;--車輪脈沖,騎行一圈對(duì)應(yīng)一個(gè)脈沖 ??????start_key???:?IN?STD_LOGIC;?--開始騎行按鍵 ??????end_key?????:?IN?STD_LOGIC;?--?停止騎行按鍵 ??????clk_1Hz?????:?IN?STD_LOGIC;?--?1Hz時(shí)鐘信號(hào) ??perimeter???:?IN?STD_LOGIC_VECTOR(11?DOWNTO?0);--輪轂周長(單位cm) ??speed???????:?OUT?STD_LOGIC_VECTOR(11?DOWNTO?0);--速度(米每秒) ??all_distance?:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--里程(米) ??????hour_time???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);?--?小時(shí)輸出 ??????minute_time?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);?--?分鐘輸出 ??????second_time?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)??--?秒輸出 ???); END?control; ARCHITECTURE?bahave?OF?control?IS SIGNAL?time_en????????:?STD_LOGIC; ???SIGNAL?hour???????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";?--?小時(shí)信號(hào) ???SIGNAL?minute?????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";?--?分鐘信號(hào) ???SIGNAL?second?????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000001";?--?秒信號(hào) ??? ???SIGNAL?hour_int???????????:?integer;?--?小時(shí)信號(hào) ???SIGNAL?minute_int?????????:?integer;?--?分鐘信號(hào) ???SIGNAL?second_int?????????:?integer;?--?秒信號(hào) ??? ???SIGNAL?distance???:??STD_LOGIC_VECTOR(15?DOWNTO?0);--路程 ???SIGNAL?distance_int???:??integer;--路程 ???SIGNAL?distance_int_100???:??integer;--路程(米) ???SIGNAL?total_second????:?integer?:=?0;? ???SIGNAL?speed_int?:??integer;--速度 ??? BEGIN --控制計(jì)時(shí)使能信號(hào) ???PROCESS?(clk_in) ???BEGIN ??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN?--?檢測(cè)到時(shí)鐘上升沿 ?????????IF?(reset?=?'1')?THEN? ????????????time_en?<=?'0';?--?計(jì)時(shí)使能 ?????????ELSIF(start_key?=?'1')THEN time_en?<=?'1';?--?開始計(jì)時(shí)使能 ELSIF(end_key?=?'1')THEN time_en?<=?'0';?--?停止計(jì)時(shí)使能 END?IF; END?IF; ???END?PROCESS;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1527