这段代码是一个计程车的控制器,通过输入不同的按键控制计程车的状态和费用计算。下面是对代码的逐行解释:

  1. library ieee;:引入了ieee标准库

  2. use ieee.std_logic_1164.all;:使用标准库中的std_logic_1164类型

  3. use ieee.std_logic_arith.all;:使用标准库中的std_logic_arith类型

  4. use ieee.std_logic_unsigned.all;:使用标准库中的std_logic_unsigned类型

  5. ENTITY taxi is:定义实体taxi

  6. port:定义实体的输入输出端口

  7. architecture cost of taxi is:定义结构体cost作为实体的结构

  8. TYPE digital_ARRAY is array (7 downto 0) of std_logic_vector(7 downto 0);:定义digital_ARRAY类型,是一个8*8的二维数组

  9. signal digitals : digital_ARRAY;:定义一个信号digitals,类型是digital_ARRAY

  10. signal digital_index : integer range 0 to 7 := 0;:定义一个整数信号digital_index,范围是0到7,默认值是0

  11. TYPE digital_codes is array (0 to 9) of std_logic_vector(7 downto 0);:定义digital_codes类型,是一个10*8的二维数组

  12. signal digital_code : digital_codes;:定义一个信号digital_code,类型是digital_codes

  13. signal digital_code_point : digital_codes;:定义一个信号digital_code_point,类型是digital_codes

  14. signal flag : std_logic := '0';:定义一个标志位信号flag,默认值是0

  15. signal state : integer range 0 to 1 := 0;:定义一个状态信号state,范围是0到1,默认值是0

  16. signal km_0 : std_logic_vector(3 downto 0):= "0000";:定义一个公里数低位信号km_0,长度为4位,默认值是“0000”

  17. signal km_1 : std_logic_vector(3 downto 0):= "0000";:定义一个公里数高位信号km_1,长度为4位,默认值是“0000”

  18. signal free_0 : std_logic_vector(4 downto 0) :="00000";:定义一个费用低位信号free_0,长度为5位,默认值是“00000”

  19. signal free_1 : std_logic_vector(4 downto 0) :="01000";:定义一个费用中间位信号free_1,长度为5位,默认值是“01000”

  20. signal free_2 : std_logic_vector(4 downto 0) :="00000";:定义一个费用高位信号free_2,长度为5位,默认值是“00000”

  21. signal flag_free : std_logic := '0';:定义一个标志位信号flag_free,默认值是0

  22. signal wait_time_min : std_logic_vector(3 downto 0) := "0000";:定义一个等待时间分钟位信号wait_time_min,长度为4位,默认值是“0000”

  23. signal wait_time_sec_0 : std_logic_vector(3 downto 0):= "0000";:定义一个等待时间秒数低位信号wait_time_sec_0,长度为4位,默认值是“0000”

  24. signal wait_time_sec_1 : std_logic_vector(3 downto 0):= "0000";:定义一个等待时间秒数高位信号wait_time_sec_1,长度为4位,默认值是“0000”

  25. signal counter_6 : integer range 0 to 6 :=0;:定义一个计数器信号counter_6,范围是0到6,默认值是0

  26. digital_code(0) <= "11111100";:定义数字0在数码管上的显示方式

  27. digital_code(1) <= "01100000";:定义数字1在数码管上的显示方式

  28. digital_code(2) <= "11011010";:定义数字2在数码管上的显示方式

  29. digital_code(3) <= "11110010";:定义数字3在数码管上的显示方式

  30. digital_code(4) <= "01100110";:定义数字4在数码管上的显示方式

  31. digital_code(5) <= "10110110";:定义数字5在数码管上的显示方式

  32. digital_code(6) <= "10111110";:定义数字6在数码管上的显示方式

  33. digital_code(7) <= "11100000";:定义数字7在数码管上的显示方式

  34. digital_code(8) <= "11111110";:定义数字8在数码管上的显示方式

  35. digital_code(9) <= "11110110";:定义数字9在数码管上的显示方式

  36. digital_code_point(0) <= "11111101";:定义数字0在数码管上加小数点的显示方式

  37. digital_code_point(1) <= "01100001";:定义数字1在数码管上加小数点的显示方式

  38. digital_code_point(2) <= "11011011";:定义数字2在数码管上加小数点的显示方式

  39. digital_code_point(3) <= "11110011";:定义数字3在数码管上加小数点的显示方式

  40. digital_code_point(4) <= "01100111";:定义数字4在数码管上加小数点的显示方式

  41. digital_code_point(5) <= "10110111";:定义数字5在数码管上加小数点的显示方式

  42. digital_code_point(6) <= "10111111";:定义数字6在数码管上加小数点的显示方式

  43. digital_code_point(7) <= "11100001";:定义数字7在数码管上加小数点的显示方式

  44. digital_code_point(8) <= "11111111";:定义数字8在数码管上加小数点的显示方式

  45. digital_code_point(9) <= "11110111";:定义数字9在数码管上加小数点的显示方式

  46. digital_show:process(clk_digital):定义数字显示的过程

  47. if clk_digital'event and clk_digital = '1' then:如果时钟上升沿发生且时钟为1

  48. digital <= digitals(digital_index);:将digitals中digital_index指定的行赋值给digital

  49. sel <= NOT ( conv_std_logic_vector(2**digital_index,8) );:构造一个位向量,选中当前数码管

  50. if digital_index = 7 then:如果digital_index为7

  51. digita

library ieee;use ieeestd_logic_1164all;use ieeestd_logic_arithall;use ieeestd_logic_unsignedall;ENTITY taxi is					--配置实体	port		clk_digital in std_logic;		clk_run in std_logic;		key_begin in std_log

原文地址: https://www.cveoy.top/t/topic/hfiS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录