Raro comportamiento Xnor en VHDL -- vhdl campo con fpga campo con xilinx camp Relacionados El problema

Weird XNOR behaviour in VHDL


6
vote

problema

Español

El código que está causando problemas parece una operación normal de XNOR como puede ver a continuación:

  S(1) <= L(16) xnor L(26);   

Esta línea causa el siguiente error:

  ncvhdl_p: *E,EXPSMI (HDL/aes_sbox_enc_depth16.vhd,169|14): expecting a semicolon (';') [9.5.1]. ncvhdl_p: *F,MAXERR: maximum error count reached (1). TOOL: ncvhdl 10.20-s075: Exiting on Feb 14, 2012 at 12:56:05 GMT (total: 00:00:01)   

Cualquier idea de lo que se está equivocado aquí, el punto y coma está claramente allí. Es posible que vhdl No es compatible con Xnor, de ser así, ¿cómo puedo reescribirlo?

¡Muchas gracias!

Original en ingles

The code that is causing problems looks like a normal xnor operation as you can see below:

S(1) <= L(16) xnor L(26); 

This line causes the following error:

ncvhdl_p: *E,EXPSMI (HDL/aes_sbox_enc_depth16.vhd,169|14): expecting a semicolon (';') [9.5.1]. ncvhdl_p: *F,MAXERR: maximum error count reached (1). TOOL: ncvhdl 10.20-s075: Exiting on Feb 14, 2012 at 12:56:05 GMT (total: 00:00:01) 

Anyone an idea what is going wrong here, the semicolon is clearly there. Is it possible that VHDL does not support xnor, if so, how do I have to rewrite it?

Many thanks!

        
 
 

Lista de respuestas

6
 
vote
vote
La mejor respuesta
 

Creo que app.module.ts5 se define para bits y booleans, pero no std_logic. Creo que en realidad depende de qué versión de VHDL (por ejemplo, 98 / 2002/2008) está usando. Ciertamente, se comenta de algunas versiones de los archivos <body> <!-- --> <div id="home" data-role="page" data-add-back-btn="true"> <div data-role="header"><h1>header</h1></div> <div data-role="content"> content <a href="#page2">page2</a> </div> </div> <div id="page2" data-role="page" data-add-back-btn="true"> <div data-role="header"><h1>Page 2</h1></div> <div data-role="content">Back-button visible</div> </div> </body> 26 que he visto.

¿Qué tal si solo invierte un app.module.ts7 ?

  app.module.ts8  
 

I believe that xnor is defined for bits and booleans, but not std_logic. I think it actually depends on which version of VHDL (e.g. 98 / 2002 / 2008) you're using. It's certainly commented out of some versions of the std_logic_1164.vhd files I've seen.

How about just inverting an xor?

S(1) <= not (L(16) xor L(26)); 
 
 
 
 
6
 
vote

para elaborar la respuesta de Pablo.

  • IEEE-1076 AÑO 1987 : no es compatible con un operador Xnor.
  • IEEE-1076 AÑO 2002 : admite un operador Xnor.

Esto se puede verificar al ver la Sección 7.1 de la especificaciones de idioma .

para el año 1987:

  expression ::=       relation { and  relation }     | relation { or   relation }     | relation { xor  relation }     | relation [ nand relation ]     | relation [ nor  relation ]   

para el año 2002:

  expression ::=         relation { and  relation }       | relation { or   relation }       | relation { xor  relation }       | relation [ nand relation ]       | relation [ nor  relation ]       | relation { xnor relation }   

Si su herramienta admite 2002 (o 2008), también debería definir el operador en std_logic_1164, pero eso sería relativamente probable.

Lo más probable es que su herramienta solo está apoyando IEEE-1076-1987. Luego querrías escribir un Xnor como:

  not(L(16) xor L(26));   
 

To elaborate on Paul's Answer.

  • IEEE-1076 Year 1987: Does not support an xnor operator.
  • IEEE-1076 Year 2002: Supports an xnor operator.

