Embedded2013. 11. 6. 02:41

이번에 개발한 보드는 삼성 A.P.를 이용한 보드입니다.



Coretext-A8을 내장한  S5PV210 프로세서입니다.




'Embedded' 카테고리의 다른 글

Embedded Network Switch Board  (0) 2014.01.02
Altera Design Service Network  (0) 2013.12.04
Video wall :: ZEUS 보드를 이용한 Example  (0) 2013.10.21
Android Quick Boot  (0) 2013.10.16
i.MX6 Evaluation Board  (5) 2013.09.01
Posted by GUNDAM_IM
Embedded2013. 5. 9. 09:45

freescale 사의 iMX6 Series로 만든 Embedded Board 입니다.

전체 보드 사진은 비밀...이고 main processor만 찍어서 올립니다.




사실 보드는 저희가 만든것이 아니고 기존의 EVM Board입니다.

아이폰 사진으로 찍었는데 모양이 이쁘게 나와서 올려 봅니다.

얼렁 보드 만들어서 올리도록 하겠습니다.





'Embedded' 카테고리의 다른 글

i.MX6 Evaluation Board  (5) 2013.09.01
Altera NIOS-II (5)  (0) 2013.06.29
오래간만의 Windows CE  (0) 2013.05.04
Altera NIOS-II (4)  (2) 2013.03.18
Altera NIOS-II (3)  (1) 2013.03.17
Posted by GUNDAM_IM
ASIC SoC2011. 3. 1. 21:08
애증이 남아 있는 분야이다. 

더 멋지게 만들 수 있었는데 그렇지 못한것에 대한 아쉬움이 남아 있는 물건
잘 만들어서 수천만명에게 재미 있는 물건이 될 수 있었는데 그렇게 안되어서 아쉬운 물건

컴파일러를 더 잘 만들고 포팅하고 싶었는데 못한  물건
멋진 IDE로 꾸며주고 싶었는데 안된 분야
우아한 O/S를 머리에 올려주고 싶었는데 오욕의 월계관을 쒸워주고 끝난 분야

이번에 다시 설계하게 되었다.

전에는 3년 했었던것 같은데 이번에는 2년 반 정도 하니까.. 

거의 10년만에 다시온 기회

잘 설계해서
어여쁜 IDE로 잘 치장해서
똘똘한 컴파일러를 잘 붙여서
스마트한 디버거를 잘 설계해서
우아한 O/S를 잘 붙여서

무엇보다 이번에는 스스로에게 미련이 남지 않게 잘 만들어 보고 싶다.
Posted by GUNDAM_IM
ASIC SoC2010. 2. 1. 15:51

사용자 삽입 이미지

예전에 글로 올렸던 사운드 프로세싱 프로세서입니다.

내부에 강력한 Engine이 들어있어서 다양한 음향효과를 지원할 수 있습니다.

드디어 양산에 들어갔네요


 기술개요


 자체 개발한 고성능 사운드 이펙트 엔진과 ARM926프로세서를 내장한 칩셋


 제품특징


 음향 및 사운드 처리를 위한 고성능 프로세싱 엔진과 다양한 Sample Rate를 지원하기 위한

 Audio Sample Rate Converter Engine을 내장


 사운드 이펙트 엔진은 내부에 고성능의 DSP를 내장하여, 어플리케이션에 따라서 다양한 처리 가능


외부 시스템 인터페이스를 위하여 I2S 및 SPDIF 기능을 가지고 있어 다양한 오디오/사운드 어플리케이션을 지원

 시스템 인터페이스를 위해서 UART, I2C 등이 내장


사용자 삽입 이미지

관련 글은 요기 참조


'ASIC SoC' 카테고리의 다른 글

[MIPS] MIPS assembler simulator XSPIM  (8) 2010.03.21
HD Quad Display/Processing Engine  (1) 2010.03.12
[SC] Structure  (0) 2010.01.18
[MIPS] OSX에서 MIPS C Compiler를 빌드하기  (0) 2009.12.17
PERL TIP  (0) 2009.12.05
Posted by GUNDAM_IM
ASIC SoC2009. 8. 18. 21:32
출장 후유증과 그동안 은근히 짱박아 두었던 회사일들에 밀려서 정신 못차리고 지내고 있습니다.

덕분에 블로그에 올리는 글도 빈약한 내용을 채우느라,  사진 + 약간의 글로 떄우는 날림성 글을 올려서 양심의 찔림도 있습니다 쩝.  ㅋㅋ

