ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:20.15KB ,
资源ID:25662818      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25662818.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VHDL简易出租车计价器.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VHDL简易出租车计价器.docx

1、VHDL简易出租车计价器-顶层文件 top.vhd-LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;USE IEEE. STD_LOGIC_UNSIGNED. ALL;USE IEEE. STD_LOGIC_ARITH. ALL;entity top is port (-输入300Hz时钟clk :in std_logic;-按键输入开始信号s :in std_logic;-按键输入等待信号w :in std_logic;-按键输入加速信号sp :in std_logic;-数码管位选sel :out std_logic_vector(5 downto 0)

2、;-七段数码管显示show :out std_logic_vector(7 downto 0);-点阵列显示col:out std_logic_vector (7 downto 0);-lie shuchu -点阵行显示 row:out std_logic_vector (7 downto 0)-hang shuchu);end top ;architecture structural of top is -按键模块,加入防抖component anjian port ( clk :in std_logic; s :in std_logic; w :in std_logic; sp:in st

3、d_logic; -输出加入防抖后的等待信号 stop :out std_logic; -输出加入防抖后的开始信号 start :out std_logic; -输出加入防抖后的调速信号,共3档:00,01,10 speeding:out std_logic_vector(1 downto 0) ); end component;-计时,计里程,计费模块component taxi port( - clk :in std_logic; - start :in std_logic; - night :in std_logic; stop :in std_logic; - mile :in std

4、_logic; -总价格 char0 :out std_logic_vector(3 downto 0); char1 :out std_logic_vector(3 downto 0); char2 :out std_logic_vector(3 downto 0); -总等待时间 min0 :out std_logic_vector(3 downto 0); min1 :out std_logic_vector(3 downto 0); -单程总里程 km0 :out std_logic_vector(3 downto 0); km1 :out std_logic_vector(3 dow

5、nto 0) ); end component; -数码管显示模块 component display port( - reset :in std_logic; - clk :in std_logic; - char0 :in std_logic_vector(3 downto 0); char1 :in std_logic_vector(3 downto 0); char2 :in std_logic_vector(3 downto 0); - min0 :in std_logic_vector(3 downto 0); min1 :in std_logic_vector(3 downto

6、0); - km0 :in std_logic_vector(3 downto 0); km1 :in std_logic_vector(3 downto 0); - sel :out std_logic_vector(5 downto 0); - show :out std_logic_vector(7 downto 0) ); end component; -调速模块component speed port ( clk :in std_logic; speeding :in std_logic_vector(1 downto 0);-输出公里脉冲信号 mile :out std_logic

7、 ); end component; -点阵显示模块component dianzhen port (clk:in std_logic; Start,sp:in std_logic; col:out std_logic_vector (7 downto 0);-lie shuchu row:out std_logic_vector (7 downto 0)-hang shuchu ); end component; - signal char0 :std_logic_vector(3 downto 0); signal char1 :std_logic_vector(3 downto 0);

8、signal char2 :std_logic_vector(3 downto 0); -signal char3 :std_logic_vector(3 downto 0); signal min0 :std_logic_vector(3 downto 0); signal min1 :std_logic_vector(3 downto 0); signal km0 :std_logic_vector(3 downto 0); signal km1 :std_logic_vector(3 downto 0); signal mile :std_logic; signal stop:std_l

9、ogic; signal start:std_logic; signal speeding :std_logic_vector(1 downto 0); begin ss_control:anjian port map( clk=clk, s=s, w=w, start=start, stop=stop, sp=sp, speeding=speeding); taxi_control: taxi port map( - clk =clk, - start =start, - stop =stop, - mile =mile, -night=night, char0 =char0, char1

10、=char1, char2 =char2, -char3 =char3, - min0 =min0, min1 =min1, - km0 =km0, km1 =km1 ); display_control:display port map( - reset =start, - clk =clk, - char0 =char0, char1 =char1, char2 =char2, - min0 =min0, min1 =min1, - km0 =km0, km1 =km1, - sel =sel, - show =show ); speed_control:speed port map( c

11、lk=clk, mile=mile, speeding=speeding);dianzhen_control:dianzhenport map ( clk=clk, start=start, col=col, row=row, Sp=sp ); end structural;-按键模块 anjian.vhd-library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity anjian is port ( clk :in std_logic; s :in std_logic; w,sp :in std

12、_logic; stop :out std_logic; start :out std_logic; speeding:out std_logic_vector(1 downto 0) ); end anjian; architecture one of anjian is signal stop1 :std_logic; signal start1 :std_logic;SIGNAL count,scount,count1,scount1,count2,scount2: INTEGER RANGE 0 TO 1999; SIGNAL tkey,tkey1,tkey2 : STD_LOGIC;

13、 SIGNAL JO,jo1,jo2:INTEGER; BEGIN-加入防抖程序,利用按键控制输出开始信号-p1:PROCESS(clk)BEGINIF (clkevent AND clk=1) THEN -计数器 IF s=1 THEN IF count=1999 THEN count=count; ELSE count=count+1; END IF; IF count=1998 THEN tkey=1; ELSE tkey=0; END IF; ELSE count=0; END IF;END IF;END PROCESS p1;p2:PROCESS(tkey,scount)BEGINI