This can be verified by looking at Section 7.1 of the Language Spec.

For Year 1987:

expression ::=       relation { and  relation }     | relation { or   relation }     | relation { xor  relation }     | relation [ nand relation ]     | relation [ nor  relation ] 

For Year 2002:

expression ::=         relation { and  relation }       | relation { or   relation }       | relation { xor  relation }       | relation [ nand relation ]       | relation [ nor  relation ]       | relation { xnor relation } 

If your tool supports 2002 (or 2008), then it would also need to define the operator in std_logic_1164, but that would be relatively likely.

What is most likely, is that your tool is only supporting IEEE-1076-1987. You would then want to write an xnor as:

not(L(16) xor L(26)); 
 
 
   
   

Relacionados problema

0  No se puede compilar un código UNISIM en IVERILOG  ( Cannot compile unisim code in iverilog ) 
He estado tratando de compilar Icap_spartan6.v de los librabreses de Unisim proporcionados por Xilinx usando iCarus VeriLog. Obtengo el error de compilación...

1  Error de garrapatas inesperados  ( Unexpected tick error ) 
Estoy tratando de escribir un módulo VHDL, pero tengo un problema con la declaración IF. Lo más probable es que sea un error tonto, pero como soy muy nuevo en...

2  ¿Cuál es el número mínimo de ciclos de reloj para leer y escribir con Axi4lite?  ( Whats the minimum clock cycles number to read and write with axi4lite ) 
Me pregunto cuál es el número mínimo de ciclo de reloj para realizar un acceso simple en un autobús Axi4lite. creo que es 4, pero no estoy seguro. ...

2  ¿Cuál es la principal diferencia entre el modo de proyecto y el modo de no proyecto en VIVADO?  ( What is the main difference between project mode and non project mode in vivado ) 
Y cuando se completa la síntesis, estoy recibiendo muchos archivos como .FW, .MCS, .PRM junto con el archivo .bit. ¿Y podemos descargar esos otros archivos qu...

0  aleatorizando el valor de 32 bits en SystemVerilog con Xilinx VIVADO 2018.2  ( Randomizing 32 bit value in systemverilog with xilinx vivado 2018 2 ) 
He escrito un banco de pruebas para mi diseño parametrizado en el que necesito aleatorizar la entrada. Me sorprendí mucho cuando descubrí que si ejecuto el si...

0  HDLPARSERS: 800 Tipo de "**" es incompatible con el tipo de "**"  ( Hdlparsers800 type of is incompatible with type of ) 
entity address_decoder is PORT(address : in STD_LOGIC_VECTOR ( 0 to 3 ); decoded_address : out integer range 0 to 15); end address_decoder; architecture d...

2  Xilinx RLOC falla el mapeo  ( Xilinx rloc fails mapping ) 
Intento crear un MUX de dos niveles que contiene dos muxes anchos. Cada MUX ancho tiene 8 muxes de 2 a 1 que comparten las mismas señales selectas. Dado que p...

3  ¿Por qué una declaración de IF causa un pestillo en Verilog?  ( Why does an if statement cause a latch in verilog ) 
Estoy tratando de codificar una implementación de un controlador / ruta de datos en Verilog, y estoy confundido en lo que causará un pestillo no deseado. Esen...

0  BCD a 7 Esquema del decodificador de segmento: necesita ayuda para la página  ( Bcd to 7 segment decoder schematic need help fitting in page ) 
Estoy trabajando en el esquema para un decodificador de segmentos BCD a 7 segmentos en este momento. Entiendo la lógica, pero es el diseño del esquema con la ...

3  ¿Qué hacer cuando no se puede evitar un pestillo?  ( What to do when a latch cannot be avoided ) 
Sé que los pestillos están fruncidos en hardware y en la codificación de Verilog. Pero, a veces me encuentro con casos en los que no puedo evitar un pestillo....




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos