ISE10.1 bemängelt schlechten VHDL-Stil

Gast #1603207
Lesenswert?

Ich bin keine VHDL-Leuchte, deshalb die Frage. Ich will den 8b/10b-Codec 
von Ken Boyette (opencores.org) in einem Spartan 3AN verwenden.
ISE 10.1. bemängelt jetzt aber jegliche VHDL-Unebenheiten und 
Schludrigkeiten.
Unter anderem das hier:



-- PROCESS: SYNCRST; Synchronize and delay RESET one clock for startup

begin
SYNCRST: process (RESET, XLRESET, SBYTECLK)
  begin
    if SBYTECLK'event and SBYTECLK = '1' then
      XLRESET <= RESET ;
    elsif SBYTECLK'event and SBYTECLK = '0' then
      LRESET <= XLRESET ;
    end if ;
  end process SYNCRST ;

Die Meldung lautet sinngemäß: "Signal LRESET kann nicht synthesiert 
werden. Schlechter Stil zur Beschreibung synchroner Prozesse. Wird in 
der jetzigen Softwareversion nicht mehr unterstützt"
Auweia.
Wie wäre es denn richtig und schön? Die gesamte VHDL-Datei wollte ich 
aus urheberrechtlichen Gründen nicht anhängen.
Gast #1603241
Lesenswert?

Der o.g. Encoder lebt leider davon:
"Bits KI, HI, GI an FI are latched internally on the falling edge of the 
SBYTECLK, Bits EI, DI, CI, BI, AI ... on the rising edge..."
Mist.
Was kann man da tun? Einen zweiten, dazu invertierten Takt definieren, 
dessen steigende Flanke dann genutzt wird?
Moderator (Firma: Titel) Persönliche Seite #1603259
Lesenswert?

> SYNCRST: process (RESET, XLRESET, SBYTECLK)
Von der Synthetisierbarkeit abgesehen wäre der obige Prozess nur auf den 
Takt sensitiv. Die beiden Reset-Signale sind in der Sensitivliste 
unnötig.

> Was kann man da tun? Einen zweiten, dazu invertierten Takt definieren,
> dessen steigende Flanke dann genutzt wird?
Im Idealfall hast du in deinem Design nur 1 Mastertakt und alle 
beteiligten Komponenten (Flipflops) auf dem FPGA reagieren nur auf 
dessen steigende Flanke.

> Der o.g. Encoder lebt leider davon:
> "Bits KI, HI, GI an FI are latched internally on the falling edge of the
> SBYTECLK, Bits EI, DI, CI, BI, AI ... on the rising edge..."
Welche Frequenz hat dein SBYTECLK?
Welche Frequenz hat dein FPGA-Mastertakt?
Gast #1603278
Lesenswert?

FPGA-Mastertakt: 33,333 MHz. SBYTECLK wäre die Hälfte davon.

> Die beiden Reset-Signale sind in der Sensitivliste unnötig.

Das dachte ich auch, hier meldet sich die ISE neuerdings auch mit 
Warnungen, wenn man meint, das wäre überflüssig. Ich musste die 
Sensitivitätslisten, die in der ISE 8.1. als einwandfrei erkannt wurden, 
alle entsprechend nacharbeiten.  :-(
Moderator (Firma: Titel) Persönliche Seite #1603286
Lesenswert?

> Das dachte ich auch, hier meldet sich die ISE neuerdings auch mit
> Warnungen, wenn man meint, das wäre überflüssig.
Die wären nicht überflüssig, die sind überflüssig.  :-o

> FPGA-Mastertakt: 33,333 MHz.
PCI?
> SBYTECLK wäre die Hälfte davon.
Ist dieser Takt synchron zu den 33 MHz?

Wenn ja:
1
   process (clk33) begin
2
      if rising_edge(clk33) then
3
         if SBYTECLK ='1' then
4
            XLRESET <= RESET ;
5
         else
6
            RESET <= XLRESET ;
7
         end if;
8
      end if;
9
   end process;

Wenn nein:
Vervielfache den 33MHz Takt mit einem DCM und mach eine Flankenerkennung 
wie "üblich".
Gast #1603338
Lesenswert?

@ Lothar,

vielen Dank, das werde ich mal probieren. Der SBYTE... ist synchron zum 
Master.
Das ich diesen Coder/Decoder verwenden will, liegt daran, dass der 
Perl-Script für den Wrapper und die Implementierung des 8b/10b aus den 
XAPP1112 und XAPP1122 nicht funktionieren will...
Aber der alte, inzwischen zurückgezogene aus XAPP3xx lief ja auch nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren