Pergunta

Olhando para alguns código que estou mantendo no Sistema Verilog vejo alguns sinais que são definidos assim:

node [range_hi:range_lo]x;

e outros que são definidos assim:

node y[range_hi:range_lo];

Eu entendo que x é definido como embalado, enquanto y é definido como descompactado. No entanto, eu não tenho idéia o que isso significa.

Qual é a diferença entre os vetores embalados e descompactados no sistema Verilog?

Editar: Respondendo a resposta da @ Empi, por que um designer de hardware que está escrevendo no cuidado SV sobre a representação interna da matriz? Há alguma vezes quando eu não deve ou não pode usar sinais embalado?

Foi útil?

Solução

Este artigo dá mais detalhes sobre este assunto: http://electrosofts.com/systemverilog/arrays.html , especialmente secção 5.2.

A matriz é embalado um mecanismo para subdividir um vector em subcampos que pode ser convenientemente acessados ??como elementos da matriz. Por conseguinte, uma matriz compactada é garantida para ser representada como um conjunto contíguo de bits. Uma matriz desembalado pode ou não ser assim representado. A embalados difere da matriz de uma matriz desempacotado em que, quando uma matriz compactada é exibido como um primário, que é tratado como um único vector.

Outras dicas

Antes de saber o que exatamente embalado e matrizes descompactado são, também vamos ver como você pode saber qual variedade é o que, exatamente por sua declaração. matrizes embaladas tem um nome de objeto vem antes da declaração tamanho. Por exemplo:

bit [3][7] a;

array desembalado tem um nome de objeto vem depois da declaração tamanho. Por exemplo:

bit a[3];

Embalado matriz de memória make enquanto desembalado não faça. Você pode acessar / declarar variedade descompactado assim também

reg unpacked_array [7:0] = '{0,0,0,0,0,0,0,1};

Você pode misturar os dois variedade embalado e desembalado para fazer uma memória multidimensional. Por exemplo:

bit [3:0][7:0]a[2:0].

Faz uma matriz de 4 (isto é, 4 * 8) bytes com profundidade de 3.

matriz embaladas são utilizados principalmente para o uso de memória eficaz, quando está a escrever uma [3: 0] [7: 0] Um [4: 0], que significa em localizações de memória de 32 bits 4slices cada um de 8 bits são embalados para formar um 32 bits. Os meios valor do lado direito, existem 5 tais fatias estão lá.

matrizes descompactado vai lhe dar mais de compilação verificação de erros tempo do que matrizes embalados.

Eu vejo matrizes descompactado nas definições de porta de módulos para esta razão. O compilador de erro se as dimensões do sinal não são exactamente a mesma que a porta com matrizes não embalada. Com matrizes embalados será normalmente apenas ir em frente e fio coisas o melhor que pode, não emitir um erro.

bit[3:0] a -> array embalado A matriz compactada pode ser utilizado como uma matriz completa (a='d1) ou apenas uma parte de uma matriz (a[0]='b1)

bit a [3:0] -> array descompactado A matriz descompactado não pode ser usado como a[0]='b1, tem que ser usado como a={8{'b1}} completo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top