www.mikrocontroller.net

Forum: FPGA, VHDL & Co. A > B, Bits werden weg synthestisiert


Autor: B. U. (peggy)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
im wesentlichen habe ich den Code:
library ieee;
use ieee.STD_LOGIC_1164.all;
library ieee;
use ieee.NUMERIC_STD.all;
library AppPackages;
use AppPackages.AppPackage.all;

entity  Testdetimm  is
port (TimeReq : in std_logic_vector (17 downto 0);
      TimeVal : in std_logic_vector (17 downto 0);
      clk : in std_logic ;
      clrn : in std_logic ;
      CompTimeNow : out std_logic ;
      TimeTooShort : out std_logic ;
      NewPat : in std_logic 
);
end Testdetimm;

architecture  a  of  Testdetimm  is
    signal TimeReqM : unsigned(17 downto 0 );
    signal TimeValM : unsigned(17 downto 0 );
    signal detimm : unsigned(17 downto 0 );
    signal detimm2 : unsigned(17 downto 0 );
    signal SubTime : unsigned(17 downto 0 );
    signal TimeReqMS : unsigned(17 downto 0 );
    signal SubReq : unsigned(17 downto 0 );
    signal NewPatS : std_logic;
    
begin
    process (clk, clrn)
    begin
        if clrn = '0' then
            TimeReqM <= (others =>'0');
            TimeValM <= (others =>'0');
            detimm  <= (others =>'0');
            detimm2  <= (others =>'0');
            SubTime <= (others =>'0');
            CompTimeNow <= '0';
            NewPatS <='0';
            TimeTooShort  <= '0';

        elsif clk'event and clk = '1' then
            detimm <= to_unsigned(ct20us,18);
            detimm2 <= detimm (16 downto 0) & '0';
            TimeReqM <= unsigned(TimeReq);
            TimeValM <= unsigned(TimeVal);
            SubTime <= TimeReqM - TimeValM;
            SubReq <= TimeReqM - TimeReqMS; 
            if ( (NewPatS ='0') AND (NewPat ='1')) then
                if (SubReq < (detimm2 + "111")) then
                    TimeTooShort  <= '1';
                else
                    TimeTooShort <= '0';
                end if;
            end if;                
            if (detimm2 < SubTime) AND (detimm > SubTime ) then
                CompTimeNow <= '1'; 
            else
                CompTimeNow <= '0';
            end if;
            NewPatS <= NewPat;
            TimeReqMS <= TimeReqM;
         end if;
    end process;
end;

cT20us ist eine Konstante aus AppPackage mit folgender Definition:
constant cT1us       : integer range 0 to  2047 :=  30;
constant cT20us      : integer range 0 to  2047 :=  20 * cT1us;

Mein Problem ist nun wie folgt:
Wenn ich alles generiere (mit Visual Elite)
"detimm[2]" "detimm[1]"  "detimm[0]" "detimm2[3]"  "detimm2[2]" 
"detimm2[1]" "detimm2[0]"  einfach weg synthetisiert.
Simuliere ich dann mit Quartus 6.1 kommt folgendes (siehe Bild)
Warum? Ist an den Casts was falsch? Kann ich eine if-Abfrage mit 
unsigned überhaupt machen?
Bin ratlos...
Vielleicht ist der Fehler sehr einfach und ich sehe ihn nicht... Wo sind 
meine Bits hin?
Wer kann mir helfen? Falsche Lib? Besser Unsigned?

Vlg

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Bits werden einach nicht benoetigt - detimm hat einen festen Wert. 
Um zu sehen, ob SubTime kleiner ist als dieser Wert, wird Bit 0 nicht 
gebraucht, deswegen entfernt es die Synthese.

Autor: B. U. (peggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok ich verstehe, genauso ist es auch z. B. detimm2[9], egal was da 
in SubTim[9] steht, entscheidend ist SubTim[10].

Vielen Dank!!!

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Sobald die Bits irgendwie gebraucht werden, wird die Synthese sie 
auch nicht mehr entfernen.

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.