Forum: FPGA, VHDL & Co. Ascii - Datentyp in VHDL vorhanden?


von befro (Gast)


Lesenswert?

Hallo zusammen,

den von einer seriellen Schnittstelle in einem CPLD empfangenen Wert 
möchte ich mit einen Ascii-Zeichen vergleichen, um dann eine Aktion 
auslösen zu können.
Wenn also z.B. ein "A" empfangen wird, soll im CPLD irgend etwas 
passieren.

Im folgenden VHDL Code wird der Datenwert mit einer Binärzahl 
verglichen. Gibt es die Möglichkeit, auch direkt mit einem Ascii-Zeichen 
zu vergleichen?
1
signal data: STD_LOGIC_VECTOR (7 downto 0 );
2
begin
3
4
5
  serialReceived: process (clkIn)
6
7
  begin
8
9
      if RISING_EDGE(clkIn) then
10
11
        if(data =  "01010000") then 
12
        
13
...

Gruß,
befro

von Mario Schrenk (Gast)


Lesenswert?

Hallo befro,

probiere es mal mit
1
...
2
     if (data = std_logic_vector(to_unsigned(character'pos('A'), 8))) then
3
...

Gruß,
Mario

von befro (Gast)


Lesenswert?

Hallo Mario,

danke für den Tipp. Leider meldet der Compiler einen Fehler ( xilinx 
webpack 10.1 ) deshalb werde ich wohl vorerst bei der händischen 
Binärversion bleiben.

Gruß befro

von A. F. (artur-f) Benutzerseite


Lesenswert?

Was spricht denn gegen die Hex-Schreibweise?
1
if(data = X"A0") then

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Leider meldet der Compiler einen Fehler ( xilinx webpack 10.1 )
Bei mir gehts ;-)

Du solltest das numeric_std Package verwenden:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL; 
4
5
entity ASCII_Char is
6
    Port ( data  : in  STD_LOGIC_VECTOR (7 downto 0);
7
           match : out  STD_LOGIC);
8
end ASCII_Char;
9
10
architecture Behavioral of ASCII_Char is
11
begin
12
   match <= '1' when (data = std_logic_vector(to_unsigned(character'pos('A'), 8)))  else '0';
13
end Behavioral;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.