LED_BUPT

LED_BUPT

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY LED_BUPT IS
	PORT(clk:IN STD_LOGIC;
		 rst:IN STD_LOGIC;
		 disp_row:OUT STD_LOGIC_VECTOR(7 downto 0);
	-- clktmp1:BUFFER STD_LOGIC;
	 --clktmp2:BUFFER STD_LOGIC;
	 --tmp1:BUFFER INTEGER RANGE 0 TO 9;
	-- tmp2:BUFFER INTEGER RANGE 0 TO 9;
	-- i:BUFFER INTEGER RANGE 0 TO 7;
	-- j:BUFFER INTEGER RANGE 0 TO 7;
		 disp_col:OUT STD_LOGIC_VECTOR(0 to 7));
END LED_BUPT;

ARCHITECTURE LED_display OF LED_BUPT IS

signal timer_count:INTEGER RANGE 0 TO 9;

SIGNAL clktmp1:STD_LOGIC;
SIGNAL clktmp2:STD_LOGIC;
SIGNAL tmp1:INTEGER RANGE 0 TO 499;
SIGNAL tmp2:INTEGER RANGE 0 TO 9;
SIGNAL i:INTEGER RANGE 0 TO 7;
SIGNAL j:INTEGER RANGE 0 TO 7;

TYPE CHAR is array (1 to 8) of std_logic_vector(0 to 7);
TYPE PHRASE is array (1 to 7) of CHAR;
signal b:CHAR;
signal u:CHAR;
signal p:CHAR;
signal t:CHAR;
signal liu:CHAR;
signal jun:CHAR;
signal ling:CHAR;
signal index:CHAR;
SIGNAL circle:PHRASE;

BEGIN

--DIV 1k/8 AS clktmp1
--DIV 1k/64 AS clktmp2
		
p2:PROCESS (clk)
	BEGIN
		IF (clk'EVENT AND clk = '1') THEN
			IF (tmp2 = 3) THEN
			tmp2<=0;clktmp2<= NOT clktmp2;
				ELSE
				tmp2<=tmp2+1;
			END IF;
			IF (j=8) THEN 
				j<=1;
				ELSE j<=j+1;
			END IF;
		END IF;
	END PROCESS;
	
p3:PROCESS (clktmp2)
	BEGIN
		IF (clktmp2'EVENT AND clktmp2 = '1') THEN
			IF (i=8) then
				i<=1;
				ELSE IF (tmp1=499) THEN 
					i<=i+1;
					END IF;
				END IF;
			END IF;
	END PROCESS;	
	
p4:PROCESS (j)
BEGIN
	index<=("01111111","10111111","11011111","11101111","11110111","11111011","11111101","11111110");
	disp_row<=index(j+1);
--	disp_col<="11111100";
	disp_col<=circle(i)(j+1);
--	disp_row lit when 0 ; disp_col lit when 1 ; disp_row lit actual column ; disp_col lit actual row
	circle<=(b,u,p,t,liu,jun,ling);
	b<=("11111100",
		"01000110",
		"01000110",
		"01111000",
		"01000110",
		"01000010",
		"01000110",
		"11111100");
	u<=("11100111",
		"01000010",
		"01000010",
		"01000010",
		"01000010",
		"01000010",
		"01100010",
		"00111100");
	p<=("11111100",
		"01100110",
		"01100010",
		"01100110",
		"01111100",
		"01100000",
		"01100000",
		"11110000");
	t<=("11111111",
		"10011001",
		"00011000",
		"00011000",
		"00011000",
		"00011000",
		"00011000",
		"00111100");
	liu<=("11110000",
		  "01100000",
		  "01100000",
		  "01100000",
		  "01100000",
		  "01100001",
		  "01100011",
		  "11111111");
	jun<=("00011111",
		  "00001110",
		  "00000110",
		  "00000110",
		  "00000110",
		  "01000110",
		  "11100100",
		  "00111000");
	ling<=("11110000",
		  "01100000",
		  "01100000",
		  "01100000",
		  "01100000",
		  "01100001",
		  "01100011",
		  "11111111");  		
	END PROCESS;
END; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值