Forum: FPGA, VHDL & Co. Hello World - Spartan3E


von Frank H. (maxmeise)


Angehängte Dateien:

Lesenswert?

Hi,

nun habe ich endlich Zeit mit meinem neuen Spartan3E starterkit zu
spielen, leider bekomme ich kein simples "Hello World" hin :-(

- Lt. Simulation funktioniert das programm, die Ports werden
  nacheinander ein/aus geschaltet
- auch impact meldet keinen Fehler, die gelbe Diode geht nach dem
  programmieren an.
- Leider keine Reaktion auf den LEDs, auch mit dem Logikanalyzer ist
  keine Aktion auf den Ports festzustellen.

Könnte ihr bitte mal über den Code schauen ( habe ich vom FPGA - Central
tutorial ), und falls da kein Fehler zu erkennen ist, mir Tipps für
die weitere Fehlersuche geben?
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
6
---- Uncomment the following library declaration if instantiating
7
---- any Xilinx primitives in this code.
8
--library UNISIM;
9
--use UNISIM.VComponents.all;
10
11
entity main is
12
    Port ( CLK : in  STD_LOGIC;
13
           LEDS : out  STD_LOGIC_VECTOR (7 downto 0));
14
end main;
15
16
architecture Behavioral of main is
17
signal leds_control_register: std_logic_vector(7 downto 0):="00000001";
18
signal counter: std_logic_vector(31 downto 0):=X"00000000";
19
constant counter_max: std_logic_vector(31 downto 0):=X"02FAF07F";
20
--constant counter_max: std_logic_vector(31 downto 0):=X"00000010";
21
--
22
begin
23
process (CLK) is
24
begin
25
if rising_edge(CLK) then
26
  if counter<counter_max then
27
   counter<=counter+1;
28
  else
29
   counter<=X"00000000";
30
  end if;
31
 end if;
32
end process;
33
34
process (CLK) is
35
begin
36
 if rising_edge(CLK) then
37
  if counter=X"00000000" then
38
   leds_control_register<=leds_control_register(6 downto 0)&leds_control_register(7);
39
  end if;
40
 end if;
41
end process;
42
43
LEDS<=leds_control_register;
44
45
end Behavioral;

danke,

MaxMeise

von hunz (Gast)


Lesenswert?

für CLK noch ne LOC im ucf angeben könnte helfen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> für CLK noch ne LOC im ucf angeben könnte helfen?
Auf Deutsch: Ein UCF-File (mit Pinzuweisungen) hast du angelegt und ins 
Projekt eingebunden?

von Frank H. (maxmeise)


Lesenswert?

Hallo,

ja, habe ich eingebunden in das Projekt. Siehe Anhang im ersten Post.
Bei den "Timing Constraints" habe ich im SubMenue keine unconstrained
Clocks, allerdings in den SubMenue "Inputs" und "Outputs" habe ich
keine Zuweisungen. Hört sich ja falsch an, ich weiss allerdings nicht
was ich da sinnvoll eintragen kann :-(

danke für eure Hilfe,

MaxMeise

von hunz (Gast)


Lesenswert?

In Deinem UCF-File hast Du zwar die Locations der LEDs angegeben, aber 
nicht die CLK Location. Dafür ist die LOC = "..." Anweisung da.

Du schaust also im Schaltplan / Userguide von Deinem Board nach an 
welchem FPGA-Pin der Oszillator hängt und schreibst in die erste Zeile 
hinter NET "CLK" noch LOC = "die von deinem Oszillator PIN".

Eine Fehlermeldung gibts nicht, wenn keine Location angegeben ist sucht 
sich das ISE selber nen Pin aus.

von Frank H. (maxmeise)


Lesenswert?

Hallo,

danke für die Hilfe, das war der Fehler.

Lustig ist, das das reale Blinkverhalten nun ganz anders ist
als in der ( plausibel wirkenden ) Simulation vor der Anpassung.
Aber das schau ich mir morgen an.

nochmals vielen Dank,

MaxMeise

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
Noch kein Account? Hier anmelden.