mikrocontroller.net

Forum: FPGA, VHDL & Co. Hilfe beim Umschreiben benötigt :(


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe ein Problem hiermit. Das will Xilinx ISE nicht implementieren, 
habe ich nun nach einer Weile rausgefunden. Irgendwie komme ich nicht 
auf einen gescheiten Ersatz der funktionieren könnte.... Kann mir hier 
einer vllt helfen, bin totaler VHDL Anfänger und irgendwie fehlt mir die 
Idee....


begin
   if(sw3_8_rst='1' and rst='0') then
          count:=50;
          rst:='1';
   elsif(sw3_8_rst='0' and rst='1') then
    rst:='0';
   elsif (sw8_v_plus='1' and plus='0' and count<=100) then
   count:=count+1;
   plus:='1';
   elsif (sw8_v_plus='0' and plus='1') then
   plus:='0';
   elsif (sw7_v_minus='1' and minus='0' and count>=0) then
  count:=count-1;
  minus:='1';
   elsif (sw7_v_minus='0' and minus='1') then
        minus:='0';
   end if;


Ich danke auf jeden Fall schon mal für eure Mühen.

Danke

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
begin
  if(sw3_8_rst='1' and rst='0') then
          count:=50;
          rst:='1';
  elsif(sw3_8_rst='0' and rst='1') then
           rst:='0';
  elsif (sw8_v_plus='1' and plus='0' and count<=100) then
           count:=count+1;
           plus:='1';
  elsif (sw8_v_plus='0' and plus='1') then
           plus:='0';
  elsif (sw7_v_minus='1' and minus='0' and count>=0) then
           count:=count-1;
           minus:='1';
  elsif (sw7_v_minus='0' and minus='1') then
           minus:='0';
  end if;

so siehts schöner aus

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstens musst Du das Ganze in einen Prozess stecken.
Zweiten muss alles mit einem Takt versehen werden, ein Zähler kann nur 
funktionieren, wenn er jedesmal an der Taktflanke auf oder abzählt.
Ansonsten wäre er ja in nullkommanix auf 0.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das mit dem Process ist mir klar. Und das mit dem Takt. Er soll ja 
nur nach oben bzw nach unten zählen, wenn ich einen Taste drücke und 
wenn ich sie gedrückt halte, soll nichts mehr passieren. Sprich für 
einmal drücken, soll der count 1 nach oben gehen bzw nacht und beim rst 
soll er auf 50 zurückgestellt werden. Aber man merkt wohl, dass ich ein 
totaler Anfänger dabei bin und wohl nicht wirklich viel bisher 
verstanden habe

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>begin
>  if(sw3_8_rst='1' and rst='0') then
>         count:=50;

sicher, dass da irgendwo 'rising_edge(clk)' drin stand?
immerhin folgt if direkt nach begin!

Variablen sind etwas böse(zu Anfang), weil sie zu software
denkweise verleiten. Stell dir lieber FPGA als Register/Logik
Baukasten vor. Register haben ein Leben vor dem Takt und eins
danach. Daraus entwickelt man dann:
signal count_reg, count_next: integer range 0 to 15 := 0;

Die Übernahme wird durch
count_reg <= count_next when rising_edge(clk);
realisiert.

Die Neuberechnung für _next wird aus _reg realisiert
count_next <= 0 when reset = '1' or count_reg = 15 else
    count_reg + 1 when count_pulse else
    count_reg;

count_pulse impliziert, dass dieses Signal einen Takt lang '1' ist.
Da kannst du auch deinen Taster einsetzen, nur wird dann mit x-MHz
hochgezählt.

Meistens baut man sich eine Kaskade von Zählern, wobei einer zB
die Zeitbasis liefert. Ich mache oft einen us-Puls.


Hoffe das hilft etwas.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.