Attribuer des caractères ASCII de fil en Verilog
Je comprends que vous pouvez déclarer une chaîne de caractères dans un Verilog banc d'essai, comme suit:
reg [8*14:1] string_value;
initial
string_value = "Hello, World!";
Je peux alors faire des choses avec cette chaîne, comme l'utilisation $display
dans un banc de test pour l'afficher.
Je n'ai pas réussi à faire la même chose dans un module quand je flash mon FPGA:
reg [8*14:1] string_value;
always @(reset)
begin
string_value = "Hello, World!";
//Do stuff with string value
Même l'attribution d'une valeur unique ne fonctionne pas:
reg [8:1] char_value;
always @(reset)
begin
char_value = "A";
if (char_value == 8'h41)
//Do stuff!
Je veux décaler les caractères individuels sur un bus 8 bits d'un écran LCD pour l'affichage.
Comment puis-je travailler avec des chaînes en Verilog?
- Êtes-vous essayer de synthétiser ce?
- Si "Non" veut dire "Oui"
- Oui, je suis en train d'imprimer du texte sur un écran LCD connecté à mon FPGA conseil de développement. Puisque ce n'était pas clair pour vous et toolic, je vais modifier la question pour être plus précis: je veux attribuer ces caractères 8 bits, les valeurs de sortie de mon module par l'intermédiaire d'un registre à décalage.
- Qu'est-ce exactement ne fonctionne pas? Voulez-vous obtenir une synthèse de l'erreur, ou est le texte tout simplement pas affichée sur l'écran LCD?
Vous devez vous connecter pour publier un commentaire.
SystemVerilog devraient soutenir la chaîne de l'affectation comme indiqué dans spec:
Ne sais pas si l'ancien verilog prend en charge ou pas.
Vous pouvez affecter une chaîne à un registre de type. Quiconque dit le contraire est faux. Vous voudrez peut-être faire vos registres 0' base pour qu'il fonctionne correctement. J'ai fait ça dans la vraie Fpga et il fonctionne.
Définir un tableau d'octets, alors affecter ASCII de chaque élément du tableau:
Vous avez maintenant une constante avec les valeurs ASCII que vous pouvez indice dans.
Avec indice approprié de vérification et de contrôle qui devrait fonctionner.
Cela fonctionne pour moi:
À la fois en simulation et sur un Spartan-3E FPGA
Chaînes semblent travailler dans un module pour moi:
Ce qui ne fonctionne pas pour vous?
La
string
type de données a été introduit dans le SystemVerilog norme en 2005 (se reporter à la norme IEEE 1800-2005 ou 1800-2009).$display
.