Hallo Allseits, bin gerade dabei mit dem Entwicklungsboard Spartan-3 von Digilent zu experimentieren. Mein aktuelles Problem ist es, wie bekomme ich eine 10-bit Zahl auf des 4-stellige LED-Display? Leider konnte ich auch kein Beispiel für das Board finden. Mein einziger Ansatz ist im Code mitgeliefert, funktioniert so aber natürlich nicht (Fehler ist im letzten Prozess, letzte if-anweiseung, da wo "--tausender stelle ermitteln" steht). Ich weiß einfach nicht, wie ich aus der 10-bit Zahl die einzelnen Stellen ermitteln kann, um sie an die 7-segment anzeige übergeben zu können. Hat da vielleicht jemand eine Idee zu meinem Problem oder auch ein fertiges Beispiel des LED-Multiplexing für dieses Board?
Hallo Harry. Dies ist ein Ausschnitt aus einem Projekt (Digitaluhr) mit gemultiplexter Ausgabe von Stunden und Minuten auf der 4-stelligen 7-Segment-Anzeige. Ich hoffe, das hilft Dir weiter. -- 7-Segment-Anzeige im Multiplex-Betrieb -- anz7seg.vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; library UNISIM; use UNISIM.VComponents.all; entity anz7seg is port( clock : in std_logic; reset : in std_logic; data_in : in std_logic_vector(15 downto 0); led : out std_logic_vector(6 downto 0); seg : out std_logic_vector(3 downto 0) ); end anz7seg; architecture Behavioral of anz7seg is signal count : std_logic_vector(15 downto 0); signal hex : std_logic_vector(3 downto 0); begin -- Counter provides delay for 7-segment display process (clock, reset, count) begin if (reset = '1') then count <= (others => '1'); elsif rising_edge(clock) then count <= count + 1; end if; end process; -- Basic MUX for the 7-segment display process (clock, reset, hex, data_in, count) begin if (reset = '1') then led <= (others => '1'); seg(0) <= '1'; seg(1) <= '1'; seg(2) <= '1'; seg(3) <= '1'; elsif rising_edge(clock) then case count(15) is when '0' => if (count(14) = '0') then hex <= data_in(3 downto 0); seg(0) <= '0'; seg(1) <= '1'; seg(2) <= '1'; seg(3) <= '1'; elsif (count(14) = '1') then hex <= data_in(7 downto 4); seg(0) <= '1'; seg(1) <= '0'; seg(2) <= '1'; seg(3) <= '1'; end if; when '1' => if (count(14) = '0') then hex <= data_in(11 downto 8); seg(0) <= '1'; seg(1) <= '1'; seg(2) <= '0'; seg(3) <= '1'; elsif (count(14) = '1') then hex <= data_in(15 downto 12); seg(0) <= '1'; seg(1) <= '1'; seg(2) <= '1'; seg(3) <= '0'; end if; when others => null; end case; end if; case hex is when "0000" => led <= "1000000"; when "0001" => led <= "1111001"; when "0010" => led <= "0100100"; when "0011" => led <= "0110000"; when "0100" => led <= "0011001"; when "0101" => led <= "0010010"; when "0110" => led <= "0000010"; when "0111" => led <= "1111000"; when "1000" => led <= "0000000"; when "1001" => led <= "0010000"; when others => led <= "1111111"; end case; end process; end Behavioral;
Nicht wirklich aber trotzdem danke. Ich stelle dieses Problem erstmal in den Hintergrund. Es ist nämlich ein noch dringenderes aufgetaucht. Was heißt folgende Fehlermeldung: "Redeclaration of symbol UUT." ? Die meldung taucht bei dem angehängten Code auf.
Hi, benenn mal deine beiden Instanzen um. Die können beide nicht UUT heissen. Gruss Jörn
Hallo, ich hätte auch mal ne Frage zu einer Fehlermeldung. beim Überspielen der Schaltung auf den FPGA bekomme ich bei der Verifikation folgende Fehlermeldung: ERROR:Bitstream:98 - There are 99 differences. ERROR:iMPACT:395 - The number of difference is 99 Wie oder Wo kann ich mir das alles anschauen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.