'업무/하드웨어 설계 및 검증'에 해당하는 글 4건

이전에 ARM 호환 코어 타입의 보드를 개발한 적이 있었다. 외국의 Reference 보드를 사오고 디자인 파일도 구해와서 그걸 가지고 만드는 일이었지만 RF 보드였기에 그리 쉬운 일만은 아니었다. 이래저래 애를 먹고 해결한 다음에 그 보드를 크게 만드는 작업에 착수를 했다.

같은 부룸을 쓴 보드였지만 보드가 커지게 되니 역시 문제가 다양하게 일어났다.

보드를 만들면서 정말 다양한 일들을 경험해봤지만 역시 가장 문제시 되는 건 커넥터를 써서 마더보드와 도터 보드 형태로 분리해서 만들게 되면 좋은 일이라고는 분리가 가능하다는 것 이외에는 하나도 없다는 것이다. 커넥터를 통하게 되면 일단 그라운드와 전원이 안정화 되기가 어렵고 커넥터 결합 자체도 문제가 되며, 커넥터라는 것이 핀 수가 많은 복잡한 형태일 경우 PCB에 마운트가 안 되는 경우가 종종 발생한다.

뭐 이외에도 패턴의 임피던스가 틀어지기에 직렬 저항의 값을 조절해서 사각파의 언더슈트나 오버 슈트 현상을 잡아줘야 할 때도 있고 크리스탈의 로드 캐패시턴스를 조절해줘야 하는 경우도 있다. 크리스탈 같은 경우 SMD 타입은 조금만 손납땜을 잘못하면 케이스가 그라운드이기에 쇼트가 나기 쉬운데 그럴 경우 진폭이 크게 줄어든다.

오늘 제목에 적은 리부팅이 자주 된다면 특히 유의해서 봐야 할 것은 전원 노이즈이다. 플래쉬 메모리 같은 경우는 오실로스코프로 관측했을 때 별다른 문제가 없다면 (사실 이 부분이 가장 힘든 부분 중에 하나이기도 하지만) 한번 읽고 그 후에는 동작 하지 않기 때문에 전원 쪽은 되던가 안되던가 둘 중에 하나이기도 하다. 일단 부팅이 시작했다는 것은 플래쉬에서 부트로더를 읽어와서 메모리에 적재하고 그것을 디코딩하여 동작하는데 성공했다는 이야기이기 때문이다. 하지만 이게 부팅을 하다가 리부팅을 한다면 왜 그럴까? 그것은 CPU 내의 와치독 타이머가 더이상 뭔가의 이유로 동작이 안되어서 리부팅을 시켰다는 이야기이다. 보통 DDR RAM은 2.5볼트로 동작을 하게 되고 그 중간 레퍼런스가 되는 1.25V가 들어가게 된다. 클럭에 맞춰서 데이터가 들어가게 되는데 이 리플이 허용되는 수치가 있는데 그걸 넘어서는 경우가 종종 보인다. LDO로 레귤레이터를 몽땅 꾸민다면 리플이 보일일도 사실 드물지만 대용량 LDO는 가격도 비싸고 필요로 하는 디커플링 캐패시터의 값이 크게 요구 되기 때문에 가격도 오르고 면적도 많이 잡아먹는다. 그리고 LDO는 가장 큰 문제가 전력 효율이 좋지 않고 볼트 드랍이 발생한다고 한다. 따라서 DC/DC 컨터버, 스위치 레귤레이터, 벅 콘트롤러 등이 사용되는데 결국 이것들은 DC를 사각파 형태의 펄스로 바꾸고 이걸 다시 고전류, 고용량의 인덕터에 통과시키게 된다. 펄스를 다시 DC로 바꾼다고 해도 리플은 없앨 수가 없다.  만약 없앤다고 하더라도 터무니 없이 큰 인덕터를 달아야 할것이다. 결국 이런 리플이 보드에 주는 문제를 최소화 하기 위해서는 비드를 통해서 각 전원부를 분리해야 하고 적절한 디커플링 캐패시터를 달아줘야 한다. 이건 설계 단계에서 하는 것이고 만약 문제가 된다면 어떻게 해결을 할 것인가?

