2017-09-16 11 views
0
SystemVerilog를

차원 어레이로 2 차원 배열 변환 제가

 logic [32][16]M[]; 

예로 정의 된 3 D 동적 배열로 변환 완

 logic [511:0] array[]; 

같은 2 D 동적 배열을 갖는다.

array[0]= 1110110000111000...512 bits.... 

    M[0][0]= 1110110000111000...32 bits.... 
    M[0][1]= next 32 bits.... 

등등.

이 작업을 수행하는 방법을 제안 할 수 있습니까? 3D 배열을 올바르게 선언했습니다. 동적 배열은 압축되지 않은 배열로만 정의 할 수 있습니다. 배열을 정의 할 수 있습니까?

logic [31:0] M[16][]; ? 

제안이나 수정이 도움이 될 것입니다.

+1

같은 과제를 수행

typedef [31:0] my_3d_t[16][]; my_3d_t M; M = my_3d_t'(array); 

있다 [31 : 0] M [ 16] [어느 쪽이 필요합니까? – Serge

답변

0

예제를 기반으로 16 개의 32 비트 압축 단어로 된 압축 해제 배열의 동적 배열을 원하는 것처럼 보입니다. 즉 다음과 같습니다

logic [31:0] M[16][]; 
당신은에 비트 정확히 일치하는 번호로 적합 할 수있는 소스의 비트 수만큼 다른 종류의 모양에 한 종류의 모양을 지정하는 비트 스트림 캐스트를 사용할 수 있습니다

목표. 대상 유형에 대한 typedef 식별자가 필요합니다 (변수 선언시 일반적으로 typedef를 사용하는 것이 좋습니다). [0 31] [15 : 0] M [] '과'논리 논리 '큰 차이

M[0][0][31:0] = array[0][511:480]; 
M[0][1][31:0] = array[0][479:448]; 
... 
M[0][15][31:0] = array[0][31:0]; 
M[1][0][31:0] = array[1][511:480]; 
...