이런 저런 일이 있지만, 최근에 벌어진 여러가지 일 중에서
그래도 좋은 뉴스는 지난주에 칩이 하나 FAB-OUT되었는데 다행히 1주일만에 정상 동작을 확인했습니다.

사용자 삽입 이미지

사운드 처리 엔진을 가지고 있는 프로세서 칩입니다.
꽤 성능이 잘 나오고요, 이런저런 기능을 내장하고 있습니다.

저렴한 가격에 200MHz의 ARM과 VLIW를 컴팩트(?)하게 꾸겨 넣어서
다양한 오디오 어플리케이션과 시스템 컨트롤에서 사용할 수 있습니다.

역시 FAB-IN하기 전에 FPGA테스트에서 많은 공을 들인 만큼
결과가 FPGA와 같이 나와서 정말 다행입니다.
은근히 걱정하였는데 잘 움직였습니다.

"항상 버그는 모니터 바로 아래에 있다"는 말과
"항상 칩은 테스트 한만큼 움직인다"는 말이 역시 실감나는 결과입니다.

이래저래 당분간 회사의 주력아이템이 될 놈이 잘 움직여서 기분 좋은 한주가 될 것 같습니다.




'ASIC SoC' 카테고리의 다른 글

GTKWave 를 OSX에서 구동하기  (0) 2009.08.24
SystemC : Thread  (0) 2009.08.21
맥에서 SystemC 하기  (0) 2009.08.10
[5] 가장 작은 32비트 프로세서 ZPU 입니다  (0) 2009.07.28
[4] 가장 작은 32비트 프로세서 ZPU 입니다  (0) 2009.07.23
Posted by GUNDAM_IM
ASIC SoC2009. 7. 28. 09:16

합성


이번에는 합성을 하여 보겠습니다.

타겟 FPGA는
 자이링스 V5LX330을 타겟으로 진행하였습니다.
 
 LUT 활용율은 0.3% 정도가 됩니다.

사용자 삽입 이미지
 속도는 PAD부분이 포함되어서 정확하지는 않습니다만, 대략 150~200MHz까지 뽑을 수 있을것 같습니다.
 
크기는 꽤 스마트하게 나옵니다.
모토에서 말하듯이 가장 작은 32Bit RISC 프로세서라는 말이 실감이 나는 크기입니다.
생각해보면 Stack Based Architecture이기 때문에 내부 레지스터 파일이 거의 없다는 것이
이러한 크기를 가지고 옵니다.

ASIC으로 합성해보면

1만 게이트가 조금 안되게 나옵니다.
속도를 주고 합성을 하면 2만게이트 근처까지 올라가는 것 같습니다.
90n에서 속도가 500~800MHz까지 나오는것 같은데, 메모리 인터페이스의 문제가 있을터이니, 조금 낮게 잡고 운용하면 될것이라 생각합니다.
보다 정확한 사항은 이리저리 테스트를 해보아야 정확하게 얻을 수 있을 것입니다.

끝으로


우연히 본 Evaluation Kit에 들어있는 프로세서이고,

요새 세상에 Stack Based Architecture라는게 조금 뜬금없어서,
한번 이리저리 테스트를 해보았습니다. 시뮬레이션 한것도 있는데 따로 정리할 시간이 없네요. 에궁..

한때 세상을 풍미할 뻔 했던 JAVA Processor도 이런 구조인데,
아무래도 퍼포먼스의 문제가 있어서 잘 사용하지 않는 구조입니다.
요새는 프로세서가 작은것이 미덕이 아니고, 프로세서가 저전력인것이 미덕인 세상에 살고 있습니다.
한때는 7000Gate네 10000게이트네 하면서 머리 싸매며 만들던 시절이 있었지만, 50000게이트라도 좋으니
잘 움직이고, 적당히 빠르면 좋습니다.

그리고 이 프로세서의 S/W까지 분석을 해야 하는데
이 프로세서의 퍼포먼스가 그렇게 높지 않은것 같아서, 한번 합성해보고 시뮬해보는 정도에서 끝냈습니다.
(역쉬 귀차니즘.. 굳이 S/W까지 할 필요가 없을듯.. 해서.. )


Posted by GUNDAM_IM
ASIC SoC2009. 7. 23. 09:18
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;;; )




Posted by GUNDAM_IM
ASIC SoC2009. 7. 13. 20:50

