ALZPU의 인터페이스에 대해서 간략하게 정리하였습니다.
I.O는 아래와 같습니다.
크게 ROM/RAM/IO/System 으로 해서 4개 군으로 분류하여서 정리할 수 있습니다.
이름만 보아도 대충 다 아는 것들이어서 따로 정리할 필요는 없겠습니다.
시스템 구성의 예는 별도 폴더에 있습니다.
ROM/RAM/UART등을 붙여둔것인데, 아래에서 찾을 수 있습니다.
ALZPU/ZPU/HDL/ALZPU/V4/DESIGNS/BENCHMARK
alzpu_system.vhd
UART 는 Tx만 하게 되어 있습니다. 흠.. 뭔가 불안한건가 ?
파일이 시스템 구성 파일입니다.
시스템 구성은 다음과 같습니다.
UART/TIMER등을 기본적으로 가지고 있습니다.
나머지는 일반적인 인터페이스입니다.
slave select 2/4/8이 있고요.. 이 중에서 4 짜리를 사용했습니다.
뒤에 붙은 숫자는 당연히 Slave의 개수를 의미하겠죠.
alzpu_slaveselect.vhd 파일에 보면
........
slave_sel <= master_in.addr(address_bits-1 downto address_bits-2);
.......
이란 코드가 있고요.. address_bits의 크기에 따라서.. slave_select가 결정이 됩니다.
예를 들어서 16비트 어드레스를 쓴다면,
( 15 downto 14 )
가 되어서
0x0000 : Slave 0
0x4000 : Slave 1
0x8000 : Slave 2
0xC000 : Slave 3
이 됩니다.
alzpu_system.vhd 코드에 보면
...
ioss: alzpu_slaveselect4
generic map (
address_bits => alzpu_rom_num_bits+1,
slave0_address_size => alzpu_ram_num_bits,
slave1_address_size => alzpu_ram_num_bits,
slave2_address_size => alzpu_ram_num_bits,
slave3_address_size => alzpu_ram_num_bits
)
port map (
master_in => iosi,
master_out => ioso,
slave_in_0 => uart_si, -- 0x8000 00
slave_out_0 => uart_so,
slave_in_1 => open, -- 0xA000 01
slave_out_1 => dummy_so,
slave_in_2 => timer_si, -- 0xC000 10
slave_out_2 => timer_so,
slave_in_3 => open, -- 0xE000 11
slave_out_3 => dummy_so
);
....
이 됩니다.
따라서, 자동으로 설정됩니다.
나머진 코드를 보면 쉽게 알 수 있습니다.
(대충 넘어가는 분위기로.. 마무리 하는게 아니라, 코딩이 알기 쉽게 되어 있어서 그렇습니다. TT;;; )
'ASIC SoC' 카테고리의 다른 글
맥에서 SystemC 하기 (0) | 2009.08.10 |
---|---|
[5] 가장 작은 32비트 프로세서 ZPU 입니다 (0) | 2009.07.28 |
[3] 가장 작은 32비트 프로세서 ZPU 입니다 (0) | 2009.07.20 |
[2] 가장 작은 32비트 프로세서 ZPU 입니다. (0) | 2009.07.16 |
[1] 가장 작은 32비트 프로세서 ZPU 입니다. (2) | 2009.07.13 |