64 lines
2.7 KiB
VHDL
64 lines
2.7 KiB
VHDL
LIBRARY IEEE;
|
|
USE IEEE.STD_LOGIC_1164.ALL;
|
|
|
|
-- Entity: led_controller
|
|
-- Purpose: Controls RGB LED indicators based on audio system status
|
|
-- Provides visual feedback for mute and filter enable states
|
|
ENTITY led_controller IS
|
|
GENERIC (
|
|
LED_WIDTH : POSITIVE := 8 -- Width of LED intensity control (8-bit = 0-255 intensity levels)
|
|
);
|
|
PORT (
|
|
-- Control input signals
|
|
mute_enable : IN STD_LOGIC; -- Mute status (1=audio muted, 0=audio active)
|
|
filter_enable : IN STD_LOGIC; -- Filter status (1=filter active, 0=filter bypassed)
|
|
|
|
-- RGB LED output signals (intensity control)
|
|
led_r : OUT STD_LOGIC_VECTOR(LED_WIDTH - 1 DOWNTO 0); -- Red LED intensity (0-255)
|
|
led_g : OUT STD_LOGIC_VECTOR(LED_WIDTH - 1 DOWNTO 0); -- Green LED intensity (0-255)
|
|
led_b : OUT STD_LOGIC_VECTOR(LED_WIDTH - 1 DOWNTO 0) -- Blue LED intensity (0-255)
|
|
);
|
|
END led_controller;
|
|
|
|
ARCHITECTURE Behavioral OF led_controller IS
|
|
|
|
-- Constants for LED intensity levels
|
|
CONSTANT ALL_ON : STD_LOGIC_VECTOR(LED_WIDTH - 1 DOWNTO 0) := (OTHERS => '1'); -- Maximum brightness (255)
|
|
CONSTANT ALL_OFF : STD_LOGIC_VECTOR(LED_WIDTH - 1 DOWNTO 0) := (OTHERS => '0'); -- LED off (0)
|
|
|
|
BEGIN
|
|
|
|
-- LED Status Indication Logic:
|
|
-- Priority-based color coding for system status
|
|
--
|
|
-- Color Scheme:
|
|
-- RED = Mute active (highest priority - audio completely off)
|
|
-- BLUE = Filter active (medium priority - audio processing enabled)
|
|
-- GREEN = Normal operation (lowest priority - audio pass-through)
|
|
|
|
-- Red LED Control: Indicates mute status
|
|
-- Turn on red LED when audio is muted, regardless of filter state
|
|
led_r <= ALL_ON WHEN mute_enable = '1' ELSE
|
|
ALL_OFF;
|
|
|
|
-- Blue LED Control: Indicates filter activation
|
|
-- Turn on blue LED when filter is active AND audio is not muted
|
|
-- Mute has higher priority than filter indication
|
|
led_b <= ALL_ON WHEN (mute_enable = '0' AND filter_enable = '1') ELSE
|
|
ALL_OFF;
|
|
|
|
-- Green LED Control: Indicates normal operation
|
|
-- Turn on green LED when audio is active (not muted) AND filter is disabled
|
|
-- This represents the default "audio pass-through" state
|
|
led_g <= ALL_ON WHEN (mute_enable = '0' AND filter_enable = '0') ELSE
|
|
ALL_OFF;
|
|
|
|
-- Truth Table for LED States:
|
|
-- mute_enable | filter_enable | RED | GREEN | BLUE | Status
|
|
-- ------------|---------------|-----|-------|------|------------------
|
|
-- 0 | 0 | 0 | 1 | 0 | Normal (Green)
|
|
-- 0 | 1 | 0 | 0 | 1 | Filter On (Blue)
|
|
-- 1 | 0 | 1 | 0 | 0 | Muted (Red)
|
|
-- 1 | 1 | 1 | 0 | 0 | Muted (Red)
|
|
|
|
END Behavioral; |