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

汽车速度表设计VHDL代码Quartus 21EDA CPLD开发板

04/17 15:44
449
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2412241Z131564.doc

共1个文件

名称:汽车速度表设计VHDL代码Quartus  21EDA CPLD开发板

软件:Quartus

语言:VHDL

代码功能:

汽车速度表设计

设计一个汽车速度表。车轮每转一圈会产生一个脉冲,每个脉冲代表1米的距离,根据单位时间的脉冲数可推算出汽车的速度。

要求:(1)模拟产生车轮运转产生的脉冲信号并对其计数,用按键选择脉冲信号的不同频率

(2)每隔10秒读取一次脉冲计数器,并据此计算车速;

(3)用数码管显示车速,单位Km/h;

(4)给出超速警告。←

 

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

本代码已在21EDA CPLD开发板验证,21EDA CPLD开发板如下,其他开发板可以修改管脚适配:21EDA CPLD开发板.png

演示视频:

设计文档:

1. 工程文件

 

2. 程序文件

 

3. 程序编译

 

4. RTL图

管脚

5. Testbench

 

6. 仿真图

 

 

按键模块

控制模块

速度模块

报警模块

 

显示模块

 

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
   USE ieee.std_logic_arith.all;
--显示模块
ENTITY display IS
   PORT (
      clk         : IN STD_LOGIC;
      speed_num   : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--输出速度值
      bit_select  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管位选
      seg_select  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选
   );
END display;
ARCHITECTURE behave OF display IS
component B_to_BCD IS
   PORT (
      clk      : IN STD_LOGIC;
      data_in  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--二进制输入
  Bai    : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--百位
      Shi    : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--十位
      Ge    : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--个位
   );
END component;
   
   SIGNAL display_num : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";
   SIGNAL geshu       : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000";
SIGNAL hun  : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; --计算结果百位
SIGNAL ten  : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计算结果十位
SIGNAL one  : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; --计算结果个位
BEGIN
B_to_BCD_U: B_to_BCD
   PORT MAP (
      clk      => clk,
      data_in  => speed_num,--二进制输入--speed_num
   Bai    => hun,--百位
      Shi    => ten,--十位
      Ge    => one--个位
   );
--------------------------------------------位选--
   PROCESS (clk)
   BEGIN
      IF (clk\'EVENT AND clk = \'1\') THEN
         IF (geshu = "101") THEN
            geshu <= "000";
         ELSE
            geshu <= geshu + "001"; --扫描那个管子的指示位
         END IF;
      END IF;
   END PROCESS;

 

 

  • 2-2412241Z131564.doc
    下载

相关推荐