(0) 동기


   최근에 작은 프로세서에 대해서 검토해 봤습니다.
   조건은
   - 작아야 하며,
   - 그래도 C가 지원되에어 하며
   - AHB 정도는 나오거나 쉽게 붙을 수 있어야 한다
   - 소스 코드를 구할 수 있어야 하며
  - 라이센스에서 GPL이 없는 것이어야 한다는 것입니다.
 
   좀 조건이 까다로운가 싶기도 하네요.. 하지만
  저런 조건이 되어야 이리저리 사용할 수 있습니다.

  이리저리 찾다가 생각보다 작은 프로세서 하나를 찾았습니다. ZPU입니다.
  잘 아시겟지만, 오픈코아에 있는 프로세서 입니다.
  사실 저도 거기에 있는줄은 알았지만,  오픈코아의 특성상 반신반의 하였습니다.
  엔지니어의 원칙,
       내가만든 코드도 안믿는데 남이 만든 코드를 믿겠느냐. 라는.. 불신론에 가까운 생각을..
  가지고 있어서..
  우연히 다른 프로젝트를 검토하다가 외국 모 회사의 개발 환경을 검토하는 중에 해당 프로세서를 사용한 예제를 주고 있는 것을 발견하고  유심히 한번 보았습니다.
 

(1) 라이센스


  GPL 라이센스 문제는 생각보다 복잡합니다.
  사용상에 아무런 제약이 없지만, 문제는 링크된 모든 코드를 오픈해야 한다는 점 때문입니다.
  프로그램상의 링크된 코드를 하드웨어로 재 해석한다면 붙어있는 모든 IP를 의미합니다.
  - 아직 이부분에 대해서는 판례나 정보가 정확하게 정의된 것이 없어서 구체적으로 어떻게까지
    공개되어야 하는지 명확하지가 않습니다.
    인터넷에서도 이에 대해서 많은 토론을 진행하고 있습니다.

  개인으로 할때야 아무런 문제가 없지만
  회사차원에서 할 때에는 이런 GPL이 적용된 코드를 사용하면,
  자사 설계 아이피를 모두 오픈해야 하는 곤란한 문제가
  발생합니다.  그래서 GPL 라이센스가 붙은 IP를 사용하는 것은 상당히 조심스러워집니다.

  예전에 OpenCore 프로세서도 발표는 GPL로 하였지만, 저자가 적용한 라이센스의 의미는 모두 사용하라는 것이지 모두 공개하라는 의미는 아니였다는 글을 포스팅한적도 있습니다. 하지만, 저자가 회사를 만들면서, 공개에 관련된 모든 글들이 슬그머니 사라지면서, 그 글도  슬그머니 사라져 버렸죠.

  스팍 T1을 잘라서 만든 SRISC도 이 GPL을 따라갑니다.
  - 만드신 분들도 크게 돈을 목적으로 하지 않는것 같아서  그분들은 크게 문제는 없습니다만,...

  그래서 최소한의 조건은 BSD라이센스여야 한다는 점입니다.
  - 사용은 공짜로 , 링크된 부분은 공개는 안해도 되는 라이센스 조건입니다.

  이번에 찾은 ZPU는 Architecture는 GPL이어서 만약 아키텍쳐에 대한 수정이 가해지면
  모두 공개하여야 합니다. 대신에 코드에 대해서는 BSD라이센스를 사용하여서 사용상에
 큰 문제인 링크된 코드를  오픈하라는 문제는 없어지게 됩니다.
 

(2) 소스 코드 다운 받기


아래 사이트에서 다운 받을 수 있습니다.
http://opensource.zylin.com/zpudownload.html

툴은 리눅스와 윈도우/시그윈 버전을 다운 받을 수 있습니다.

프로세서 소스코드는

git clone git://repo.or.cz/zpu.git

으로 다운 받을 수 있습니다.

툴 체인은 SRC로도 다운 받을 수 있습니다.
- 제 경우 맥을 쓰므로 새로 빌드를 하였습니다. 이것은 다음 번에 정리하도록 하겠습니다.

툴 체인은 toolchain 폴더로
프로세서는 zpu 폴더에 다운 받게 됩니다.

(3) ZPU Processor 폴더 구조


zpu /misc /arm7
/ddrsdram
/wishbone
/wip (EMPTY Folder)
/zpu /docs
관련 문서를 보관하는 폴더입니다.
zpu_arch.html 파일을 읽으면 됩니다.
하위 폴더로 presentation이 있는데, PT 자료를 포함합니다.
/hdl
프로세서 HDL 코드가 들어 있습니다.
자세한 폴더 내용은 다음 절에서 정리합니다.
/roadshow
예제 프로그램들이 들어 있습니다.
/sw
시뮬레이터와 간단한 샘플 예제가 들어 있습니다.

