Uncategorized

Phục vụ giải cứu FPGA từ Dumpster

Tôi luôn tìm kiếm sự bổ sung chất lượng cho phòng thí nghiệm của mình sẽ tôn trọng ngân sách nghiêm ngặt của tôi. Gần đây, tôi đã thấy mình đang đẩy rào cản Hertz với mọi dự án khác mà tôi làm và do đó tuyệt vọng mong muốn một phạm vi băng thông cao. Thật không may, gần đây chỉ có 70 MHz đến 100 MHz trở nên thực sự phải chăng, trong khi một dao động kênh bốn kênh mới trong phạm vi 500 MHz đến 1 GHz vẫn tốn nhiều tiền để có được. Lựa chọn duy nhất của tôi là tìm một phép màu tuyệt đối dưới dạng một phạm vi băng thông cao cũ.

Dường như các vị thần của bàn tay tôi xuống điện tử đang mỉm cười với tôi khi tôi tìm thấy Dumpster này định mệnh HP 54542C. Nó dường như đang ở trong hình dạng cổ tích và là chó hàng đầu trong ngày của nó. Nhưng một cái gì đó đã phải bị phá vỡ phải không? Chắc chắn, màn hình rõ ràng bị lỗi và không đọc được. Bạn muốn biết làm thế nào tôi sửa nó? Bốn chữ cái: FPGA.

Vấn đề
Một số nghiên cứu nông cạn về phạm vi này cho thấy một số lịch sử thú vị. Đây được cho là phạm vi cao cấp đầu tiên của HP với màn hình LCD và cũng là tiền thân của các phạm vi của các phạm vi infiniium sẽ tiếp tục hướng dẫn thị trường. LCD đã cảm thấy như một sự suy nghĩ. Phạm vi có một biến thể tương tự khác với màn hình CRT và phiên bản tôi có được chỉ đơn giản là có các vùng tiêu hóa CRT được loại bỏ và LCD màu được cài đặt bởi HP. Tôi hy vọng màn hình LCD có lỗi và không phải là ASIC đang lái nó, điều này dường như đặt cược tốt như một vòi nhẹ nhàng trong một số trường hợp mang lại màn hình trở lại với cuộc sống!

Tôi bắt đầu điều tra nguyên nhân gốc rễ, và bắt đầu bằng cách tách ra màn hình LCD. Tôi thấy một số chất lỏng đã bị đổ khắp nơi; Không có gì bị ăn mòn, nhưng việc dọn dẹp và cài đặt lại không tạo ra sự khác biệt. Đoàn tụ phạm vi với thùng rác không phải là một lựa chọn, bởi vì ngoài LCD, phạm vi cảm thấy như một kho báu tuyệt đối. Mặc dù bảng Chauffeur của LCD là hoàn toàn vô dụng, nó đến từ một thời điểm khi ngành công nghiệp chưa chuyển sang Pin Subatomic trên các đầu nối dây. Điều này ngụ ý tôi có thể thuận tiện hàn trên TV băng ruy băng 26 pin thông thường để khai thác tất cả các tín hiệu cần thiết và bắt đầu quá trình kỹ thuật đảo ngược giao thức sử dụng.

Kỹ thuật đảo ngược các giao thức LCD

Truyền hình cáp băng được hàn trên đầu nối hiện có
Bước đầu tiên của quá trình là để xác định các tín hiệu trên đầu nối. Tôi đã tìm kiếm một bộ tín hiệu chung chung nhất cần thiết để lái bất kỳ màn hình LCD nào. Điều này sẽ bao gồm một vài tín hiệu định kỳ nghiêm ngặt, một vài tín hiệu có phần ngẫu nhiên và tích lũy sức mạnh và mặt đất điển hình. Các tín hiệu định kỳ sẽ có nhiều khả năng là đồng hồ pixel và các tín hiệu đồng bộ hóa sẽ đánh dấu sự bắt đầu của một dòng và khung mới; Mặt khác, các tín hiệu tìm kiếm ngẫu nhiên sẽ là dữ liệu pixel thực tế sẽ được hiển thị. Đánh giá bằng tuổi, một giao thức khá dễ dàng đã được dự kiến. Được hướng dẫn bởi trực giác này, tôi bắt đầu thăm dò kết nối và chẳng mấy chốc, tôi có tất cả 25 tín hiệu tìm ra.

