Search the Community
Showing results for tags '7-segment'.
-
Just received my Pro and MegaWing a couple of days ago. I have not been able to get segments in digit 0 to light up. Below is the VHDL that works for the other three digits. Seg7_AN(x) (all four 0 through 3) are all un-commented in the ucf file, and I get no compile errors. The Seg7_test process flashes all the other three digits once per second. EDIT-1:You can disregard the code referring to LEDs and Switches; that all works too, and it not relevant to the problem. EDIT-2: One other thing of note. The decimal points (of the three working digits) are very bright, but the other elements are very dim - hardly visible in normal room lighting. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Seven_Segment_LED is Port ( Seg7_AN : out STD_LOGIC_VECTOR(0 to 3); Seg7_A : out STD_LOGIC; Seg7_B : out STD_LOGIC; Seg7_C : out STD_LOGIC; Seg7_D : out STD_LOGIC; Seg7_E : out STD_LOGIC; Seg7_F : out STD_LOGIC; Seg7_G : out STD_LOGIC; Seg7_DP : out STD_LOGIC; CLK : in STD_LOGIC; -- 32MHz for Papilio Pro, period 31.25 ns JOY_SELECT : in STD_LOGIC; SWITCH : in STD_LOGIC_VECTOR(0 to 1); --reversed LED : out STD_LOGIC_VECTOR(0 to 3); LED1 : out STD_LOGIC); --reversed end Seven_Segment_LED; architecture Behavioral of Seven_Segment_LED is signal Counter : STD_LOGIC_VECTOR(24 downto 0) := (others => '0' ); signal CLK_1Hz : STD_LOGIC; constant Seg7_AN_ON : STD_LOGIC := '0'; constant Seg7_Element_ON : STD_LOGIC := '0'; begin LED(0) <= SWITCH(0) AND SWITCH(1); LED(1) <= SWITCH(0) OR SWITCH(1); LED(2) <= SWITCH(0) XOR SWITCH(1); LED(3) <= (NOT JOY_SELECT) or CLK_1Hz; -- Joy Stick normally high, acitve low. -- So line below holds LED1 on until JS_Select ir pressed. -- Then LED1 will flash at the rate of the preselector counter CLK_1Hz. LED1 <= JOY_SELECT or CLK_1Hz; Seg7_test: process (CLK_1Hz) -- flash LogicStartMegawing 7-segment LEDs at 1Hz begin Seg7_AN(0) <= NOT CLK_1Hz; --NOT Seg7_AN_ON; --CLK_1Hz; Seg7_AN(1) <= NOT CLK_1Hz; --NOT Seg7_AN_ON; Seg7_AN(2) <= NOT CLK_1Hz; --NOT Seg7_AN_ON; --CLK_1Hz; Seg7_AN(3) <= NOT CLK_1Hz; --NOT Seg7_AN_ON; --CLK_1Hz; Seg7_A <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_B <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_C <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_D <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_E <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_F <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_G <= Seg7_Element_ON; --NOT CLK_1Hz; Seg7_DP <= Seg7_Element_ON; --NOT CLK_1Hz; end process Seg7_test; Prescaler: process (CLK) -- flash onboard LED1 at 1Hz begin if rising_edge(CLK) then if Counter < "111101000010010000000000" then -- counter to clock freq /2 Counter <= Counter + 1; else CLK_1Hz <= NOT CLK_1Hz; Counter <= (others => '0'); end if; end if; end process Prescaler; end Behavioral; Only after I had this problem did I search this forum. I found hits about no current limiting resistors. But those discussion are a few years old, and at the time Mr Gassett stated that new boards were coming out with current limiting resistors. I just received my boards this past week; could my boards be old stock without the current limiting resistors; or is there a problem with my code?