• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

05/19 10:48
663
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2505160Z95XX.doc

共1个文件

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

软件:Quartus

语言:VHDL

代码功能:

骑行码数表设计

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

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

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

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

提示:

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

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

3、显示使用OLED显示屏

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

演示视频:

设计文档:

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;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1527

  • 2-2505160Z95XX.doc
    下载

相关推荐