14、F (tkeyevent AND tkey=1) THEN scount=scount+1; ELSE scount=scount;END IF;JO=scount rem 2; END PROCESS p2;p3:PROCESS(JO)BEGINIF JO=0 THEN -判断按键的次数,奇数为1,偶数位0start1=0;ELSEstart1=1;END IF;END PROCESS p3;start=start1;-加入防抖程序,利用按键控制输出等待信号-p4:PROCESS(clk)BEGINIF (clkevent AND clk=1) THEN IF w=1 THEN IF cou

15、nt1=19 THEN count1=count1; ELSE count1=count1+1; END IF; IF count1=18 THEN tkey1=1; ELSE tkey1=0; END IF; ELSE count1=0; END IF;END IF;END PROCESS p4;p5:PROCESS(tkey1,scount1)BEGINIF (tkey1event AND tkey1=1) THEN scount1=scount1+1; ELSE scount1=scount1;END IF;JO1=scount1 rem 2;END PROCESS p5;p6:PROC

16、ESS(JO1)BEGINIF JO1=0 THEN -判断按键的次数,奇数为1,偶数位0stop1=0;ELSEstop1=1;END IF;END PROCESS p6;stop=stop1;-加入防抖程序,利用按键控制输出调速信号-PROCESS(clk)BEGINIF (clkevent AND clk=1) THEN IF sp=1 THEN IF count2=19 THEN count2=count2; ELSE count2=count2+1; END IF; IF count2=18 THEN tkey2=1; ELSE tkey2=0; END IF; ELSE count

17、2=0; END IF;END IF;END PROCESS;PROCESS(tkey2,scount2)BEGINIF (tkey2event AND tkey2=1) THEN if scount2=2 then scount2=0; else scount2=scount2+1; end if; ELSE scount2=scount2;end if;if scount2=0 then -根据按键的次数判断调速的不同档,一次为00,两次为01,三次 speeding=00; -为10speeding=00;elsif scount2=1 thenspeeding=01;elsif sco

18、unt2=2 thenspeeding=10;end if;END PROCESS;END one;-调速模块 speed.vhd-LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;USE IEEE. STD_LOGIC_UNSIGNED. ALL;USE IEEE. STD_LOGIC_ARITH. ALL;entity speed isport ( clk :in std_logic; mile :out std_logic; -输出公里脉冲信号 speeding :in std_logic_vector(1 downto 0); -调速信号,分为三档 e

19、nd speed; architecture one of speed is signal mile1 :std_logic; signal q_temp :integer range 0 to 999999999; signal q_temp1 :integer range 0 to 999999999; begin mile=mile1; process(clk,speeding) begin if speeding=00 then -根据调速信号的不同档,进行不同的分频 q_temp1=99999999; elsif speeding=01 then q_temp1=49999999;

20、elsif speeding=10 then q_temp1=q_temp1 then q_temp=0; mile1=1; else q_temp=q_temp+1; mile1=0; end if ; end if ; end process; end one;-计时计里程计费模块 taxi.vhd-LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;USE IEEE. STD_LOGIC_UNSIGNED. ALL;USE IEEE. STD_LOGIC_ARITH. ALL;ENTiTY taxi ISPORT( -输入时钟 clk :IN STD_LO

21、GIC; -计价器启动 Start :IN STD_LOGIC; -等待信号 Stop :IN STD_LOGIC; -公里脉冲信号 mile :in std_logic; - SIGNAL f_wait1 :out STD_LOGIC ;-SIGNAL f1 :out STD_LOGIC ; -计费输出 Char0 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; Char1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; Char2 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; -等待时间输出 min0 :OUT ST

22、D_LOGIC_VECTOR(3 DOWNTO 0) ; Min1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; -行驶公里输出 km0 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; Km1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END taxi;ARCHITECTURE behave of taxi IS-分频得1HZ时钟SIGNAL clk1hz :STD_LOGIC;-分频器SIGNAL q :INTEGER RANGE 0 to 49999999;SIGNAL sec :iNTEGER RANGE 0

23、 to 2;signal a :iNTEGER RANGE 0 to 4;-计费寄存器SIGNAL c3,c2,c1,c0 :STD_LOGIC_VECTOR(3 DOWNTO 0);-公里寄存器SIGNAL k0 :STD_LOGIC_VECTOR(3 DOWNTO 0) ;SIGNAL k1 :STD_LOGIC_VECTOR(3 DOWNTO 0) ;-等待时间寄存器SIGNAL m1 :STD_LOGIC_VECTOR(3 DOWNTO 0) ;SIGNAL m0 :STD_LOGIC_VECTOR(3 DOWNTO 0) ;-路程大于3公里,使能有效SIGNAL en0 :STD_LOGIC ;SIGNAL en1 :STD_LOGIC ;-等待时间,1脉冲/3秒SIGNAL f_wait :STD_LOGIC ;-公里脉冲signal f_mile_r :std_logic;-计费时钟SIGNAL f : STD_LOGIC ;-单价SIGNAL c :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN -输出显示 min0 = m0; Min1 =

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1