Wie beschreibe ich das in VHDL

Gast #1866558
Hi,

ich bin noch etwas unerfahren mit VHDL. Ich möchte ein DFF beschreiben
das sich >> SYNCHRON << bei einem bestimmten Zählerstand setzt und sich
anderen falls >> SYNCHRON << zurück setzt (auf Null). Habe jetzt viel 
rumprobiert und das Xilinx Synthese baut immer mal einen Asynchronen 
reset
oder ein asynchrones Set ein (gesehen in der Schematic). Hier der 
Codeausschnitt.
1
process(clk)
2
begin
3
   if rising_edge(clk) then
4
       counter <= counter + 1;
5
       if counter = 319 then
6
         counter <= 0;
7
       end if;
8
       if counter = 319 then
9
         outp <= '1';
10
       elsif counter /= 319  then
11
         outp <= '0';
12
       end if;
13
    end if;
14
end process;
Der Synchrone Reset des Zähler (counter) funktioniert. Counter steht auf 
319. Bei der nächsten Taktflanke ist der sReset Eingang auf High un der 
Counter resetet sich. Das signal outp kann doch einfach mit dem 
Vergleicher
gesetzt werden. Also Vergleicherausgang 1 --> DFF wird auf eins gesetzt, 
Vergleicherausgang 0 --> DFF wird auf null gesetzt.
Bei diesem Programmausschnitt baut er mir allerdings ein Ashyncrones 
Reset ein welches das DFF resettet wenn der Vergleicher eine Null 
ausgibt. Daraus folgt doch das outp nur sehr kurz auf eins liegt, also 
keine ganze Taktperiode.


Danke für Antworten.

mfg
Gast
Schonmal so probiert?
Sollte eigentlich laufen...

1
process(clk)
2
begin
3
   if rising_edge(clk) then
4
       if counter = 319 then
5
         outp <= '1';
6
         counter <= 0;
7
       else
8
         outp <= '0';
9
         counter <= counter + 1;
10
       end if;
11
    end if;
12
end process;
@  Anfänger (Gast)

>das sich >> SYNCHRON << bei einem bestimmten Zählerstand setzt und sich
>anderen falls >> SYNCHRON << zurück setzt (auf Null).

Hast du schon, nur etwas unnötig komplex.

>Habe jetzt viel
>rumprobiert und das Xilinx Synthese baut immer mal einen Asynchronen
>reset
>oder ein asynchrones Set ein (gesehen in der Schematic).

Glaub ich nicht.

1
process(clk)
2
begin
3
   if rising_edge(clk) then
4
       counter <= counter + 1;
5
       if counter = 319 then
6
         counter <= 0;
7
       end if;
8
       if counter = 319 then
9
         outp <= '1';
10
       else
11
         outp <= '0';
12
       end if;
13
    end if;
14
end process;

>Bei diesem Programmausschnitt baut er mir allerdings ein Ashyncrones
>Reset ein welches das DFF resettet wenn der Vergleicher eine Null
>ausgibt.

Das wäre ein dicker Bug. Glaub ich nicht. Ist ehe ein Bedienungsfehler 
beim Simulieren.

> Daraus folgt doch das outp nur sehr kurz auf eins liegt, also
> keine ganze Taktperiode.

MfG
Falk
@  Anfänger (Gast)

>die Schematic bekomme ich wenn ich MtheK Version nehme (Antwort 1).

Was ?

>Da ist ein Asynchroner Reset drinn oder nicht ??

Das muss nicht asynchron sein, es ist erstmal ein Reseteingang, sonst 
nix.

Und ich wette, es ist ein synchroner.

MFG
Falk
Gast
Ich wette mit :p

Quartus gibt für folgenden Code nix asynchrones ... siehe Screenshot.
1
library IEEE;
2
use IEEE.std_logic_1164.all;
3
use IEEE.numeric_std.all;
4

5
entity FF_Test is
6
  
7
  port (
8
    iClk         : in  std_ulogic;
9
    inResetAsync : in  std_ulogic;
10
    oFlag        : out std_ulogic);
11

12
end FF_Test;
13

14
architecture Rtl of FF_Test is
15

16
  signal Counter : integer;
17
begin  -- Rtl
18

19
  process (iClk, inResetAsync)
20
  begin  -- process
21
    if inResetAsync = '0' then            -- asynchronous reset (active low)
22
      Counter <= 0;
23
    elsif iClk'event and iClk = '1' then  -- rising clock edge
24
      if Counter = 319 then
25
        oFlag   <= '1';
26
        Counter <= 0;
27
      else
28
        oFlag   <= '0';
29
        Counter <= Counter + 1;
30
      end if;
31
    end if;
32
  end process;
33

34
end Rtl;
Angehängte Dateien:
@  Lothar Miller (lkmiller) Benutzerseite

>>> Unbenannt.JPG
>Ich vermisse einen Hinweis auf die Bildformate... ;-)

Kommt in meinem Großhirn nicht mehr an, der Nonsensefilter fischt das 
raus. Nur deftige Spikes kommen da noch durch. ;-)

MFG
Falk

P S Lesetipp für den OP: Bildformate.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.