Tôi chỉ tìm thấy hai tín hiệu định kỳ hoàn hảo: một, tín hiệu 31,25 kHz tương đối thấp nằm ở tốc độ đáng ngờ 60 Hz và một làn sóng vuông 25 MHz. Trước đây phải là một tín hiệu đồng bộ hóa tích hợp. 60 Hz là một giveaway đã chết vì nó tương ứng với tốc độ khung hình danh nghĩa. Tín hiệu cơ bản 31,25 kHz sau đó sẽ tương ứng với tốc độ đường ngang trong một khung. Cuối cùng, tín hiệu 25 MHz phải là đồng hồ cho toàn bộ hệ thống, trên thực tế, đó là đồng hồ pixel.

Tiếp theo, tôi đã phải có ý nghĩa về các tín hiệu tìm kiếm ngẫu nhiên rõ ràng là dữ liệu pixel. Đầu tiên, sự cần thiết của đầu nối 25 pin đã được ám chỉ một số loại cấu hình RGB song song. Tổng cộng, tôi đã tìm thấy chín tín hiệu như vậy, hoàn toàn chia ba và bao bọc cho thấy màn hình LCD đang sử dụng chín bit trên mỗi pixel và ba bit trên mỗi kênh màu R, G và B.

Ví dụ: Đề án Patio VGA
Tìm hiểu sơ đồ và pin-out là một phần của thử thách. Có thể nhiều thứ cần thiết hơn là tìm ra thời gian của các tín hiệu đang sử dụng. Hầu như luôn luôn, tín hiệu hiển thị thô có những gì được gọi là “hiên hiên”. Chúng có thể được coi là các khu vực trong mỗi khung hình nơi dữ liệu không thể được viết. Những thứ này bắt nguồn từ những ngày CRT trong đó chùm electron vật lý đã mất thời gian để quét từ cuối dòng trở lại phía sau của cái khác, hoặc thậm chí từ dưới cùng của màn hình lên trên cùng. Mặc dù ít phát âm hơn trong các màn hình điện tử hiện đại, các vùng này vẫn tồn tại vì bộ điều khiển LCD cần xử lý thời gian và xáo trộn dữ liệu đến.

Xác định thời gian

Để trích xuất các thời gian, tôi đã cố gắng tương quan dữ liệu pixel với các tín hiệu đồng bộ hóa. Tôi đã tìm kiếm bất kỳ khu vực nào mà các pixel luôn không được giải quyết.

Thời gian nằm ngang
Sau khi nhìn chằm chằm vào dữ liệu một thời gian, rõ ràng màn hình LCD đang sử dụng một sơ đồ đơn đơn giản, đơn lẻ trên cả phần ngang và dọc của tín hiệu đồng bộ hóa tích hợp. Điều này rất dễ xác định vì các pixel được đặt thànhhoặc tất cả đều cao hoặc tất cả thấp trong giai đoạn này. Khi tôi đã xác định được các vùng này, tôi đã sử dụng các con trỏ để đo thời lượng của chúng và dịch thời gian đó thành số pixel tương đương.

Đây là một phần thông tin quan trọng sẽ đảm bảo khả năng sinh sản ổn định và phù hợp trên màn hình VGA. Kế hoạch là cung cấp các giá trị này dưới dạng hằng số vào Verilog và sử dụng quầy để “chuyến đi” logic tương ứng để đạt được dạng sóng cần thiết.

Thời gian dọc.
Cuối cùng, độ phân giải của LCD phải được xác định là tôi phải chạy màn hình thay thế ở cùng một cài đặt. Điều này đã được thực hiện bằng cách chỉ cần đo các giai đoạn hoạt động khác nhau và so sánh chúng với các tín hiệu khác như đồng hồ pixel có khoảng thời gian 40 Ns. Thời gian hoạt động ngang được xác định là khoảng 25,7 chúng tôi, do đó tạo thành tổng cộng 642,5 pixel và tương tự, giai đoạn hoạt động dọc là 15,42 ms và với thời gian nằm ngang là 30 chúng tôi, tương ứng với 481 dòng. Rõ ràng đây là một màn hình 640 x 480 thông thường với tỷ lệ hồi sinh là 60 Hz.

