Embedded2014. 8. 12. 09:24


이번에 새로이 개발하고 양산 진행 중인 제품입니다.

안드로이드 기반의 차량용 멀티미디어 셋탑박스입니다.




아래에 표를 보면 알겠지만, 커스터머 측에서 요청한 인터페이스가 너무 많아서 

하나하나 패스를 테스트하고 만들어가는것이 쉽지 않았던것 같습니다.

- 그냥 달려있는것과 양산 수준의 안정성은 엄청 틀립니다.


덕분에 다음 보드들의 인터페이스는 이 보드의 인터페이스를 오려서(?) 만들면 됩니다.


케이스는 100% 제 취향이 아니라서 


좀더 스마트한 케이스를 만들고 싶지만, 

커스터머가 지정한 방식이라 아쉽다는 생각이 좀 듭니다.






보다 자세한 자료는 이곳으로....






'Embedded' 카테고리의 다른 글

앰블런스 시뮬레이터  (0) 2014.10.27
Air Play & MiraCast & MirrorLink  (0) 2014.09.22
Digital Shelf - TRICERA  (0) 2014.08.01
Embedded 4K Board::Quad  (1) 2014.07.05
철도/버스용 PIS 시스템  (0) 2014.04.08
Posted by GUNDAM_IM
ASIC SoC2009. 9. 25. 09:26
SystemC언어로 설계하면 여러가지 편한점과 불편한 점이 있는데요
가장 불편한점은 누구 하나 속시원하게 해본적이 없다는 점입니다.

상위 수준 상위수준 하지만, 얼마 만큼의 상위수준까지가 합성이 되는지에 대해서 아직은 아는 사람이 없다는  부분이 또 걸리는 문제입니다. 결국 ERROR & TRY를 계속하면서 가는 수 밖에 없는 것 같습니다.


아직은 불편한 점도 많지만,
편한점은 몇가지 루틴만 이해하면 바로 설계에 들어갈 수 있다는 점이 장점입니다.

그런 점에서 보았을때 Typedef를 적절하게 이용하면 편리한 설계를 할 수 있습니다.
typedef + struct로 정의하는 것입니다. 이런 방식은 VHDL의 Record 타입과 비슷한 개념입니다.

몇가지 사항을 typedef로 정해서 진행하다 보면 쓸데 없는 오류에 봉착하는데요.. 아래에 그런 것에 대해서
한가지를 정리해 두었습니다.
진행하다가 더 나오면 그때 그때 정리하도록 하겠습니다.


SystemC에서 BUS는

sc_uint< bussize > busname;

으로 정의가 됩니다.

그런데 귀찮아서 이를 typedef로 정의하고 사용하면 에러가 발생합니다.

typedef sc_uint<32> tBUS_TYPE;

이라고 정의하고,

아래와 같이 함수에서 사용하면 에러가 발생합니다.

void classname::foo()
{
switch(BUS_TYPE)
{
....
.......
}
}


그래서

void classname::foo()
{

sc_uint<32> BUS_TYPE_int ;
BUS_TYPE_int = BUS_TYPE;

switch(BUS_TYPE_int)
{
case AHB :
....
case AXI  :
....
case WISHBONE :
....
}

}

위와 같이 로컬 변수로 받고 정의하면 에러가 없이 실행이 됩니다.
이것은 Signal로 선언되면 Signal Class로 다시 한번 상속되기 때문에,
container로 확장된 값과는 틀린 의미여서 switch로 사용할 수 없기 때문입니다.

좀더 직접적인 방법은 read() 메쏘드를 사용하는 것입니다.

switch(BUS_TYPE.read())
{
case AHB :
....
case AXI  :
....

이렇게 하면 후처리 작업이 필요 없이 정리할 수 있습니다.

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

취업 씨즌이 시작되었군요  (0) 2009.10.27
SystemC : Module을 인스턴스 할 때에 파라미터 전달 하기.  (0) 2009.10.21
SystemC : Thread 2nd  (0) 2009.08.26
GTKWave 를 OSX에서 구동하기  (0) 2009.08.24
SystemC : Thread  (0) 2009.08.21
Posted by GUNDAM_IM