📄 score_show.vhd
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY score_show IS
PORT(clk: IN STD_LOGIC;
score1,score2: IN integer range 0 to 11;
total1,total2: IN integer range 0 to 4;
cat:OUT STD_LOGIC_VECTOR(5 downto 0);--数码管选通
digit:OUT STD_LOGIC_VECTOR(6 downto 0));-- 数码管显示
END ENTITY;
ARCHITECTURE main OF score_show IS
SIGNAL count:integer range 0 to 5;
SIGNAL d1,d2,d3,d4,d5,d6:STD_LOGIC_VECTOR(6 downto 0);
BEGIN
PROCESS(score1,score2)
BEGIN --以下为分数译码进程
CASE score1 IS
when 0=> d1 <= "0000000"; d2 <= "1111110";
when 1=> d1 <= "0000000"; d2 <= "0110000";
when 2=> d1 <= "0000000"; d2 <= "1101101";
when 3=> d1 <= "0000000"; d2 <= "1111001";
when 4=> d1 <= "0000000"; d2 <= "0110011";
when 5=> d1 <= "0000000"; d2 <= "1011011";
when 6=> d1 <= "0000000"; d2 <= "1011111";
when 7=> d1 <= "0000000"; d2 <= "1110000";
when 8=> d1 <= "0000000"; d2 <= "1111111";
when 9=> d1 <= "0000000"; d2 <= "1111011";
when 10=>d1 <= "0110000"; d2 <= "1111110";
when 11=>d1 <= "0110000"; d2 <= "0110000";
END CASE;
CASE score2 IS
when 0=> d3 <= "0000000"; d4 <= "1111110";
when 1=> d3 <= "0000000"; d4 <= "0110000";
when 2=> d3 <= "0000000"; d4 <= "1101101";
when 3=> d3 <= "0000000"; d4 <= "1111001";
when 4=> d3 <= "0000000"; d4 <= "0110011";
when 5=> d3 <= "0000000"; d4 <= "1011011";
when 6=> d3 <= "0000000"; d4 <= "1011111";
when 7=> d3 <= "0000000"; d4 <= "1110000";
when 8=> d3 <= "0000000"; d4 <= "1111111";
when 9=> d3 <= "0000000"; d4 <= "1111011";
when 10=>d3 <= "0110000"; d4 <= "1111110";
when 11=>d3 <= "0110000"; d4 <= "0110000";
END CASE;
END PROCESS;
PROCESS(total1,total2)
BEGIN
CASE total1 IS
when 0=> d5 <= "1111110";
when 1=> d5 <= "0110000";
when 2=> d5 <= "1101101";
when 3=> d5 <= "1111001";
when 4=> d5 <= "0110011";
END CASE;
CASE total2 IS
when 0=> d6 <= "1111110";
when 1=> d6 <= "0110000";
when 2=> d6 <= "1101101";
when 3=> d6 <= "1111001";
when 4=> d6 <= "0110011";
END CASE;
END PROCESS;
PROCESS(clk)
BEGIN
if(rising_edge(clk)) then -- 扫描数码管
if(count=6) then count <= 0;
else
CASE count IS
when 0=> cat <= "011111";digit <= d1;-- 先扫描显示比分
when 1=> cat <= "101111";digit <= d2;
when 2=> cat <= "111101";digit <= d3;
when 3=> cat <= "111110";digit <= d4;
when 4=> cat <= "110111";digit <= d5;-- 再扫描显示总比分
when 5=> cat <= "111011";digit <= d6;
END CASE;
count <= count + 1;
end if;
end if;
END PROCESS;
END ARCHITECTURE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -