Frage zu Cast

Gast #1762673
Lesenswert?
• ▲
▼
Hallo,

ich habe ein VHDL Modul, an dem ich gern einen Vektor beliebiger Länge 
übergeben möchte.
Das klappt soweit ganz gut, nur habe ich leider ein Problem, eine 
Konstante der selben Länge zu definieren.

Kann mir jemand sagen, wie ich der Konstante c10ms den wert 0b0...01010 
zuweisen kann? ich habe schon verschiedene Casts probiert, jedoch leider 
ohne Erfolg...

Anbei ein kleiner Codeausschnitt, in dem das Problem aufgeführt ist.
1
entity myEntity is
2
port
3
( iSysRstR        : in  std_logic;            -- Reset, active high
4
  iSysClkC        : in  std_logic;            -- Clock 40MHz
5
  iReactDurS      : in  std_logic_vector;     -- Timeout Duration
6
  [...]
7
);
8
end myEntity;
9

10
architecture myArchitecture of myEntity is
11
  constant c10ms      : std_logic_vector(iReactDurS'high downto 0) := 10;
12
  signal sDurCntI     : std_logic_vector(iReactDurS'high downto 0);
13
  
14
begin
15
[...]

Viele Grüße
Martin
Moderator (Firma: Titel) Persönliche Seite #1762786
Lesenswert?
• ▲
▼
>   constant c10ms      : std_logic_vector(iReactDurS'high downto 0) := 10;
10 ist eine Integer Zahl, ein 2-Bit-Vektor wäre z.B. "10"

> wie ich der Konstante c10ms den wert 0b0...01010 zuweisen kann?
In diese Richtung etwa:
1
   constant c10ms      : std_logic_vector(iReactDurS'high downto 0) := (3 downto 0 => "1010", others => '0');

Du wirst übrigens ein Problem haben bzw. bekommen können, denn 
uneingeschränkte Vektoren haben die Zählrichtung (0 to x). Du kannst 
also durchaus Probleme bei der Zuweisung und der Interpretation der 
Bitreihenfolge bekommen...
Übergib besser gleich z.B. anhand eines Generic definierte Vektoren.
Gast #1764060
Lesenswert?
• ▲
▼
Vielen Dank für Deine Antwort. Leider funktioniert Dein vorgeschlagenes 
Vorgehen nicht ganz:
1
if (sDurCntI >= c10ms ) then
führt zu den folgenden Fehlermeldungen:
@E: CD393 :"W:\design\file.vhd":39:86:39:91|String doesn't match type 
std_logic
@E: CD393 :"W:\design\file.vhd":39:86:39:91|String doesn't match type 
std_logic "1010"
@E: CD308 :"W:\design\file.vhd":39:86:39:91|Unable to evaluate 
expression type
@E: CD351 :"W:\design\file.vhd":39:86:39:91|Can't implement expression 
type string yet

Hast Du noch eine Idee, wie ich dem beikommen kann?

Bezüglich der Reihenfolge des Vektors sehe ich in diesem Fall kein 
Problem, da wir diesbezüglich einen Coding Style haben, der auch 
eingehalten wird.

Viele Grüße,
  Martin
Moderator (Firma: Titel) Persönliche Seite #1764787
Lesenswert?
• ▲
▼
So klappt das bei mir:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4

5
entity UV is
6
    Port ( vector  : in   STD_LOGIC_VECTOR;
7
           equal   : out  STD_LOGIC;
8
           less    : out  STD_LOGIC;
9
           greater : out  STD_LOGIC);
10
end UV;
11

12
architecture Behavioral of UV is
13
constant const     : unsigned := to_unsigned(10,vecin'length);
14
signal   var       : unsigned(vector'high downto 0);
15
begin
16
   var     <= unsigned(vector);
17
   equal   <= '1' when var = const else '0';
18
   less    <= '1' when var < const else '0';
19
   greater <= '1' when var > const else '0';
20
end Behavioral;

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.