Tìm một người có khả năng thay thế

Đấng Cứu Rỗi 8 inch
Vì vậy, màn hình hiện có [hóa ra là] khá phổ biến cuối cùng, và một sự thay thế dường như hoàn toàn hợp lý. Thật không may, kích thước hơi kỳ quặc; Thật dễ dàng để tìm thấy màn hình bảy inch nhưng tám? Mặc dù tôi không thể tìm thấy bất kỳ sự sụt giảm nào được thay thế khá có giá trên web, nhưng kích thước vừa xảy ra giống như được sử dụng bởi nhiều cài đặt LCD hiện đại sau thị trường trên xe hơi. Đây là những màn hình chất lượng hàng đầu “Eyoyo” giá rẻ tốt (£ 50) và chấp nhận tất cả đều phát triển đầu vào video từ tất cả tương tự sang VGA và thậm chí HDMI. Họ cũng hỗ trợ độ phân giải cao hơn nhiều là 1024 * 768. Tôi ngạc nhiên màn hình này không phổ biến ồ ạt trong cộng đồng Raspberry PI.

Cuối cùng, mọi thứ dường như được nhấp vào nhau. Tôi không chỉ có thể thay thế màn hình LCD bằng màn hình VGA này, nó sẽ phù hợp hoàn hảo vì phạm vi thậm chí còn đủ chỗ cho CRT!

Vì vậy, chính xác, làm thế nào để thực hiện LCD để chuyển đổi VGA? Với một fpga tất nhiên!

Chuyển đổi tín hiệu.

Tại thời điểm này, điều duy nhất đứng giữa tôi và một phạm vi 500 MHz hoạt động đã chuyển đổi thành công các tín hiệu LCD được đề cập trước đó sang VGA. Rõ ràng là xử lý tương đối nhanh như vậy chỉ có thể được thực hiện trên một fpga, nhưng cái nào? Mục tiêu của tôi là, tại một số điểm, để lại fpga bên trong phạm vi với màn hình, vì vậy tôi cần một cái gì đó nhỏ và rẻ. May mắn thay, Ebay dường như có rất nhiều bảng phát triển dựa trên Cycla Cyclone II này cho một tâm trí boggling £ 10! Chúng có khả năng là FPGA khá có khả năng, giữ khoảng 4k các yếu tố logic và tối ưu cho một dự án quy mô nhỏ như thế này.

Một cách phổ biến Các chuyển đổi hiển thị này được thực hiện là sử dụng bộ đệm khung. Ý tưởng là để đệm toàn bộ khung hình, thực hiện chuyển đổi và nhổ nó ra ở đầu kia. Đáng buồn thay, điều này đòi hỏi một RAM bên ngoài có kích thước đáng nể trên FPGA. Những bảng FPGA này nổi tiếng vì không có bất kỳ RAM bên ngoài nào, do đó sơ đồ này đã hết câu hỏi. Sau một chút suy nghĩ, tôi đã liên kết với việc nhận ra rằng các tín hiệu LCD và VGA không giống với tất cả. Điều gì sẽ xảy ra nếu tôi có thể chuyển đổi từ cái này sang người khác trên cơ sở đường dây và phá vỡ nhu cầu về một bộ đệm khung ở tất cả?

So sánh: VGA VS LCD. Sơ đồ này áp dụng cho cả phân đoạn ngang và dọc
Tóm tắt:

LCD có:

Một đồng hồ pixel

Tín hiệu đồng bộ hóa kết hợp

Chỉ có hiên trước

Trong khi VGA có:

Không có đồng hồ pixel

Tín hiệu đồng bộ hóa riêng biệt

Sân trước và sau với thời gian đồng bộ hóa

Tín hiệu đồng bộ hóa tích hợp
Đi vào chi tiết về cách VGA hoạt động vượt quá phạm vi của bài viết này, nhưng tôi sẽ sửa nó sau này. Hiện tại, nếu chúng ta chỉ cần kiểm tra bản phác thảo về thời gian, chúng ta thấy rằng sự khác biệt duy nhất giữa hai tín hiệu là số lần xuất hiện và vị trí của vòm và vị trí của dữ liệu hợp lệ.