(4) ZPU Architecture

ZERO Operand 아키텍쳐입니다.
쉽게 말씀드리면  JAVA 프로세서와 같은 Stack Based CPU입니다.
따라서 명령어는 8비트로 됩니다.


위의 코드를 보면 5를 스텍에 넣고
loadsp 20으로 하여서 SP+20의 값을 읽어서 스텍 최상층에 넣습니다.
다시 ADD 명령으로 2개의 최상층 스텍 값을 읽어서 더한 후에 다시 스텍에 넣습니다.

스텍에 계속 읽고 쓰므로 느리긴 하지만, 나름대로, 간편한 구조여서 프로세서의 크기를 줄이는데
일조를 합니다.

이런 아키텍쳐이므로 수학연산을 하기위해서 쓰는 것은 좀 무리가 있겠습니다.
다만, 간단한 제어용으로 사용하는데에는 좋을 것 같습니다.

사실 요즘은 맘만먹으면 구할 수 있는 프로세서가 많이 있습니다.

Altera의 NIOS,
Xilinx의 picoblaze등등

그런 상황에서 ZPU의 장점이 뭔지 생각해봐야 할 부분인듯 합니다.

좋은 점은 아주 작으므로, 초기 시스템 세팅에 필요한 동작을 수행할때 사용하면 좋을 것 같습니다.
최근에 모 프로젝트에 8051을 검토하였습니다만, 이정도 급이면 쓸만할 것 같습니다.

자료를 보면 eCOS도 포팅되어 있기 때문에 적당한 수준의 제어용 어플리케이션까지는
응용이 가능할것 같습니다. - 다만, uCOS-II가 더 낳지 않을까 생각합니다.

이런 프로세서가 타겟으로 하는 종류의 어플리케이션에서는 취향 문제가 더 크게 작용하게 마련입니다.
어떤 프로세서를 쓰더라도 다른 사람이 크게 관심을 가지지 않기 때문이죠

- 다음번에는 ZPU의 변형에 대해서 정리해보겠습니다.

Posted by GUNDAM_IM
ASIC SoC2009. 1. 30. 16:18

DSP Design [2]


앞서의 글에서 공개된 아키텍쳐를 이용해서 만드는 것이 좋다고 말씀드렸습니다.

공개된 아키텍쳐 중에서 당장 눈에 뛰는 것은 4가지 입니다.


- OpenCores 와

- SUN Sparc Processor

- Core-A

- MIPS-I


각각의 프로세서를 간략하게 정리하였습니다.


2-1 OpenCore - 1000/1200


Damjanl Lampret 라는 사람이 만든 OpenCores에서 공개한 프로세서로서 32비트 및 64비트까지 지원하는

명령어 세트를 가지고 있습니다.


오픈 코아는 명령어 자체가 걸려있는 것이 아닌것으로 생각되어, 구현 해도 큰 문제는 없을 것으로 생각합니다.


다만 현재 있는 것도 잘 되어 있어서 큰 문제는 없고, 실제 사용한 적도 있기 때문에

굳이 구현할 필요까지는 없을 것 같습니다.

무엇보다 공짜인데.. 라는 생각이 강한 오픈 코아이기 때문에 개인적으로는 위화감이 있습니다.



2-2 SUN Sparc


요게 맘에 들긴 합니다.

뭣보다도 정식 라이센스도 가능하고, 컴파일러와 O/S도 다 갖추고 있기 때문에 구현후에 좋습니다.


선에서 구할 수 있는 것은  T1과 T2프로세서 입니다.


T2는 서버를 원칩에 담겠다는 개념으로 만들어서 코드네임도 “NAIAGARA"로 명명했습니다.

결과물을 보면 물량전에서 절대 지지 않는 울트라 리스크 러쉬라고 할까요 ?

그런 정도의 엄청난 물량을 가지고 있습니다.


사용자 삽입 이미지


T1도 잘 만들었고 실제 이넘에서 프로세서 하나를 떼서 사업화 하겠다던 회사도 있었습니다.

그후에 소식은 못들어서 또 역사의 물결 속으로 사라진게 아닌가 하는 의구심도 듭니다.


하여튼 개인적으로는 이러한  레지스터 윈도우 방식은 참으로 좋은 아이디어로 생각합니다.
일정 수준까지의 함수의 호출에서는 스택을 건드리지 않고 파라미터와 내용을 전달하기 때문에
속도가 아주 빠릅니다.


다만 일정 수준을 넘어가면 Exception이 발생하고, 그 후에 다시 처리하는 것이 조금 시간이 걸린다는 단점이 있습니다.


개인적으로는 Embedded IP에서 게이트 카운트에 압박을 벗어나는 시대이므로, 용량이 좀 되는 어플리케이션에서는 좋은 어프로치라고 생각합니다.



 2-3 Core-A


작년 여름께 발표된 것으로, 특허청과 국내 대학 연합에서 만들어서 발표한 아키텍쳐입니다.


아키텍쳐가 공개된는지는 모르겠습니다만, 명령어 세트를 구하는 것은 쉬운 것이라서

구현이 가능한 범주에 넣었습니다.


NOP를 명령어 비트에 집어넣은 발상으로 만들었기 때문에 Data forwarding이 필요 없다는

개념을 가진 아키텍쳐로 보입니다.

컴파일러와 시뮬레이터가 아직 완전하지 않은것으로 보여 이 부분에 대한 보완이 시급한 것 같습니다.


하지만, 이제 시작이고  국내에서 EISC외에 새로운 아키텍쳐가 나왔다는 점에서 의미가 있다고 생각합니다.


2-4 MIPS-I


사용자 삽입 이미지

위의 사진은 도시바에서 만든 MIPS-4400입니다.

MIPS WIKI페이지에서 옮겼습니다.


ARM과 쌍벽을 이루면서, 미국에서 자존심을 걸고 지켜주는 프로세서이죠

프로세서 아키텍쳐 바이블 서적인 Computer Organization and Design: The Hardware/Software Interface 에서 설명하는 구조입니다.

프로세서 공부하시는 분들은 모르는 사이에 한번 공부한 아키텍쳐죠..



사용자 삽입 이미지

MIPS의 클론 프로세서를 검토한다면 렉서라라는 회사에 대해서 알아야 합니다. 이것에 대해서는  아래 링크를 한번 읽어보시면 좋겠습니다.

(눈물 없이는 읽을 수 없는 글입니다.)

http://jonahprobell.com/lexra.html

LEXRA는 MIPS-I 클론을 만들었고, 특허를 피해가기 위해서 노력을 했습니다만,  MIPS의 현질 공세에 밀려서 사라진 회사입니다.  저자는 MIPS가 Lexra에 대항했을 때의 그 노력으로 ARM에 대항했다면, 훨씬 좋은 결과를 만들었을 거라는 아쉬움을 이야기합니다.



MIPS-I에서 특허로 보호받는 부분은 명령어중 4개 정도 입니다. 그리고 이 명령어들은 Memory Miss Alignment에 대한 것들입니다.

이 것에 대해서는 우여 곡절이 많지만 하여튼 2006년 12월에 특허가 완전히 풀렸습니다.

따라서 구현에 법적인 문제는 없는것으로 되어 있습니다.


관련해서 오픈 코아의 Plasma프로세서가 MIPS-I을 이용해서 구현했습니다.

http://www.opencores.org/projects.cgi/web/mips/overview



앞서 말씀드린 바와 같이 MIPS-I의 특허는 완전히 풀렸기 때문에 이것을 이용해서 프로세서를 만드는 것이 가능합니다.


2-5 어떤 아키텍쳐를 ??


어떤 것을 구현하는게 좋은지는 법적인 문제와 실제 문제 그리고, 프로세서의 개발 환경 문제도 검토해야 합니다.

그리고  컴파일러의 최적화 문제에 대해서 고민을 해봐야 하고 또, 프로세서의 용도에 따라서 선택해야 하는 문제입니다.


이번에 만들고 싶은 프로세서는 고성능 DSP프로세서이기 때문에 명령어 확장도 가능한 형태로 가야 합니다. 이 부분을 고려하여서 위의 4가지 아키텍쳐 중에서 하나를 선택해서 구현합니다.



---------


그외에 공개된 아키텍쳐가 있다면 좋겠습니다.

이 자료는 현재까지 알고 있는 아키텍쳐에 대해서 검토한 과정을 정리한 것입니다.

언제나 그렇듯 제가 알고 있는 부분과 사실과 틀릴수도 있습니다. ㅋㅋ




Posted by GUNDAM_IM