일단 데이터 시트를 확인을 해보기 바란다. 보통 전력 효율을 극대화 하기 위해서 고효율모드와 고전류 모드 등 여러가지를 설정할 수 있는 경우가 있는데 그걸 손을 대보기 바란다. 또는 DC가 펄스로 바뀌는데 여기 달려 있는 캐패시터 들이 모두 내압을 버틸 수 있어야 한다. 캐패시터의 내압에 대해서 신경을 잘 안 쓰는 경우도 많은데 용량에 따라 내압이 모두 다르고 사이즈에 따라 다르고 고내압을 가진것과 저내압을 가진 것이 있어서 모두 신경을 써줘야 한다. 이래도 안되면 인덕터가 충분한 전류용량을 가졌는지 확인해보고 바꿔보던가 그래도 안되면 인덕터 또는 파워 초크 로 불리는 놈의 용량값을 올려보기 바란다. L은 로우패스 필터인데 L값을 키울수록 DC만 통과시킬 수 있고 고주파의 감쇄를 더욱 크게 시킨다.

이래도 리부팅이 된다면 DDR RAM과 CPU 상의 패턴이 꼬였거나 혹은 길이가 안 맞거나, 또는 클럭 버퍼나 클럭 라인 외부 인터페이스 라인 등 노이즈를 유발할 수 있는 녀석이 근처 데이터 패턴으로 지나가지 않았나 잘 살펴보기 바란다. 루프를 가지고 클럭이 돌아버리면 이상한 노이즈가 낄 수도 있다. 그래도 잘 안되면 램의 CAS 등의 타이밍을 확인해 볼 것.


WRITTEN BY
가별이
내가 천사의 말 한다 해도

,
안티패드라는 건 plane clearance라고도 한다. via는 금속 드릴 혹은 레이저를 쏴서 만드는데 그렇게 만든 구멍자체는 FR4를 뚫어서 만든 구멍밖에 되지를 않는다. 그래서 그 via 내부에 copper를 코팅하게 되는데 이 코팅이 PCB plae에서 충분히 도통하기 위해서는 그 비아를 금속으로 둘러싸줄 필요가 있다. 보통 원형이 되는데 이걸 안티패드라고 한다. 캐드 도면에서 보면 이 주변을 다시 둘러싼 것을 via clearance라고 하겠지.

이게 갑자기 왜 나오냐고? DDR2 라우팅을 할 때 시그널 패턴은 이 anitpad의 절반이하로 하라고 layout guide에 나오시는군..


첨부한 자료는 DDR2 Layout guide (routing rule)이다. 잠이 안 오시는 분은 읽어봐도 좋다.

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,

A Guide to Memory Timing

The performance and stability of any system depends in part on the memory being used and the settings for the RAM timing. Many users may prefer "xyz" brand, and certainly using brand name memory is a very good idea since low quality memory is often at the root of many stability issues. However, it is also important to pay attention to the timing settings of the memory used.

IMPORTANT: Setting memory timings incorrectly could result in lost or corrupted data (resulting in system instability) or boot/post failure. If a system fails to post, default settings can be restored by clearing the CMOS/BIOS via the clear real time clock jumper on the motherboard. Refer to the board manual for the correct procedure.

The topic of memory architecture is too detailed and complex to cover in a single brief article. We will attempt to simplify a portion of the topic that addresses memory timings and how they work.

Typical timing parameters appear as 2-3-2-6-T1 or some variant. So what do these numbers mean?

Before delving into these specific settings, let's first define some common terms used when discussing memory timings.
  • RAS - Row Address Strobe or Row Address Select
  • CAS - Column Address Strobe or Column Address Select
  • tRAS - Active to precharge delay; this is the delay between the precharge and activation of a row
  • tRCD - RAS to CAS Delay; the time required between RAS and CAS access
  • tCL - (or CL) CAS Latency
  • tRP - RAS Precharge; the time required to switch from one row to the next row, for example, switch internal memory banks
  • tCLK – ClocK; the length of a clock cycle
  • Command Rate - the delay between Chip Select (CS), or when an IC is selected and the time commands can be issued to the IC
  • Latency - The time from when a request is made to when it is answered; the total time required before data can be written to or read from the memory.
