My title page contents

骑行码数表设计VHDL代码Quartus仿真

名称:骑行码数表设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

骑行码数表设计

设计一个骑行码速表,其功能要求如下:

1、速度和距离:码速表可以实时显示骑行速度和行驶距离,帮助骑行者了解自己的骑行表现。

2、时间管理:记录骑行时间,帮助骑行者制定和调整训练计划。

其余功能根据自己调研情况自由发挥。

提示:

1、使用频率为10Hz的时钟信号(频率太高耗电量高),做一个时钟,用于时间管理。

2、设置按钮,用于显示切换,时钟设置、数据清零、轮毂尺寸设置等,一个供系统“复位”用。

3、显示使用OLED显示屏。


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1、工程文件


2、程序文件



3、程序编译


4、RTL图


5、Testbench


6、仿真图

整体仿真图

上图可以看出,总共骑行3分26秒,骑行距离478米。计算的骑行速度为2.3米每秒



分频器模块


模式设置模块


轮毂尺寸设置模块



控制模块



显示模块


部分代码展示:


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时钟输入
      reset       : IN STD_LOGIC; -- 重置信号
  Wheel_pulse : IN STD_LOGIC;--车轮脉冲,骑行一圈对应一个脉冲
      start_key   : IN STD_LOGIC; --开始骑行按键
      end_key     : IN STD_LOGIC; -- 停止骑行按键
      clk_1Hz     : IN STD_LOGIC; -- 1Hz时钟信号
  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); -- 小时输出
      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"; -- 小时信号
   SIGNAL minute         : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000"; -- 分钟信号
   SIGNAL second         : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000001"; -- 秒信号
   
   SIGNAL hour_int           : integer; -- 小时信号
   SIGNAL minute_int         : integer; -- 分钟信号
   SIGNAL second_int         : integer; -- 秒信号
   
   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
--控制计时使能信号
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN -- 检测到时钟上升沿
         IF (reset = '1') THEN 
            time_en <= '0'; -- 计时使能
         ELSIF(start_key = '1')THEN
time_en <= '1'; -- 开始计时使能
ELSIF(end_key = '1')THEN
time_en <= '0'; -- 停止计时使能
END IF;
END IF;
   END PROCESS;


代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 骑行码数表设计VHDL代码Quartus仿真

发表评论

加载中~

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员