¿Cuál es el significado de fault_reg = ram [address] en verilog?

0
input [3:0] address; 
reg [3:0] ram [7:0];
reg [3:0] data, fault_reg;
fault_reg = ram[address];
data = fault_reg;

Si el valor de ram es 1010 y el valor de la dirección es 100, ¿cuál es el valor de los datos [0], datos [1], datos [2] y datos [3]?

¿Significa que los datos [0] significan el bit No.0 = 0 de ram, los datos [1] significa el bit No. 1 de ram = 1, los datos [2] significan el bit No.2 = 0 y .... .?

    
pregunta avelyn

1 respuesta

2

Aquí, address tiene cuatro bits de ancho y ram se declara como reg [3:0] ram [7:0]; . Esto declara una memoria como nibble (4 bits) de ancho y tales 8 nibbles .

Como se muestra en la figura de abajo.

Paraabordarcompletamentelas8direccionesdememoria,solosonsuficientes3bitsdedirección.Porlotanto,hayunbitnoutilizadoenlavariablededirección.Estonodaráproblemasdesimulación,peroherramientadesíntesisdaráadvertenciasobreelbitdedirecciónnoutilizado.

Además,declararreg[3:0]datada0comobitmenossignificativo(LSB)y3comobitmássignificativo(MSB).Porlotanto,parasupregunta:

  

¿Cuáleselsignificadodefault_reg=ram[dirección]enverilog?

Esteasigna/copiaelvalordelamemoriaramenladireccióndeaddressafault_reg.

  

Sielvalorderames1010yelvalordeladirecciónes100,¿cuáleselvalordelosdatos[0],datos[1],datos[2]ydatos[3]?

Enesteejemplo,ram[4]=4'b1010,ram[4][0]=0,ram[4][1]=1,...yasísucesivamente.Porlotanto,datos[0]=0,datos[1]=1,datos[2]=0,datos[3]=1.

Consultelapregunta Verilog Array Input para el bit de dirección no utilizado y Verilog Memory , RAM Model simples para obtener más información.

    
respondido por el sharvil111

Lea otras preguntas en las etiquetas