Some of the above terms are more important to system stability and performance than others. However, to understand the whole, it is important to understand the role of each of these settings/signals. Therefore, the numbers 2-3-2-6-T1 refer to CL-tRCD-tRP-tRAS-Command Rate and are measured in clock cycles.

tRAS
Memory architecture is like a spreadsheet with row upon row and column upon column, with each row being one bank. For the CPU to access memory, it first must determine which row or bank in the memory is to be accessed and then activate that row with the RAS signal. Once activated, the row can be accessed over and over, until the data is exhausted. This is why tRAS has little effect on overall system performance but could impact system stability if set incorrectly.

tRCD
tRCD is the delay from the time a row is activated to when the cell (or column) is activated via the CAS signal and data can be written to or read from a memory cell. When memory is accessed sequentially, the row is already active and tRCD will not have much impact. However, if memory is not accessed in a linear fashion, the current active row must be deactivated and then a new row selected/activated. In such an example, low tRCD's can improve performance. However, like any other memory timing, putting this too low for the module can cause in instability.

CAS Latency
Certainly, one of the most important timings is the CAS Latency, which is also the one most people understand. Since data is often accessed sequentially (same row), the CPU need only select the next column in the row to get the next piece of data. In other words, CAS Latency is the delay between the CAS signal and the availability of valid data on the data pins (DQ). The latency between column accesses (CAS) then plays an important role in the performance of the memory. The lower the latency, the better the performance. However, the memory modules must be able to support low-latency settings.

tRP
tRP is the time required to terminate one row access and begin the next row access. tRP might also be seen as the delay required between deactivating the current row and selecting the next row. So in conjunction with tRCD, the time required (or clock cycles required) to switch banks (or rows) and select the next cell for reading, writing, or refreshing is a combination of tRP and tRCD.

tRAS
tRAS is the time required before (or delay needed) between the active and precharge commands. In other words, how long the memory must wait before the next memory access can begin.

tCLK
This is simply the clock used for the memory. Note that because frequency is 1/t, if memory were running at 100Mhz, the timing of the memory would be 1/100Mhz, or 10nS.

Command Rate
The Command Rate is the time needed between the chip select signal and when commands can be issued to the RAM module IC. Typically, these are either 1 clock or 2.

This covers much of the basic settings for memory and how they work. As mentioned earlier, it is important to understand what timings your memory will support. Refer to your memory vendor’s website or datasheets for more information.

Cautionary Statement
Activities and projects described herein may involve the use of tools and materials that may present health and safety hazards. These must be handled carefully and all tools and products should be used strictly according to manufacturers' precautions and instructions for the safe use of the respective tool or product. The techniques described herein may result in the voiding of manufacturers' warranties. The user assumes all risks associated with the techniques described in this article/guide. THIS INFORMATION IS PROVIDED “AS IS” WITH NO WARRANTY, EXPRESS OR IMPLIED. AMD ASSUMES NO RESPONSIBILITY FOR ANY ERRORS CONTAINED IN THIS ARTICLE/GUIDE AND HAS NO LIABILITY OR OBLIGATION FOR ANY DAMAGES ARISING FROM OR IN CONNECTION WITH THE USE OF THIS ARTICLE/GUIDE. 

 출처 : AMD
http://www.amd.com/us-en/Processors/ComputingSolutions/0,,30_288_13265_13295%5E13335,00.html

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,
##이 시리즈는 앞으로 연재 되는 시리즈입니다.##

자아 당신 앞에 조립 업체에서 갓 조립해 나온 따끈 따끈한 보드가 있습니다. 자아~ 이 보드를 어떻게 하는 게 좋을까요? 전원부터 일단 꽂아서 동작을 확인하시겠다구요? 그것도 좋은 생각이긴 하지만 말리고 싶습니다. 물론 되는 경우도 많기는 합니다만 연기를 뿜어올리거나 불꽃이 튀거나 이상한 냄새가 나거나 아무런 동작도 안되거나 둘중 하나니까요.

