LogicStartMegawing 7-segment digit 0 not working


psehorne

Recommended Posts

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?

Link to comment
Share on other sites

Hi,

the very bright decimal points were indeed one "feature" of the resistor-less board. But best  take a magnifying glass and look for the resistors, then you have peace of mind.
I'd simply use a multimeter in diode mode on the headers to check the segments, or jumper wires to +3.3 V / GND (but don't do this without resistors or there will be 7-segment magic smoke).

 

 

Link to comment
Share on other sites

11 hours ago, offroad said:

Hi,

the very bright decimal points were indeed one "feature" of the resistor-less board. But best  take a magnifying glass and look for the resistors, then you have peace of mind.
I'd simply use a multi-meter in diode mode on the headers to check the segments, or jumper wires to +3.3 V / GND (but don't do this without resistors or there will be 7-segment magic smoke).

 

 

Thanks for the suggestions/precautions.  I understand your message completely.  I have been an electronic technician for many years. However I don't feel that troubleshooting the board has a high likelihood of actually fixing it (I have no experience with SMD..); so I won't be going to the trouble.

Paul

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.