Read in EN

array indexing

Array가 local에서만 쓰이고 port에는 사용할 수 없다. Array가 표현을 간단하게 하는 장점이 있는데, 그 중에 하나가 다른 logic으로 array item을 선택할 수 있다.

예를 들어 data가 array로 선언되어 있어 sel이라는 logic으로 item을 선택할 수 있다.

import math

outport(selected[8])

N = 16
array(data[N][8])

logic("sel[%s]" % int(math.log2(N)))   # 16개 중에 선택하므로 4bits가 필요  

selected <= data[sel]

Switch 문장없이 data[sel] 형식으로 item을 선택할 수 있으므로 mux 회로를 구성하거나 memory access에 사용하면 된다.

다음 예는 초기화된 data를 가진 rom memory를 저장한 후 enable이 될 때마다 memory의 내용을 출력하는 예이다.

inport(clk,reset,enable)

outport(data[8])

N = 16
array(rom[N][8],init=[i for i in range(N)])

logic("addr[%s]" % min_bits(N-1))
with sequence(clk) :
    addr <= (0, reset, addr + 1,enable)
    
with sequence(clk) :
    data <= rom[addr]
← All posts