지금부터 저의 경험으로 새로 나온 보드를 체크하는 순서와 방법을 가르쳐 드리겠습니다. 간단하니 따라해보세요.


1. 새로 나온 보드를 육안으로 살펴서 빠진 부품이 없는지 확인한다.
방금 조립된 보드가 무조건 잘 되었다는 그런 믿음은 버리세요. 부품이 빠져있는 경우가 의외로 많습니다. 이는 조립 업체의 실수일 수도 있지만 미처 부품을 챙겨주지 못한 당신의 잘못일 수도 있습니다. 육안으로 천천히 검사하면서 빠진 부품이 있는지 없는지 확인하세요. 챙기지 않고 넘어갔다가 낭패를 보는 경우가 많답니다.

2. 부품의 핀번호와 극성을 확인하세요.
칩의 1번 핀에는 보통 점이 찍혀있거나 파여있거나 하는 특별한 표식이 있습니다. 보드 상의 Silk 즉 실크로 표기된 1번핀과 맞는지 확인하세요. 이정도는 간단하게 하시겠지요? 그게 끝나면 탄탈 캐패시터와 다이오드의 극성을 확인하시길 바랍니다. 이 극성 확인에 있어서 특히 마이너스 전원이 그 보드에 있다면 특히 유의해서 확인하시길 바랍니다. 마이너스 전원은 그라운드와 전원사이에 극성이 뒤집어져서 연결되어야 하거든요. 끝나면 LED를 점검합시다. LED를 주의깊게 들여다보면 안에 동그란 것이 보이는 경우가 많은데 보통 그 쪽이 마이너스 극입니다.

3. 그라운드와의 쇼트를 확인합시다.
그라운드가 하나만 있는 것은 아니란 것을 아실겁니다. 보통 디지털 그라운드와 아날로그 그라운드로 분리되고 각 각 또 노이즈를 억제하고 격리시키기 위해 수 많은 그라운드가 존재하죠. 이걸 유의하면서 그라운드와 전원간에 쇼트랄 확인합시다. 테스트용 보드라면 테스트 포인트 즉 TP를 각 전원과 그라운드 별로 만들어 둔다면 굉장히 신속하게 체크할 수 있습니다. 특히 그라운드용 TP는 오실로스코프를 사용할 때 접지 시키기 위해서 2.54 피치 헤더를 박을 수 있도록 해둡시다.

4. 전원간의 쇼트를 확인합시다.
전원 끼리도 쇼트가 날 수 있습니다. 뭣이? 그러겠지만 모종의 이유로 전원끼리 쇼트가 날 수 있답니다. 황당하죠? 하지만 어쩌겠어요. 확인을 해야지요.

5. 핀 간의 쇼트를 확인합시다.
이건 육안으로 검사하는 겁니다. 리드 타입 칩의 경우 종종 납 방울이 튀거나 해서 다리끼리 쇼트나는 경우가 있습니다. 육안으로 확인합시다.


자 여기 까지 왔으면 거의 중요한 것은 끝났습니다. 이제 전원을 넣어보도록 합시다. 전원을 넣을 때는 언제나 잡아 뺄 수 있도록 주의하시구요. 당연히 어뎁터 전압과 전류도 체크해줘야 합니다. 전류는 설계단계에서 이미 소모 전류를 예측하고 있으시겠죠?

쇼트는 그래도 언젠가는 한번씩 뭔가의 이유로 나서 태워먹습니다. 이걸 방지하는 방법은 조금 비싸지만 SMD 타입의 퓨즈를 보드의 전원잭 바로 뒤에 달아주시면 퓨즈 하나 태워먹는 걸로 보드의 수명을 건질 수 있습니다. 그리고 전원 LED를 달아주면 눈으로 동작 여부를 확인할 수 있으니 반드시 디버깅 및 상태확인용으로 달도록 합시다.

'업무 > 하드웨어 설계 및 검증' 카테고리의 다른 글

보드가 자꾸 리부팅이 된다면  (0) 2009.05.29
antipad(anti-pad)  (0) 2008.10.23
A Guide to Memory Timing  (2) 2008.10.08

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,