psehorne

LogicStartMegawing 7-segment digit 0 not working

5 posts in this topic

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?

Share this post


Link to post
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).

 

 

Share this post


Link to post
Share on other sites

psehorne,

We can replace the board for you if you feel confident there is an issue with it. Just send us an email to support@gadgetfactory.net with your shipping address and a link to this email.

Jack.

Share this post


Link to post
Share on other sites

Jack,

Thank you.  I've sent the email. Because of typos on my part you may receive more than one email.

Paul

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now