名称:出租车计费器区分白天晚上设计VHDL代码Quartus EP4C实验箱(文末获取)
软件:Quartus
语言:VHDL
代码功能:
出租车计费器区分白天晚上
脉冲的个数除以10,代表这个轮子转了多少圈.
假设转一圈代表100米,转10圈是个一公里
白天一个价晚上一个价,白天起步价是8块,晚上起步价9块,是白天还是晚上拿个按键去区分,然后三公里以内就是起步价超过三公里,每增加一公里是增加一块钱,
等时,等个6秒就自动加1块钱
本代码已在EP4C实验箱验证,EP4C实验箱如下,其他开发板可以修改管脚适配:
1.工程文件
2.程序文件
3.程序编译
4.RTL图
5.管脚分配
6.仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --显示模块 ENTITY display IS PORT ( clk : IN STD_LOGIC;--标准时钟,10hz reset : IN STD_LOGIC;--复位信号,高有效 wait_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--等待时间 totel_money : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--费用 mileage : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--里程 DS1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); DS2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); DS3 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); DS4 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); DS5 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); DS6 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END display; ARCHITECTURE trans OF display IS --二进制转BCD码 COMPONENT b_to_bcd IS PORT ( clk : IN STD_LOGIC; rst_n : IN STD_LOGIC; binary : IN STD_LOGIC_VECTOR(15 DOWNTO 0); state_en : IN STD_LOGIC; BCD : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END COMPONENT; SIGNAL BCD_mileage_out : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL BCD_totel_money_out : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL BCD_wait_time_out : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL mileage_exd : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL wait_time_exd : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL Kmmoney_L : STD_LOGIC_VECTOR(3 DOWNTO 0);--合计费用 HML=xxx (BCD码显示) SIGNAL Kmmoney_M : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Kmmoney_H : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Kmcount_H : STD_LOGIC_VECTOR(3 DOWNTO 0);--总路程,里程范围为HL=0~99(BCD码显示) SIGNAL Kmcount_L : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Kmtime_H : STD_LOGIC_VECTOR(3 DOWNTO 0);--总时间 SIGNAL Kmtime_L : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN mileage_exd<="00000000" & mileage; wait_time_exd<="00000000" & wait_time; --二进制转BCD码 BCD_mileage : b_to_bcd PORT MAP ( clk =>clk, rst_n =>reset, binary =>mileage_exd, state_en =>'1', BCD =>BCD_mileage_out ); --二进制转BCD码 BCD_totel_money : b_to_bcd PORT MAP ( clk =>clk, rst_n =>reset, binary =>totel_money, state_en =>'1', BCD =>BCD_totel_money_out ); --二进制转BCD码 BCD_wait_time : b_to_bcd PORT MAP ( clk =>clk, rst_n =>reset, binary =>wait_time_exd, state_en =>'1', BCD =>BCD_wait_time_out );
源代码
点击下方的公众号卡片获取