Abgreifen von Signalen

Gast #676213
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).
1
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.
Gast #676321
Lesenswert?
• ▲
▼
1
library ieee ;
2
use ieee.std_logic_1164.all;
3

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

11
architecture behv of register_rtc is
12

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

18
begin
19

20
    set_time <= input_stream(0);
21
    ctime <= input_stream(55 downto 24);
22
    ftime <= input_stream(23 downto 8);
23
   
24
    reg: process(input_stream, clk, reset)
25
    begin
26
        
27
   
28
  if (reset = '1') then
29
      time_out_tmp <= (time_out_tmp'range => '0');
30
  elsif (set_time = '1' and clk='1' and clk'event) then
31
     time_out_tmp(47 downto 0) <= input_stream(55 downto 8); --Setzen der Uhrzeit (extern)
32
  elsif (clk='1' and clk'event) then
33
      -- TODO: setzen vom neuen time_out_tmp
34
  end if;
35

36
   end process reg;
37
   
38
   -- CTime: process(input_stream, clk, reset)
39
   -- end process:CTime;
40
   
41
   -- FTime: process(input_stream, clk, reset)
42
   -- end process:FTime;
43
   
44
   output_stream <= time_out_tmp;
45

46
end behv;
Gast #676330
Lesenswert?
• ▲
▼
So sollte es sein:
1
if (reset = '1') then
2
      time_out_tmp <= (time_out_tmp'range => '0');
3
elsif (clk='1' and clk'event) then
4
   if set_time = '1' then
5
     time_out_tmp(47 downto 0) <= input_stream(55 downto 8); --Setzen der Uhrzeit (extern)
6
   end if;
7
end if;

dann wird dann auch ein FF gebaut.

Antwort schreiben

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.

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.