出租车计价器VHDL程序

发布者:upsilon30最新更新时间:2012-02-11 来源: elecfans关键字:出租车计价器  vhdl 手机看文章 扫描二维码
随时随地手机看文章
   

程序设计与仿真。
1. 出租车计价器VHDL程序
--文件名:taxi.hd 
--功能:出租车计价器 
--最后修改日期:2004.4.9 
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity taxi is
port ( clk_240  :in std_logic;                           --频率为240Hz的时钟                         
       start :in std_logic;                               --计价使能信号
       stop:in std_logic;                                --等待信号
       fin:in std_logic;                                 --公里脉冲信号
       cha3,cha2,cha1,cha0:out std_logic_vector(3 downto 0); --费用数据
       km1,km0:out std_logic_vector(3 downto 0);          --公里数据            
       min1,min0: out std_logic_vector(3 downto 0));       --等待时间   
end taxi;
architecture behav of taxi is
signal f_15,f_16,f_1:std_logic;                       --频率为15Hz,16Hz,1Hz的信号
signal q_15:integer range 0 to 15;                     --分频器
signal q_16:integer range 0 to 14;                     --分频器
signal q_1:integer range 0 to 239;                     --分频器
signal w:integer range 0 to 59;                        --秒计数器 
signal c3,c2,c1,c0:std_logic_vector(3 downto 0);         --制费用计数器
signal k1,k0:std_logic_vector(3 downto 0);              --公里计数器
signal m1:std_logic_vector(2 downto 0);                --分的十位计数器 
signal m0:std_logic_vector(3 downto 0);                --分的个位计数器
signal en1,en0,f:std_logic;                            --使能信号 
begin

feipin:process(clk_240,start)
begin
  if clk_240'event and clk_240='1' then
    if start='0' then q_15<=0;q_16<=0;f_15<='0';f_16<='0';f_1<='0';f<='0';
    else
      if q_15=15 then q_15<=0;f_15<='1';          --此语句得到频率为15Hz的信号
      else q_15<=q_15+1;f_15<='0';
      end if;
      if q_16=14 then q_16<=0;f_16<='1';          --此语句得到频率为16Hz的信号
      else q_16<=q_16+1;f_16<='0'; 
      end if;
      if q_1=239 then q_1<=0;f_1<='1';            --此语句得到频率为1Hz的信号
      else q_1<=q_1+1;f_1<='0';
      end if;
      if en1='1' then f<=f_15;                    --此语句得到计费脉冲f
      elsif en0='1' then f<=f_16;
      else f<='0';
      end if;
    end if;
  end if;
end process;

process(f_1)
begin
  if f_1'event and f_1='1' then
    if start='0' then 
w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";
    elsif stop='1' then 
      if w=59 then w<=0;                             --此语句完成等待计时
        if m0="1001" then m0<="0000";                --此语句完成分计数 
          if m1<="101" then m1<="000";
          else m1<=m1+1;
          end if;
        else m0<=m0+1;
        end if;
        if m1&m0>"0000001"then en1<='1';             --此语句得到en1使能信号
        else en1<='0';
        end if;
      else w<=w+1;en1<='0';
      end if;
    elsif fin='1' then 
      if k0="1001" then k0<="0000";                    --此语句完成公里脉冲计数
        if k1="1001" then k1<="0000";
        else k1<=k1+1;
        end if;
      else k0<=k0+1;
      end if;
      if k1&k0>"00000010" then en0<='1';               --此语句得到en0使能信号
      else en0<='0';
      end if;        
    else en1<='0';en0<='0';
    end if;
cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;                   --费用数据输出
km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;              --公里数据、分钟数据输出
  end if;
end process;

process(f,start)
begin
  if start='0' then c3<="0000";c2<="0001";c1<="0000";c0<="0000";
  elsif f'event and f='1' then
    if c0="1001" then c0<="0000";                       --此语句完成对费用的计数
      if c1="1001" then c1<="0000";
        if c2="1001" then c2<="0000";
          if c3<="1001" then c3<="0000";
          else c3<=c3+1;
          end if;
        else c2<=c2+1;
        end if;
      else c1<=c1+1;
      end if;
    else c0<=c0+1;
    end if;
  end if;
