2011-04-14 21 views
6

Quiero convertir los datos en un cable a un número entero. Por ejemplo:convertir un valor de cable a un entero en verilog

wire [2:0] w = 3'b101; 

Quiero un método que convierta esto a '5' y lo almacene en un número entero. ¿Cómo puedo hacer eso de una manera mejor que esto:

j=1; 
for(i=0; i<=2; i=i+1) 
begin 
    a=a+(w[i]*j); 
    j=j*2; 
end 

Además, ¿cómo puedo convertir de nuevo a binario una vez que tenga el valor de un entero? Esto parece una manera torpe. Gracias.

Respuesta

10

Fácil! La conversión es automática en verilog si asigna un número entero. En verilog, todos los tipos de datos son solo recopilación en bits.

integer my_int; 
always @(w) 
    my_int = w; 
+0

gracias. También quiero hacer lo contrario, como en w = my_int. ¿esta permitido? – Brahadeesh

+1

Lo es, pero solo obtendrá los 3 LSB de 'mi_int' almacenados en' w'. Por ejemplo, si el número ''d16' (' 10000') está en 'my_int',' w' se convertirá = '3'b000' – Marty

+0

lo obtuvo. Gracias. Significa que solo tengo que cuidar de mantener w el tiempo suficiente. – Brahadeesh

Cuestiones relacionadas