Bản phác thảo làm cho việc chuyển đổi trông dễ dàng nhưng chỉ hợp lệ nếu hai khung được đồng bộ hóa hoàn chỉnh. Để nói với FPGA để bắt đầu tạo khung LCD tương ứng qua VGA, trước tiên chúng ta nên xác định sự bắt đầu của một khung mới đến từ đầu nối LCD để chúng ta có thể đồng bộ hóa với nó. Đây có thể là phần khó nhất của quy trình, bởi vì chỉ chọn các cạnh của tín hiệu đồng bộ hóa tích hợp từ LCD là không đủ.

Thay vào đó chúng ta nên đo thời gian giữa hai cạnh và gắn cờ sự xuất hiện của một khung mới. Phần còn lại là một tập hợp các cổng logic tương đối đơn giản tạo ra sơ đồ thời gian trên. Cuối cùng, vì màn hình LCD không có một hiên lưng hoặc xung đồng bộ, dữ liệu RGB đến sẽ được cân bằng kịp thời bằng cách sử dụng FIFO nhỏ để nó sắp xếp hoàn hảo nơi màn hình VGA mong đợi. Sau khi đạt được những điều trên thành Verilog đã hoàn thành, tôi đã tiến hành đối phó với phần cứng.

Thiết lập phần cứng

Thiết lập phần cứng
Cấu hình phần cứng may mắn là rất tối giản. HP không hoàn toàn sử dụng LCD với tiềm năng đầy đủ nhất của nó. Kiểm tra các bit riêng lẻ của eKênh ACH tiết lộ rất nhiều sự dư thừa: Các bit khác nhau thực tế luôn giống hệt nhau, cho thấy việc sử dụng rất nông của bảng màu đầy đủ chín bit. Điều này đã không gây sốc khi HP chủ yếu là sử dụng lại firmware từ phiên bản CRT của phạm vi. Tất cả những điều này ngụ ý rằng tôi đã thoát khỏi việc chỉ cần nối MSB của từng kênh màu với thực tế không bị mất trong hình ảnh cuối cùng. Điều này đã giúp tôi lưu bộ ký ức quý giá hơn nhiều trên FPGA.

Vấn đề quan trọng nhất là màn hình LCD đang sử dụng tín hiệu 5 V TTL. FPGA có thể chấp nhận ở mức tín hiệu 3,3 V tốt nhất để chuyển đổi mức phải được thực hiện. Tôi đã chọn để tận dụng các điốt kẹp đầu vào trong một số bộ đệm logic loạt 74HC để thực hiện chuyển đổi này. Điều này có xu hướng phá hủy tỷ lệ tăng / mùa thu đáng kể mặc dù. Ví dụ, 74HC4050 thậm chí còn có các điện trở polysilicon nối tiếp với diode trong khuôn, thay thế nhu cầu về một dòng điện trở bên ngoài. Tôi đã chơi nó an toàn và thêm 1 Kω loạt điện trở vào đầu vào của bộ đệm này và đầu ra được đưa vào FPGA. Đầu ra của đầu ra HSYNC và VSYNC của FPGA được nối trực tiếp vào màn hình trong khi các dòng RGB được liên kết qua các điện trở 330 ω.

Thành công

Thành công!
Sau khi thuần hóa đồng hồ pixel 25 MHz để hành xử trên một chiếc bánh mì và nối FPGA sang bên ngoài mới

Cảng VGA của màn hình, phạm vi đã được đưa trở lại vinh quang chính thức của nó! Mặc dù mọi thứ hoạt động hoàn hảo, thiết lập này dễ bị nhiễu. Tất cả những gì tôi cần làm bây giờ là tạo ra một PCB và cấp cho VGA giám sát một nơi thường trú trong phạm vi.

Vì vậy, những gì tiếp theo bạn hỏi? Chà, hiện tại cách duy nhất để lưu ảnh chụp màn hình là thông qua ổ đĩa mềm ngày. Nhưng vì bây giờ chúng ta đã có dữ liệu LCD đi qua một FPGA, tại sao không viết nó vào thẻ SD?