end process;
end behav;   
2. 程序仿真图
 
注:1. 仿真图中秒跟分的关系为3进制,即w为2时就归0;
    2. 出租车总行驶5公里,等待累计时间为4分钟,总费用为16.2元。
图8.22.3 出租计价器程序仿真全图

关键字:出租车计价器  vhdl 引用地址:出租车计价器VHDL程序

上一篇:步进电机定位控制系统VHDL程序与仿真
下一篇:FPGA设计开发中应用仿真技术解决故障的方法

推荐阅读最新更新时间:2024-05-02 21:54

采用VHDL设计的全数字锁相环电路设计
叙述了全数字锁相环的工作原理,提出了应用VHDL 技术设计全数字锁相环的方法,并用复杂可编程逻辑器件CPLD 予以实现,给出了系统主要模块的设计过程和仿真结果。 0  引言 全数字锁相环(DPLL) 由于避免了 模拟 锁相环存在的温度漂移和易受电压变化影响等缺点。从而具备可靠性高、工作稳定、调节方便等优点。在调制解调、频率合成、FM立体声解码、图像处理等各个方面得到广泛的应用。随着 电子 设计自动化(EDA) 技术的发展,采用大规模可编程逻辑器件(如CPLD 或 FPGA ) 和VHDL 语言来设计专用芯片ASIC 和数字系统,而且可以把整个系统集成到一个芯片中,实现系统SOC ,构成片内锁相环。下面介绍采用VHDL技术设计D
[模拟电子]
基于Multisim的VHDL建模与仿真
    随着电子技术的不断发展与进步,电子系统的设计方法发生了很大的变化,基于EDA技术的设计方法正在成为电子系统设计的主流,利用EDA语言编程技术已成为许多高校电类专业学生必须掌握的一门重要技术。NI公司推出的Multisim电子电路仿真软件有丰富元件库、元件品种齐全、具有强大的仿真分析能力,模拟仿真效果接近实际等优点。Multisim具有VHDL仿真功能,除了可以直接对VHDL程序编译波形仿真外,还可以进行VHDL电路模块的设计仿真。随着计算机软件技术的快速发展,电路仿真软件的种类和功能越来越强大,使用VHDL硬件描述语言是当前电子电路设计非常重要的一部分。但是当前使用的仿真软件只能进行波形仿真,如果没有相应的硬件设备仿真效果不
[电源管理]
基于Multisim的<font color='red'>VHDL</font>建模与仿真
基于FPGA的多按键状态识别系统设计方案
1 引言 按键作为普通的输入外设,在仪器仪表工业设备和家用电器中得到广泛应用。目前,按键输入电路Ⅲ主要有2种:一种是非扫描方式可以判断多键状态(允许多键同时动作),但是不适用于大量按键情况,所需I/0端口多;另一种是扫描阵列方式,适用于大量按键,但不能多键同时动作。因此,需要开发一种既适合大量按键又适合多键同时动作,并能节省单片机(MCU)的口线资源的多按键状态识别系统。这里提出一种利用FPGA的I/0端口数多和可编程的特点,采用VHDL语言的多按键状态识别系统,实现识别60个按键自由操作,并简化MCU的控制信号。 2 系统设计方案 FPGA是一种可编程逻辑器件,它具有良好性能、极高的密度和极大的灵活性,外围电路简单可靠等特
[嵌入式]
基于FPGA的多按键状态识别系统设计方案
VHDL语言在CPLD上实现串行通信
引言 随着EDA技术得发展,CPLD已经在许多方面得到了广泛应用,而串行通信是实现远程测控的重要手段。本文利用VHDL语言在CPLD上实现了串行通信,完全可以脱离单片机使用,克服了单片机的许多缺点。 串口结构及内容 本设计所采用的是异步通信方式,可以规定传输的一个数据是10位,其中最低位为启动位(逻辑0低电平),最高位为停止位(逻辑1高电平),中间8位是数据位。为了方便对数据进行正确控制,选取发送(接受)每位数据用4个时钟周期。为了能够达到串行通信的波特率,例如4800B/s,则需把时钟频率设为 19.2kHz。系统结构如图1所示: 图1 系统原理 首先介绍串行通信发送器的工作原理。6位计数器用于
[应用]
基于VHDL的直流电机控制功能模块设计
    随着社会的发展,直流电机的应用越来越普遍,对直流电机控制方式的要求也不断提高。本文利用ALTERA公司最新开发的SOPC解决方案,提出了基于NiosII软核处理器的直流电机功能模块的设计方案,给出了VHDL代码生成功能模块IP核。IP核的生成,不仅方便设计者灵活使用,节省资源,也大大缩短了设计周期。设计者可以根据需要直接调用IP核来组成NiosII系统,然后将此系统下载到FPGA中实现。IP核不仅可以用在电机控制中,还可以用来控制其它一些小型家电,全彩LED等,具有广阔的应用前景。 1 直流电机总体硬件设计     如图1所示,系统整体由FPGA芯片控制,其控制核心为ALTERA公司的NiosII软核CPU,本文将着重介绍图
