📄 taxijifeiqi.txt
字号:
--实验十四 出租车计费器
--里程计算模块
-- LCJS.VHD
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity LCJS is
GENERIC(--0:INTEGER:=160 ; -- 06:00-22:00单价
--1:INTEGER:=180; -- 其它时间
qibu:INTEGER:=60 -- 起步公里数,6公里内为固定价格
--jg:INTEGER:=1000 --起步价格,6公里内为10元
);
port ( START,DDBZ,WCLK: in std_logic;
XSLC : out std_logic_vector(15 downto 0);
LCBZ,jfbz : out std_logic
);
end entity;
architecture arch of LCJS is
signal bms : std_logic_vector(15 downto 0); --百米数
signal bms1:integer range 0 to 99999;
signal jfbz1:std_logic;
begin
PROCESS(start,wclk)
variable sms :std_logic_vector(7 downto 0); -- 十米数
BEGIN
if start='1' then --new cycle,not wait,running
sms:="00000000";
bms<="0000000000000000"; -- 百米数
lcbz<='0';
elsif wclk'event and wclk='1' then
if ddbz='0' then -- 行驶中
if sms="00001010" then --10次计数,100m
sms:="00000000";
bms<=bms+1;--- new 100m
if bms>=qibu then --->6km大于起步里程, 60 00m
lcbz<='1';
end if ;
else
sms:=sms+1;
end if;
end if;
end if;
end process;
---里程计算结果输出
xslc<=bms;
--- 里程计算结果转换
BMS1<=CONV_INTEGER(BMS);
---generate 计费信号
process(bms1)
begin
case bms1 is
when 10|20|30|40|50|60|70|80|90|100=>jfbz1<='1';
when 110|120|130|140|150|160|170|180|190|200=>jfbz1<='1';
when 210|220|230|240|250|260|270|280|290|300=>jfbz1<='1';
when 310|320|330|340|350|360|370|380|390|400=>jfbz1<='1';
when 410|420|430|440|450|460|470|480|490|500=>jfbz1<='1';
when 510|520|530|540|550|560|570|580|590|600=>jfbz1<='1';
when 610|620|630|640|650|660|670|680|690|700=>jfbz1<='1';
when 710|720|730|740|750|760|770|780|790|800=>jfbz1<='1';
when 810|820|830|840|850|860|870|880|890|900=>jfbz1<='1';
when 910|920|930|940|950|960|970|980|990|1000=>jfbz1<='1';
when 1010|1020|1030|1040|1050|1060|1070|1080|1090|1100=>jfbz1<='1';
when 1110|1120|1130|1140|1150|1160|1170|1180|1190|1200=>jfbz1<='1';
when 1210|1220|1230|1240|1250|1260|1270|1280|1290|1300=>jfbz1<='1';
when 1310|13130|1330|1340|1350|1360|1370|1380|1390|1400=>jfbz1<='1';
when 1410|1420|1430|14140|1450|1460|1470|1480|1490|1500=>jfbz1<='1';
when 1510|1520|1530|1540|15150|1560|1570|1580|1590|1600=>jfbz1<='1';
when 1610|1620|1630|1640|1650|16160|1670|1680|1690|1700=>jfbz1<='1';
when 1710|1720|1730|1740|1750|1760|1770|1780|1790|1800=>jfbz1<='1';
when 1810|1820|1830|1840|1850|1860|1870|18180|1890|1900=>jfbz1<='1';
when 1910|1920|1930|1940|1950|1960|1970|1980|1990|2000=>jfbz1<='1';
when 2010|2020|2030|2040|2050|2060|2070|2080|2090|2100=>jfbz1<='1';
when 2110|2120|2130|2140|2150|2160|2170|2180|2190|2200=>jfbz1<='1';
when 2210|22220|2230|2240|2250|2260|2270|2280|2290|2300=>jfbz1<='1';
when 2310|2320|2330|2340|2350|2360|2370|2380|2390|2400=>jfbz1<='1';
when 2410|2420|2430|24240|2450|2460|2470|2480|2490|2500=>jfbz1<='1';
when 2510|2520|2530|2540|25250|2560|2570|2580|2590|2600=>jfbz1<='1';
when 2610|2620|2630|2640|2650|26260|2670|2680|2690|2700=>jfbz1<='1';
when 2710|2720|2730|2740|2750|2760|2770|2780|2790|2800=>jfbz1<='1';
when 2810|2820|2830|2840|2850|2860|2870|28280|2890|2900=>jfbz1<='1';
when 2910|2920|2930|2940|2950|2960|2970|2980|2990|3000=>jfbz1<='1';
when others =>jfbz1<='0';
end case;
end process;
--计费标志去毛刺
process(wclk,jfbz1)
begin
if wclk'event and wclk='1' then
jfbz<=jfbz1;
end if ;
end process;
end arch;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -