名称:设计一个用于篮球比赛的定时器VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
设计一个用于篮球比赛的定时器 (一个工程)
1.基础部分:
(1)定时时间为24秒,按递减方式计时,每隔1秒,定时器减1;
(2)定时器的时间用两位数码管显示;
1. 工程文件
2. 程序文件
3. 程序编译
4. 仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY timer_i IS PORT ( clk_in : IN STD_LOGIC;--时钟100Hz reset : IN STD_LOGIC;--复位 HEX1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管1 HEX2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管2 ); END timer_i; ARCHITECTURE trans OF timer_i IS SIGNAL count : integer := 0; SIGNAL time_ten : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL time_one : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN --分频,分频到1Hz,计数 PROCESS (clk_in, reset) BEGIN IF (reset = '1') THEN count <= 0; ELSIF (clk_in'EVENT AND clk_in = '1') THEN IF (count >= 99) THEN--计数0~99,即计数100个周期 count <= 0; ELSE count <= count + 1;--累加 END IF; END IF; END PROCESS; --24秒计数器 PROCESS (clk_in, reset) BEGIN IF (reset = '1') THEN--24s开始倒计时 time_ten<="0010"; time_one<="0100"; ELSIF (clk_in'EVENT AND clk_in = '1') THEN IF (count >= 99) THEN--1s时间到 IF (time_ten = "0000" and time_one="0000") THEN--判断是否倒计时到0 time_ten<="0000"; time_one<="0000"; ELSIF(time_one="0000")THEN time_ten<=time_ten-"0001";--倒计时 time_one<="1001"; ELSE time_one<=time_one-"0001";--倒计时 END IF; ELSE time_ten<=time_ten; time_one<=time_one; END IF; END IF; END PROCESS; -- time_ten <= time_cnt / 10; -- time_one <= time_cnt %10; --数码管显示 PROCESS (clk_in) BEGIN IF (clk_in'EVENT AND clk_in = '1') THEN CASE time_ten IS--倒计时十位数字显示码 WHEN "0000" => HEX1 <= "11000000"; WHEN "0001" => HEX1 <= "11111001"; WHEN "0010" => HEX1 <= "10100100"; WHEN "0011" => HEX1 <= "10110000"; WHEN "0100" => HEX1 <= "10011001"; WHEN "0101" => HEX1 <= "10010010"; WHEN "0110" => HEX1 <= "10000010"; WHEN "0111" => HEX1 <= "11111000"; WHEN "1000" => HEX1 <= "10000000"; WHEN "1001" => HEX1 <= "10010000"; WHEN OTHERS => END CASE; END IF;
源代码
点击下方的公众号卡片获取