www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme beim erstellen der richtigen Funktionslogik


Autor: Heiko B. (2deep)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich schreibe gerade an einem Programm das Anhand der Eingangssignale:
H-Sync , V-Sync, DE
analysiert, welche Auflösung gewählt ist.
D.h. totalPix, totalLines, activePix, Hor-FrontPorch etc....

eigentlich klappt alles schon ganz gut bis auf die analyse des 
Vertcial-FrontPorch.

Und da ist mein Problem, ich komme gerade auf keine Logik um die 
Funktion richtig zu beschreiben.

Ich habe folgende zwei Prozesse geschrieben aber wie gesagt, das Ziel 
ist dadurch noch nicht erreicht.
-- ##### Vertical FrontPorch ##### --

  process (analysisReset, analysisHSync)
    variable counter             : std_logic_vector (2 downto 0);
    variable var_enableVerticalFrontPorch  : std_logic;
    

  begin

    if analysisReset = '1' then
      tempVerticalFrontPorch      <= (others => '0');
      counter              := (others => '0');
      var_enableVerticalFrontPorch  := '0';
      internVerticalFrontPorch    <= (others => '0');
    elsif analysisHSync = '0' and analysisHSync'event then
      if enableVerticalFrontPorch = '1' then
        counter            := counter +1;
        internVerticalFrontPorch  <= counter;
      elsif enableVerticalFrontPorch = '0' and var_enableVerticalFrontPorch = '1' then
        internVerticalFrontPorch   <= internVerticalFrontPorch +1;
        tempVerticalFrontPorch    <= internVerticalFrontPorch;  
        counter           := b"000";
      end if;
      var_enableVerticalFrontPorch  := enableVerticalFrontPorch;
    end if;
  
  end process;  



-- ##### Supportprocess for Horizontal FrontPorch ##### --

  process (analysisReset, analysisClk)
    variable var_analysisDE    : std_logic;
    variable var_analysisHSync  : std_logic;

  begin
    
    if analysisReset = '1' then
      var_analysisDE        := '0';
      var_analysisHSync      := '0';
      enableHorizontalFrontPorch  <= '0';
    elsif analysisClk = '0' and analysisClk'event then
      if analysisDE = '0' and var_analysisDE = '1' and analysisHSync = '0' then
        enableHorizontalFrontPorch  <= '1';
      elsif analysisHSync = '1' and var_analysisHSync = '0' and analysisDE = '0' then
        enableHorizontalFrontPorch  <= '0';
      end if;
    var_analysisDE    := analysisDE;
    var_analysisHSync  := analysisHSync;
    end if;
  
  end process;


das problem an den von mir geschriebenen prozessen ist das jedes H-Sync 
gezählt wird und nicht nur die zwischen denen DE = '0' ist ... aber wie 
gesagt ich weiss gerade auch nicht wie ich es umsetzen soll.

Hoffe jemand von euch hat nen guten Einfall

viele grüße

Heiko

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst dir merken, ob DE innerhalb einer Zeile gesetzt wurde. Wenn 
nein inkrementierst du deinen Frontporchzähler bei der steigenden 
HSync-Flanke.

Du verwendest in zwei Prozessen schon zwei verschiedene Takte, was dir 
Probleme bringen wird. Sicher gibt es noch einen Prozess der mit clk_g 
läuft, um totalpix auszuzählen, oder?

Du musst alles mit clk_g takten.

Tom

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.