[电源管理]
基于<font color='red'>VHDL</font>的直流电机控制功能模块设计
单片机多机冗余设计及控制模块的VHDL语言描述
    摘要: 以三个单片机组成的系统为例介绍一种单片机多机冗余容错设计。阐述设计中关键的时钟同步技术和总线仲裁方法,给出控制模块的VHDL语言描述。     关键词: 单片机 冗余容错 时钟 总线 VHDL 本文提出一种表决式单片机多机冗余设计方案。该方案不同于中央系统的多机冗余设计。大规模系统冗余大多采用完善而复杂的机间通讯协议实现系统重构,不太注重系统的实时性。本方案结构简单,易于实现,具有极强的实时性,没有电子开关切换总线的咔嗒声输出。单片机价格低廉、功能灵活,也使得该设计在类似仪器仪表的小系统中的运用成为可能。 1 设计原理 设计结构如图1所示。完成整个冗余设计的电路被置于一个核心控制模块中
[半导体设计/制造]
一种用VHDL设计实现的有线电视机顶盒信源发生方案
VHDL是随着可编辑逻辑器件(PLD)的发展而发展起来的一种硬件描述语言。它是1980年美国国防部VHSIC(超高速集成电路)计划的一部分,并于1986年和1987年分别成为美国国防部和IEEE的工业标准。作为一种硬件设计时采用的标准语言,VHDL具有极强的描述能力,能支持系统行为级、寄存器传输级和门级三个不同层次的设计,这样设计师将在TOP-DOWN设计的全过程中均可方便地使用同一种语言。而且,VHDL设计是一种“概念驱动式”的高层设计技术,设计人员毋需通过门级原理图描述电路,而是针对目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以专心于设计方案和构思上,因此设计工作省时省力,加快了设计周期,并且工艺转换变得轻松。VHDL
[嵌入式]
基于HT46RU24单片机的出租车计价器设计
1 系统硬件组成 总体结构如图一所示。硬件上主要由HT46RU24单片机,霍尔传感器,空载开关,键盘电路,数据存储电路,时钟电路,显示电路,蜂鸣器,IC卡电路以及串口电路组成。 1.1 HT46RU24单片机。 HT46RU24单片机是 HOLTEK公司研制的一种低功耗,高性能的8位单片机。它的ROM为8k*16、RAM为384 bytes,最多有40个双向IO口。除此之外它还具有8通道12位分辨率的A/D转换,A/D转换可用来监测外部模拟信号,如侦测电池电压、电流、温度、湿度、压力、明暗度等。提供两种模式的PWM输出可应用于控温、调速、定电压、定电流等。可控的PFD输出用于发声,或是红外线传输的载波信号。 HT46R
[单片机]
基于HT46RU24单片机的<font color='red'>出租车</font><font color='red'>计价器</font>设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved