FPGA는 쓰레기 수거통에서 범위를 구출합니다

author
0 minutes, 36 seconds Read

나는 항상 엄격한 예산을 존중할 수있는 실험실에 대한 품질 첨가를 위해 항상 전망합니다. 최근에 나는 Hertz 장벽을 내가하는 다른 모든 프로젝트와 함께 Hertz 장벽을 밀어 넣었으므로 높은 대역폭 범위를 절실히 원한다. 불행히도 최근에는 70MHz ~ 100MHz가 정말로 저렴하게 가질 수 있으므로 500MHz에서 1GHz 범위의 새로운 쿼드 채널 오실로스코프가 여전히 획득 할 운이 좋지 않습니다. 내 유일한 옵션은 오래된 높은 대역폭 범위의 형태로 절대 기적을 찾는 것이 었습니다.

이 쓰레기통을 발견했을 때 전자 제품의 신들이 나에게 미소 짓는 것처럼 보였습니다. hp 54542c 그것은 요정 좋은 모양으로 등장했으며 그날의 최고의 송곳니가있었습니다. 하지만 뭔가가 깨져야 했습니까? 확실히 화면이 분명히 잘못되고 읽을 수 없었습니다. 내가 어떻게 고쳐 지는지 알고 싶습니까? 네 글자 : FPGA.

문제
이 범위에 대한 일부 얕은 연구는 흥미로운 역사를 밝혔습니다. 이것은 HP의 첫 번째 하이 엔드 스코프가 LCD가있는 HP의 첫 번째 하이 엔드 범위 였고, 또한 시장 지침을 가정 할 수있는 Infiniium 시리즈의 범위의 전구체이었습니다. LCD는 사후 궁합을 느끼게했습니다. 범위는 CRT 디스플레이가있는 비슷한 변형을 가졌고, 내가 획득 한 버전은 단순히 CRT 소화관이 제거되고 HP가 설치 한 컬러 LCD를 가졌습니다. 나는 LCD가 잘못되었고, asic의 운전이 아니라는 것을 희망했다, 이것은 어떤 경우에는 화면을 인생으로 가져 오는 경우가 부드러운 탭으로서 좋은 것처럼 보였습니다!

나는 근본 원인을 조사하기 시작했고, LCD를 떼어 내기 시작했다. 나는 액체가 모두 쏟아 졌다는 것을 알았다. 아무것도 부식했지만 청소 및 재설치는 아무런 차이가 없었습니다. 쓰레기 수거통으로 범위를 재생송하는 것은 옵션이 아니 었습니다. LCD 외에도 범위는 절대 보물 트로브처럼 느껴졌습니다. LCD의 운전사위원회가 완전히 쓸모가 없었지만, 업계가 아직 와이어 – 보드 커넥터에서 하원 핀 피치로 이동하지 않은 시점에서 왔습니다. 이 암시 된 것은 기존의 26 핀 리본 케이블 텔레비전에서 편리하게 솔더를 납땜하여 필요한 모든 신호를 탭하고 사용중인 프로토콜 리버스 엔지니어링 프로세스를 시작할 수 있습니다.

리버스 엔지니어링 LCD 프로토콜

리본 케이블 텔레비전 기존 커넥터 상단에 납땜
프로세스의 첫 번째 단계는 커넥터의 신호를 식별하는 것이 었습니다. 나는 LCD를 운전하는 데 필요한 가장 일반적인 신호 집합을 찾았습니다. 여기에는 몇 가지 엄격한주기적인 신호가 포함되어야하며 몇 가지 다소 임의의 신호와 일반적인 전력과 접지를 끌어냅니다. 주기적인 신호는 새로운 라인 및 프레임의 시작을 표시하는 픽셀 클럭 및 동기화 신호가 많을 수 있습니다. 반면에 무작위로 보이는 신호는 표시 할 실제 픽셀 데이터가 될 것입니다. 그 연령에 의해 심사하면서도 상당히 쉬운 프로토콜이 예상되었다. 이 직감에 의해 안내되는 것은 커넥터를 탐색하기 시작했고 곧 모든 25 개의 신호가 알아 냈습니다.

나는 단지 두 개의 완벽한주기적인 신호를 발견했습니다 : 하나, 상대적으로 낮은 31.25 kHz 신호가 의심스러운 60 Hz에서 게이팅되고 다른 A 25MHz 스퀘어 파. 전자는 통합 동기화 신호 여야했습니다. 60 Hz는 공칭 프레임 속도에 해당하는 죽은 공짜였습니다. 31.25 kHz의 기본 신호는 프레임 내의 수평선 속도와 일치해야합니다. 마지막으로, 25MHz 신호는 실제로 픽셀 시계였습니다.

다음으로, 나는 픽셀 데이터를 분명히 나타내는 무작위로 보이는 신호를 이해해야했다. 첫째, 25 핀 커넥터의 필요성이 일종의 병렬 RGB 구성을 명확하게 암시하는 것입니다. 전체적으로 나는 3 개의 신호를 완벽하게 나누고 LCD가 각각 9 비트 당 9 비트를 사용하고 컬러 채널 R, G 및 B에 각각 3 비트를 사용하는지 9 개의 신호를 발견했습니다.

예 : VGA Patio Scheme.
이 계획을 알아 내고 핀 아웃은 도전의 일부였습니다. 아마도 사용중인 신호의 타이밍을 알아내는 것이 훨씬 더 필수적입니다. 거의 항상 원시 표시 신호는 “현관”이라고합니다. 이들은 데이터를 기록 할 수없는 각 프레임 내의 영역으로 생각할 수 있습니다. 이러한 전자의 물리적 빔이 다른 쪽의 시작 부분으로 또는 심지어 화면의 바닥에서 상단으로 가늘어지면서 전자의 물리적 빔이 시간이 걸리지 않는 CRT의시기에 시작되었습니다. 현대 전자 화면에서 덜 발음되지만 LCD 컨트롤러가 시간 처리 및 수신 데이터를 셔플하기 때문에 이러한 영역이 여전히 존재합니다.

타이밍을 결정합니다

타이밍을 추출하려면 픽셀 데이터를 동기화 신호와 상관 시키려고 노력했습니다. 나는 픽셀이 지속적으로 무시한 모든 지역을 찾고 있었다.

수평 타이밍
잠시 동안 데이터를 쳐다보고 있으면 통합 동기 신호의 수평 및 수직 부분 모두에서 간단하고 단일 패티 스키마를 사용하는 것이 클리어되었습니다. 이것은 픽셀이 설정 되었기 때문에 이것은 식별하기 쉽습니다.이 기간 동안 모두 높거나 모두 낮습니다. 이 지역을 정확히 정확히 정확하게 지키면 커서를 사용하여 그 기간을 측정하고 그 시간을 해당 픽셀 수에 번역했습니다.

이것은 VGA 모니터에서 안정적이고 적절한 재생산을 보장하는 중요한 정보였습니다. 이 계획은이 값을 상수로서 Verilog로 공급하고 카운터를 사용하여 필요한 파형을 달성하기 위해 해당 논리를 “여행”으로 사용하는 것이 었습니다.

수직 타이밍
마지막으로 LCDS의 해결 방법은 동일한 설정에서 대체 모니터를 실행해야 할 때와 같이 식별되어야했습니다. 이것은 단순히 다양한 활성 기간을 측정하고 기간 40 ns가있는 픽셀 클럭과 같은 다른 신호와 비교함으로써 수행되었습니다. 수평 활성 시간은 약 25.7 미국으로 결정되었으므로 총 642.5 픽셀의 총 642.5 픽셀을 구성하였고, 수직 활성 기간은 15.42ms이고 수평 기간은 481 라인에 해당한다. 분명히 이것은 60Hz의 활성화 속도가있는 기존의 640 x 480 디스플레이였습니다.

가능한 대체물을 찾는 것

8 인치 구세주
따라서 기존 디스플레이가 끝날 때 꽤 일반적으로 널리 보급되고 대체가 완전히 그럴 수없는 것처럼 보였습니다. 불행히도, 크기는 조금 홀수였습니다. 7 인치 스크린을 쉽게 찾을 수는 없지만 8 개가 있습니까? 비록 내가 웹에서 교체 할 수있는 상당히 가격이 책정 된 드롭을 찾을 수 없었지만, 크기는 자동차에 시장 LCD 설치 후 수많은 현대에서 사용되는 것과 동일하게 일어났습니다. 이것들은 저렴한 가격의 “eyoyo”최고 품질의 화질 (£ 50)이며 문자 그대로 모든 아날로그에서 VGA까지 비디오 입력을 개발하고 HDMI로 인정합니다. 그들은 또한 1024 * 768의 훨씬 더 높은 해상도를 지원합니다.이 화면은 라스베리 PI 커뮤니티에서 대량으로 인기가 없습니다.

마지막으로 모든 것이 함께 클릭하는 것처럼 보였습니다. 이 VGA 모니터로 LCD를 교체 할 수있을뿐만 아니라 CRT에 충분한 공간이 있었기 때문에 완벽하게 맞을 것입니다!

정확히 정확히, VGA 전환으로 LCD를 어떻게 수행합니까? 물론 FPGA와 함께!

신호 변환

이 시점에서 나와 기능을하는 유일한 것은 이전에 언급 된 LCD 신호를 VGA로 성공적으로 변환했습니다. 비교적 빠른 가공은 FPGA에서만 수행 할 수 있었지만, 어느 쪽 이을 할 수 있었습니까? 내 목표는 어느 시점에서 화면으로 범위 내에 FPGA를 남겨 두었으므로 작고 싸고 뭔가가 필요했습니다. 운 좋게도, eBay는 £ 10의 마음을 위해이 오래된 알테라 사이클론 II 기반 개발 보드의 톤을 가지고있는 것 같습니다! 이들은 다소 4K 논리 요소를 보유하고있는 FPGA 와이 같은 소규모 프로젝트에 대해 최적의 FPGA입니다.

이러한 디스플레이 변환이 수행되는 일반적인 방법은 프레임 버퍼를 사용하는 것입니다. 아이디어는 전체 프레임을 버퍼링하고 변환을 수행하고 다른 끝에서 뱉어내는 것입니다. 슬프게도이로서는 FPGA의 존경할만한 크기의 외부 RAM을 요구합니다. 이러한 FPGA 보드는 외부 RAM이 없었던 것에 대해 유명합니다. 따라서이 계획은 문제가되지 않았습니다. 조금 생각한 후에, 나는 LCD 신호와 VGA가 결국 이기종이 아니라는 것을 깨닫는 것을 깨달았다. 내가 한 줄로 다른 하나로 변환 할 수 있다면, 프레임 버퍼의 필요성을 전혀 우회 할 수 있다면?

비교 : VGA 대 LCD. 이 다이어그램은 수평 및 수직 세그먼트 모두에 적용됩니다.
요약하자면:

LCD는 다음과 같습니다 :

픽셀 시계

결합 된 동기화 신호

프론트 파티오 전용

VGA는 다음과 같습니다.

픽셀 시계가 없습니다

별도의 동기화 신호

동기화 기간이있는 전면 및 백 안뜰

통합 동기화 신호
VGA 작동 방식에 대한 세부 사항에 따라이 기사의 범위를 벗어난 것입니다.하지만 나중에 그렇게 해결할 것입니다. 지금은 타이밍 스케치를 간단히 검사하기 만하면 두 신호 간의 유일한 차이점이 현관의 발생 및 위치의 위치와 유효한 데이터 배치입니다.

스케치는 변환이 쉽지만 두 프레임이 완전한 동기화되어있는 경우에만 유효합니다. FPGA가 VGA를 통해 해당 LCD 프레임을 시작하도록하기 위해 먼저 LCD 커넥터에서 오는 새로운 프레임의 시작을 식별하여 동기화 할 수 있습니다. 이는 LCD로부터 통합 동기화 신호의 가장자리를 검사하는 것이 충분하지 않기 때문에 프로세스의 가장 까다로운 부분 일 수 있습니다.

대신 두 개의 가장자리 사이의 시간을 측정하고 새 프레임의 발생을 플래그로 측정해야합니다. 나머지는 위 타이밍 다이어그램을 생성하는 논리 게이트의 비교적 간단한 세트입니다. 마지막으로 LCD에 뒤로 안뜰이나 동기화 펄스가 없으므로 수신 RGB 데이터는 VGA 모니터가 기대하는 곳에서 완벽하게 정렬되도록 작은 FIFO를 사용하여 들어오는 RGB 데이터를 균형을 유지해야합니다. 위의 사항을 Verilog로 동일하게 처리하면 하드웨어를 다루기 위해 진행되었습니다.

하드웨어 설정

하드웨어 설정
하드웨어 구성은 다행히도 매우 미미했습니다. HP는 최대한의 잠재력에 LCD를 사용하지 않았습니다. E. 개별 비트 검사ACH 채널은 많은 이중화를 드러냈다 : 다양한 비트는 실질적으로 항상 동일한 9 비트 컬러 팔레트의 매우 얕은 이용을 나타내는 매우 동일하다. HP가 주로 범위의 CRT 버전에서 펌웨어를 재사용함에 따라 이것은 충격적이지 않았습니다. 이 모든 것은 최종 이미지에서 실질적으로 손실이 없어 각 색상 채널의 MSB를 연결하는 것만으로 도망 쳤다. 이것은 FPGA에 훨씬 더 귀중한 기억을 저장했습니다.

가장 중요한 문제는 LCD가 5 V TTL 신호를 사용하고 있다는 것입니다. FPGA는 최상의 3.3 V 신호로 수용 할 수 있으므로 레벨 변환을 수행해야했습니다. 나는이 변환을 수행하기 위해 74HC 시리즈 논리 버퍼 중 일부에서 입력 클램핑 다이오드를 활용하기로 선택했습니다. 이것은 상승 / 하강 시간을 상당히 파괴하는 경향이 있습니다. 예를 들어, 74HC4050은 다이의 다이오드와 직렬로 폴리 실리콘 저항을 가지며 외부 시리즈 저항의 필요성을 변위시킵니다. 나는 그것을 안전하게하고,이 버퍼의 입력에 1 kΩ 시리즈 저항을 첨가하고, 출력은 FPGA로 공급되었다. FPGA의 HSYNC 및 VSYNC 출력의 출력은 RGB 선이 330 Ω 저항을 통해 연결된 동안 모니터에 직접 연결되었습니다.

성공

성공!
25MHz 픽셀 시계를 길들이고 Breadboard에서 동작하고 FPGA를 새로운 외부로 연결하십시오.

모니터의 VGA 포트, 범위는 공식적인 영광으로 돌아 왔습니다! 모든 것이 완벽하게 작동했지만이 설정은 꽤 소음이 발생했습니다. 지금해야 할 일은 이제 PCB를 만들고 VGA 모니터를 범위 내부의 영주권을 부여합니다.

그럼 뭐야? 음, 현재 스크린 샷을 저장하는 유일한 방법은 날짜가있는 플로피 드라이브를 통한 것입니다. 그러나 우리가 FPGA를 통과하는 LCD 데이터가 있기 때문에 SD 카드에 쓰지 않으시겠습니까?

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *