📄 led.vhd
字号:
---------------------------------------------------------------------------------------------------
--*************************************************************************************************
-- CreateDate : 2007-08-18
-- ModifData : 2007-08-18
-- Description : LED Display
-- Author : Explorer01
-- Version : V1.0
--*************************************************************************************************
---------------------------------------------------------------------------------------------------
-- VHDL library Declarations
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_unsigned.ALL;
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-- The Entity Declarations
ENTITY LED IS
PORT
(
RESET: IN STD_LOGIC;
ClockScan: IN STD_LOGIC;
CLK1Hz: IN STD_LOGIC;
-----------------------------------------------
LEDValue : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DigitValue: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
LightValue: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
-----------------------------------------------
-- LED
Segment: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
Digit: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
-- Light
Light: OUT std_logic_vector(7 DOWNTO 0)
);
END LED;
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-- The Architecture of Entity Declarations
ARCHITECTURE Behavioral OF LED IS
SIGNAL VALUE: STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL Refresh: STD_LOGIC_VECTOR(2 DOWNTO 0);
TYPE RAM IS ARRAY( 0 TO 7 ) OF STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL RAM_ARRAY : RAM;
CONSTANT RAM_INIT: RAM :=("0000","0000","0000","0000","0000","0000","0000","0000");
BEGIN
-------------------------------------------------
-- Encoder
-- HEX-to-seven-segment decoder
-- segment encoding
-- 0
-- ---
-- 5 | | 1
-- --- <- 6
-- 4 | | 2
-- ---
-- 3
PROCESS( VALUE, CLK1Hz, Refresh )
BEGIN
CASE VALUE IS
when "0000"=>Segment(6 DOWNTO 0)<= "0111111"; --'0'
when "0001"=>Segment(6 DOWNTO 0)<= "0000110"; --'1'
when "0010"=>Segment(6 DOWNTO 0)<= "1011011"; --'2'
when "0011"=>Segment(6 DOWNTO 0)<= "1001111"; --'3'
when "0100"=>Segment(6 DOWNTO 0)<= "1100110"; --'4'
when "0101"=>Segment(6 DOWNTO 0)<= "1101101"; --'5'
when "0110"=>Segment(6 DOWNTO 0)<= "1111101"; --'6'
when "0111"=>Segment(6 DOWNTO 0)<= "0000111"; --'7'
when "1000"=>Segment(6 DOWNTO 0)<= "1111111"; --'8'
when "1001"=>Segment(6 DOWNTO 0)<= "1101111"; --'9'
when "1010"=>Segment(6 DOWNTO 0)<= "1110111"; --'A'
when "1011"=>Segment(6 DOWNTO 0)<= "1111100"; --'b'
when "1100"=>Segment(6 DOWNTO 0)<= "0111001"; --'C'
when "1101"=>Segment(6 DOWNTO 0)<= "1011110"; --'d'
when "1110"=>Segment(6 DOWNTO 0)<= "1111001"; --'E'
when "1111"=>Segment(6 DOWNTO 0)<= "1110001"; --'F'
when others=>Segment(6 DOWNTO 0)<= "XXXXXXX"; --' '
END CASE;
IF( Refresh=1 ) THEN Segment( 7 ) <= CLK1Hz;
ELSE Segment( 7 ) <= '0';
END IF;
END PROCESS;
-------------------------------------------------
-- Value Input
PROCESS( RESET, LEDValue, DigitValue )
BEGIN
IF( RESET='0' ) THEN
RAM_ARRAY <= RAM_INIT;
ELSE
RAM_ARRAY( CONV_INTEGER(DigitValue) ) <= LEDValue;
END IF;
END PROCESS;
-------------------------------------------------
-- MUX
PROCESS( ClockScan, Refresh, RAM_ARRAY )
BEGIN
IF( ClockScan'EVENT AND ClockScan = '1' )THEN
Refresh <= Refresh + 1;
END IF;
VALUE <= RAM_ARRAY( CONV_INTEGER(Refresh) );
Digit <= Refresh;
END PROCESS;
-------------------------------------------------
-------------------------------------------------
-- Light
-- Light <= NOT LightValue;
Light <= LightValue;
END Behavioral;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -