Menu:

Project: FPGA68k  -  Testdesigns

Testdesign 3: Ansteuerung des MAX6954

Dieses Design erzeugt einen Bitstrom, geeignet um die Siebensegment-Anzeige und die LEDs mit definierten Inhalten zu füllen. Auf den Siebensegment-Anzeigen wird "HALLO S6" dargestellt, die LEDs bilden einen achtstelligen Binärzähler, welcher in zirka 20 Sekunden von binär "00000000" bis binär "11111111" zählt, dann überläuft und wieder von vorne zählt. Als Eingangssignal wird der Standard-Oszillatortakt mit 25,00 MHz benötigt.

 

Funktionsweise

Dieses Design verwendet einen 29 Bit breiten Zähler, wobei bestimmte Bitgruppen des Zählers für unterschiedliche Aufgaben verwendet werden. Als Beispiel werden die acht höchsten Bits des Zählers (Bit 28 - Bit 21) bei jedem Update der Anzeige an die LEDs übertragen. Andere Bitgruppen erzeugen die einzelnen Signale für die Ansteuerung des MAX6954. Beispielsweise werden die gesamten Datenbits für den MAX6954 in einem 512 Bit breiten Vektor gehalten. Jedesmal, wenn die untersten zwei Zählerbits (Bit 1 - Bit 0) beide den Wert "0" haben, wird das nächste Datenbit für den MAX6954 bereitgestellt. Sind beide Zählerbits "1", dann wird der gesamte Vektor ein Bit rotiert, damit ein neues Datenbit bereitgestellt werden kann.

Leicht verständlich und für andere Zwecke verwendbar ist dieses Testdesign nicht. Seine Aufgabe, eben halt das Display testweise anzusteuern, erfüllt es aber ohne Probleme. Ein universelles Modul zum flexiblen Ansteuern der Anzeigen und zum Auslesen der Schalter und Taster findet sich demnächst unter Tipps & Tricks.

 

Bitfile

Unter nachfolgenden Links stehen zwei Versionen der Bitfiles zum Download bereit. Die erste Datei entspricht der oben beschriebenen Version. Die zweite Datei ist eine erweiterte Version, die zusätzlich noch die Taster und Schalter des FPGA68k-Board testet. Dazu werden die Schalter und Taster vom FPGA über den MAX6954 eingelesen und spaltenweise "oder"-verknüpft. Das Ergebnis jeder Spalte wird dann auf dem Dezimalpunkt der jeweiligen Siebensegment-Anzeige dargestellt.

Beide Bitfiles sind geeignet für das FPGA68k-Board mit 25,00 MHz Taktfrequenz. Beide Versionen können direkt mit dem Impact-Tool in das FPGA geschrieben werden.

  Bitfile (einfache Version: Siebensegment- und LED-Test): Testdesign 03: User-Interface: MAX6954
  Bitfile (erweiterte Version: Siebensegment-, LED-, Taster- und Schalter-Test): Testdesign 03: Erweiterte Version

 

Quelltext


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;

entity Testdesign03 is
    Port(  Clock             :  in   STD_LOGIC;
           max6954_cs        :  out  STD_LOGIC := '1';
           max6954_clk       :  out  STD_LOGIC := '0';
           max6954_data_out  :  out  STD_LOGIC := '0'
        );
end Testdesign03;


architecture Behavioral of Testdesign03 is

signal counter  :  std_logic_vector(28 downto 0)  := "11111111111111111111111111111";

signal data     :  std_logic_vector(511 downto 0) := x"065F0700020F030704010c000100"
                                                   & x"67376677650E640E637E6208615B605F"
                                                   & x"68FF69006A006B006C006D006E006F00"
                                                   & x"000000000000000000000000000000000000";

begin

  process begin
      wait until rising_edge(Clock);

      counter <= std_logic_vector(unsigned(counter) + 1);

      if counter(20 downto 11) = "0000000000" then

          if counter(10 downto 0) = "00000000000" then
              data(263 downto 260) <= counter(28) & counter(21) & counter(22) & counter(23);
              data(259 downto 256) <= counter(24) & counter(25) & counter(26) & counter(27);
          end if;

          if counter(5 downto 0) = "000001" then
              max6954_cs <= '0';
          end if;

          if counter(5 downto 0) = "111111" then
              max6954_cs <= '1';
          end if;

          if counter(0) = '0' then
              max6954_clk <= counter(1);
          end if;

          if counter(1 downto 0) = "00" then 
              max6954_data_out <= data(511);
          end if;

          if counter(1 downto 0) = "11" then
              data <= data(510 downto 0) & data(511);
          end if;

      end if;
  end process;

end Behavioral;

 

Zuweisungen der FPGA-Pins (User Constraint File)


# User Constraints für Testdesign03

NET "Clock"            LOC = P55    | IOSTANDARD = LVCMOS33;

NET "max6954_cs"       LOC = P34    | IOSTANDARD = LVCMOS33 | DRIVE = 12 | SLEW = SLOW;
NET "max6954_clk"      LOC = P32    | IOSTANDARD = LVCMOS33 | DRIVE = 12 | SLEW = SLOW;
NET "max6954_data_out" LOC = P30    | IOSTANDARD = LVCMOS33 | DRIVE = 12 | SLEW = SLOW;

 

Sowohl der Quelltext als auch die Pinzuweisungen können per Copy&Paste von dieser Seite kopiert und in die entsprechende Datei unter ISE eingefügt werden. Als Bausteintyp ist folgendes anzugeben:

Family: Spartan6
Device: XC6SLX9
Package: TQG144
Speed: -2

 

Zurück zur Übersicht der Testdesigns