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

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