名称:出租车计费器区分白天晚上设计VHDL代码Quartus? EP4C实验箱
软件:Quartus
语言:VHDL
代码功能:
出租车计费器区分白天晚上
脉冲的个数除以10,代表这个轮子转了多少圈。
假设转一圈代表100米,转10圈是个一公里。
白天一个价晚上一个价,白天起步价是8块,晚上起步价9块,是白天还是晚上拿个按键去区分,然后三公里以内就是起步价超过三公里,每增加一公里是增加一块钱,等时,等个6秒就自动加1块钱。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在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 ???);
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1074
阅读全文
234