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.
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
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';
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
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
if rising_edge(CLK) then
if Counter < "111101000010010000000000" then -- counter to clock freq /2
Counter <= Counter + 1;
CLK_1Hz <= NOT CLK_1Hz;
Counter <= (others => '0');
end process Prescaler;
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?