score_show.vhd

来自「游戏代码」· VHDL 代码 · 共 87 行

VHD
87
字号
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 + =
减小字号Ctrl + -
显示快捷键?