Verilog: Escape de caracteres no imprimibles en la inicialización de cadenas

0

Estoy tratando de escapar de caracteres no imprimibles en inicializaciones de cadenas en Verilog.

En C, se pueden escapar caracteres no imprimibles como se describe aquí . En Verilog, hay un mecanismo de escape, pero de forma extraña, aparentemente solo para los caracteres imprimibles:

  

2.7.1 identificadores escapados

     

Los identificadores escapados comenzarán con el carácter de barra invertida (\) y   Termina con espacio en blanco (espacio, tabulador, nueva línea). Proporcionan un medio de   incluyendo cualquiera de los caracteres ASCII imprimibles en un identificador (el   valores decimales 33 a 126, o 21 a 7E en hexadecimal).

     

Ni el carácter de barra diagonal inicial ni el blanco de terminación   El espacio se considera parte del identificador. Por lo tanto, un   el identificador de escape \ cpu3 se trata de la misma manera que un no capturado   identificador cpu3.

¿Puedo escapar de caracteres no imprimibles en inicializaciones de cadenas en Verilog? Estoy buscando hacer algo como:

reg [6 * 8 - 1:0] test = "Hello\x01";
// Here, \x01 would be replaced by the SOH non-printable ASCII character
    
pregunta Randomblue

1 respuesta

2

La sección que citó se refiere a identificadores , por lo que puede tener un elemento con nombre con caracteres que no sean palabras en:

reg [6 * 8 - 1:0] \test"string = {"Hello",8'h01};

Sí, eso es un identificador legal; Sin embargo, no hagas eso a menos que tengas que hacerlo. Ese fragmento también muestra cómo una forma Verilogy de incrustar non-ascii en cadenas con concatenación.

Un poco de experimentación muestra que \ xnn no funciona, pero \ nnn (octal) sí lo hace. Esto puede ser dependiente de la herramienta.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas