www.mikrocontroller.net

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


Autor: befro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?
signal data: STD_LOGIC_VECTOR (7 downto 0 );
begin


  serialReceived: process (clkIn)

  begin

      if RISING_EDGE(clkIn) then

        if(data =  "01010000") then 
        
...

Gruß,
befro

Autor: Mario Schrenk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo befro,

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

Gruß,
Mario

Autor: befro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. F. (artur-f) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht denn gegen die Hex-Schreibweise?
if(data = X"A0") then 

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Du solltest das numeric_std Package verwenden:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL; 

entity ASCII_Char is
    Port ( data  : in  STD_LOGIC_VECTOR (7 downto 0);
           match : out  STD_LOGIC);
end ASCII_Char;

architecture Behavioral of ASCII_Char is
begin
   match <= '1' when (data = std_logic_vector(to_unsigned(character'pos('A'), 8)))  else '0';
end Behavioral;

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.