www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Abgreifen von Signalen


Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
Ich hab eine wirklich basic Frage, aber wie es halt so ist, findet man 
im gr. I-Net nicht unbedingt auf alles eine Antwort.
Ich hab ein Input Stream der eine Breite von 56 Bits hat, von diesen 56 
Bits möchte ich nun 48 Bits abgreifen.
Folgendes hab ich mir überlegt, bloß ISE meckert hier rum (ModelSim 
hingegen nicht).
time_out_tmp(47 downto 0) <= input_stream(55 downto 8);

Die Zuweisung geschieht in einer IF Abfrage diese wiederrum in einer 
Prozedur steht.

Ich wäre für jede Hilfe dankbar.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Torben (Gast)

>Folgendes hab ich mir überlegt, bloß ISE meckert hier rum (ModelSim
>hingegen nicht).

Was sagt ISE denn?
Die Zuweisung sieht erstmal OK aus.

MfG
Falk

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk Brunner

Folgendes Sag ISE:
Xst:827 line 28: Signal time_out_tmp cannot be synthesized, bad 
synchronous description.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schick uns mal den gesamten Code, mit dem IF drumherum. 
Wahrscheinlich ist der Takt falsch beschreiben.

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
library ieee ;
use ieee.std_logic_1164.all;

ENTITY register_rtc IS
    generic(n: natural :=56);
    PORT( clk, reset: in std_logic;
        input_stream: in std_logic_vector(n-1 downto 0);
        output_stream: out std_logic_vector(n-9 downto 0));
end register_rtc;

architecture behv of register_rtc is

   signal set_time: std_logic; --Kontrollbit, fuer die Zeit
   signal time_out_tmp: std_logic_vector(47 downto 0); --Hilfssignal
   signal ctime: std_logic_vector(31 downto 0); --CTime
   signal ftime: std_logic_vector(15 downto 0); --FTime

begin

    set_time <= input_stream(0);
    ctime <= input_stream(55 downto 24);
    ftime <= input_stream(23 downto 8);
   
    reg: process(input_stream, clk, reset)
    begin
        
   
  if (reset = '1') then
      time_out_tmp <= (time_out_tmp'range => '0');
  elsif (set_time = '1' and clk='1' and clk'event) then
     time_out_tmp(47 downto 0) <= input_stream(55 downto 8); --Setzen der Uhrzeit (extern)
  elsif (clk='1' and clk'event) then
      -- TODO: setzen vom neuen time_out_tmp
  end if;

   end process reg;
   
   -- CTime: process(input_stream, clk, reset)
   -- end process:CTime;
   
   -- FTime: process(input_stream, clk, reset)
   -- end process:FTime;
   
   output_stream <= time_out_tmp;

end behv;

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sollte es sein:
if (reset = '1') then
      time_out_tmp <= (time_out_tmp'range => '0');
elsif (clk='1' and clk'event) then
   if set_time = '1' then
     time_out_tmp(47 downto 0) <= input_stream(55 downto 8); --Setzen der Uhrzeit (extern)
   end if;
end if;  

dann wird dann auch ein FF gebaut.

Autor: synchron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und input_stream aus der sensitivity list raus. Ein synchroner Prozess 
reagiert nur auf clk (und wenn notwendig reset). Gilt auch bei den 
weiteren synchronen Prozessen.

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe, werde nun erstmal zu Tisch gehen und anschließend 
die Modifikationen durchführen.

Guten Appetit

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat wunderbar geklappt, danke vielmals

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.