hinder the constant cleaning in the block

Gast #950931
Lesenswert?
• ▲
▼
Ich habe immer noch Probleme mit dem Verständnis von VHDL und kann mir 
die Fehlermeldung :
WARNING:Xst:1426 - The value init of the FF/Latch state_0 hinder the 
constant cleaning in the block quicksort.
   You should achieve better results by setting this init to 0.
nicht erklären.
Was mache ich bloß falsch ? (Siehe Anhang)

Es soll ein Speicherbereich beschrieben werden.
Bei jeder positiven Flanke sollen die Daten eingeschrieben werden, bei 
jeder negativen Flanke soll die Speicheradresse um eins erhöht werden. 
Hierzu habe ich einen Prozess "increment" definiert der bei einer 
fallenden Flanke die Adresse initialisieren und inkrementieren soll. Der 
zweite Prozess "state_machine" reagiert nicht auf den 
Initialisierungszustand "idle_state" der Zustandsmaschine. Dieser 
reagiert nur auf steigende Flanken. Da nach einer fallenden Flanke eine 
steigende folgt und der Zustand im Prozess "increment" nach der 
Initialisierung von "idle_state" auf "data_in_state" gesetzt wird sollte 
an dieser Stelle der Schreibvorgang erfolgen.
Ist der Gedankengang totaler Blödsinn ?
Kann man die beiden If-Abfragen auf fallende und steigende Flanke in 
einen Prozess packen ?

Dank euch
Angehängte Dateien:
#950956
Lesenswert?
• ▲
▼
@ Hans-Werner (Gast)

>Was mache ich bloß falsch ? (Siehe Anhang)

Das ist nur ein Hinweis, dass etwas ggf. besser optimiert werden könnte. 
Kann man hier ignorieren.

>Bei jeder positiven Flanke sollen die Daten eingeschrieben werden, bei
>jeder negativen Flanke soll die Speicheradresse um eins erhöht werden.

Das ist Unsinn. Synchrone Logik arbeitet auf ein und derselben Flanke.

Und was zur Hölle soll das?
1
write_address_quicksort_internal <= std_logic_vector(to_unsigned(to_integer(unsigned(write_address_quicksort_internal)) + 1, address_width_quicksort));

So geht das eine "wenig" einfacher und übersichtlicher.
1
write_address_quicksort_internal <= write_address_quicksort_internal + 1;

>Ist der Gedankengang totaler Blödsinn ?

Relativ ja.

>Kann man die beiden If-Abfragen auf fallende und steigende Flanke in
>einen Prozess packen ?

Das schon mal gar nicht. Befass dich mal mit den Grundlagen synchroner 
Logik, z.B. SDRAM-Timing, der erste Abschnitt.

MFG
Falk
Gast #951127
Lesenswert?
• ▲
▼
Und was zur Hölle soll das?

Es wird ein std_logic_vector in einen integer konvertiert, eins addiert 
und danach in std_logic_vector zurück konvertiert. Wenn ich versuche zu 
einem std_logic_vector eins zu addieren kriege ich Fehlermeldungen.
Gast #951130
Lesenswert?
• ▲
▼
Die Fehlermeldung siehst du hier.
Und was zur Hölle soll das?


Entity <ram> compiled.
Entity <ram> (Architecture <ram_rtl>) compiled.
ERROR:HDLParsers:808 - "E:/Programmieren/VHDL/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 186. + can not have such 
operands in
   this context.
ERROR:HDLParsers:808 - "E:/Programmieren/VHDL/EDA Design/Xilinx ISE
   Projekte/Quicksort/Quicksort.vhd" Line 188. + can not have such 
operands in
   this context.
Entity <quicksort> compiled.
#951144
Lesenswert?
• ▲
▼
@ Hans-Werner (Gast)

>Es wird ein std_logic_vector in einen integer konvertiert, eins addiert
>und danach in std_logic_vector zurück konvertiert. Wenn ich versuche zu
>einem std_logic_vector eins zu addieren kriege ich Fehlermeldungen.

Mit den normalen Bibliotheken ist das kein Problem.

Die etwas universellere Variante ist
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;

damit muss man aber mit signed oder unsigned Vektoren arbeiten. Geht.

Etwas politisch inkorrekt sind die alten, nicht streng genormten 
Bibliotheken.
1
library ieee;
2
  use ieee.std_logic_1164.all;
3
  use ieee.std_logic_arith.all;
4
  use ieee.std_logic_unsigned.all;

Damit kann man auch mit std_logic_vector addieren etc.

Aber nicht beide Varianten gleichzeitg nutzen!

MFg
Falk

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.