VGA giao tiếp với PIC


7

Tôi đang tìm cách để điều khiển màn hình VGA bằng PIC. Các thành phần bên ngoài đều ổn, do đó, một chip VGA có I2C hoặc SPI hoặc một cái gì đó cũng không sao.

Yêu cầu:

  • Độ phân giải: tối đa 1024x768, không tối thiểu
  • Ngôn ngữ: C (trình biên dịch C18) hoặc Jalv2
  • Chỉ có văn bản, không có đồ họa cần thiết (nhưng cũng sẽ ổn nếu có nó)
  • Một màu là đủ, vì vậy chuyển đổi DA nằm ngoài phạm vi của câu hỏi này

Trong dự án của tôi, tôi có một bộ đệm văn bản mà tôi muốn có trên màn hình. Bạn có thể so sánh nó với việc sử dụng màn hình LCD để hiển thị văn bản, nhưng bây giờ với VGA.


Bạn đang cố làm gì vậy? PIC không có bất kỳ phần cứng video nào và cũng không có phần cứng video tiêu chuẩn thực tế nào được sử dụng với PIC. Bất kỳ phần mềm sẽ được cụ thể cho một thiết lập phần cứng cụ thể.
Dave Tweed

1
PIC bên phải có thể tạo ra tín hiệu VGA với mã hóa cẩn thận, nhưng điều đó sẽ không dễ dàng. Bạn dự định cung cấp phần cứng nào giữa PIC và đầu ra VGA?
Olin Lathrop

2
Một bộ đệm văn bản có kích thước gì? Bạn có thể dành phần lớn sức mạnh của bộ xử lý để phục vụ màn hình không? Ngoài đỉnh đầu tôi không biết về "chip VGA" khép kín nhưng bạn có thể tạo một SPI độc lập hoặc nô lệ hiển thị nối tiếp với một FGPA nhỏ hoặc vi điều khiển thứ hai, một trong hai có tốc độ xung nhịp rất cao và / hoặc DMA (có thể là một số bộ phận vỏ ARM) hoặc một bộ phận được thiết kế cho các nhiệm vụ kỳ lạ như động cơ đẩy thị sai. Nếu bạn ổn với màu sắc hạn chế, giao diện điện ảnh của bạn có thể chỉ là một vài điện trở.
Chris Stratton

2
Thứ nhất, để giảm tải nhiệm vụ rất bận rộn là liên tục sơn lại màn hình để cho bộ xử lý chính của bạn tự do chiêm ngưỡng những gì sẽ có trên màn hình. Hai, vì nó nhanh hơn, có nhiều lõi và mọi người đã thực hiện hiển thị video với nó. Một đồ họa sẽ cho phép linh hoạt hơn nữa, nhưng có đường cong học tập cao và đắt hơn đáng kể bao gồm các thành phần hỗ trợ.
Chris Stratton

2
@Camil Staps Hãy xem mã cho Bảng thử nghiệm Propeller chẳng hạn. Nó có bàn phím và chuột PS / 2, hiển thị trên đầu ra hỗn hợp và VGA, lấy mẫu từ micrô và phát lại, tất cả cùng một lúc. Một nơi khác để tìm là trao đổi đối tượng . Có nhiều đối tượng VGA có sẵn miễn phí. Ngoài ra còn có các bản demo VGA đi kèm với IDE.
AndrejaKo

Câu trả lời:


3

Nếu nó không quá mức cho ứng dụng của bạn, bạn có thể thêm giao diện ISA vào PIC của mình và chọn một thẻ video cũ ở đâu đó.

Tuy nhiên, supercat chỉ ra rằng không có PC để chạy BIOS video, vì vậy có lẽ điều này sẽ không hoạt động.

Tôi đã tìm thấy một bài đăng trên hackaday làm một điều tương tự với một AVR có thể tốt cho cảm hứng.


Ooh tuyệt đó! Chắc chắn phải suy nghĩ về điều này cho các dự án trong tương lai, cảm ơn vì đã liên kết & +1! Tôi e rằng đó là một sự quá mức cho dự án này mặc dù ..

Thật sự tốt đẹp, quên tất cả về điều đó. Tôi nghĩ thậm chí có thể có các thẻ VGA có thể hoạt động chỉ với kết nối ISA 8 bit; chắc chắn có các thẻ hercules, EGA, vv có thể được lập trình lại theo thời gian cần thiết.
Chris Stratton

Thẻ VGA đủ cổ sẽ hoạt động với bus 8 bit, nhưng yêu cầu I / O đối với bus 8 bit sẽ đủ lớn để người ta có thể truy cập 16 bit. Tuy nhiên, một vấn đề có thể xảy ra với thẻ VGA, đó là tìm ra trình tự khởi tạo nào là bắt buộc đối với bất kỳ thẻ cụ thể nào. Ngay cả các thẻ "tương thích VGA 100%" thường sẽ phải được khởi tạo theo nhiều cách không chuẩn trước khi sử dụng. Vì mọi thẻ VGA đều có ROM BIOS, đây không phải là lỗi khi thẻ được cắm vào PC; PC sẽ chạy mã trong ROM, sẽ ...
supercat

... thực hiện khởi tạo thích hợp cho mọi thanh ghi không tồn tại trên VGA gốc. Trừ khi bạn có kế hoạch viết thư viện mô phỏng 8086 cho PIC của bạn, tuy nhiên, các thói quen khởi tạo được cung cấp trong ROM là khá vô dụng.
supercat

@supercat có lẽ bạn đúng, tôi quên mất BIOS video.
Phil Frost

1

Có khả năng mạch cần thêm màn hình VGA vào PIC sẽ vượt quá chi phí và độ phức tạp của việc sử dụng một con chip khác có thể cung cấp màn hình và cũng có thể làm bất cứ điều gì PIC sẽ làm, hoặc sử dụng thứ gì đó như Raspberry Pi để cung cấp màn hình và để nó giao tiếp với PIC thông qua UART hoặc một cái gì đó tương tự (tôi nghĩ Raspberry PI có ít nhất một UART trong số các chân I / O của nó).

Nếu mục tiêu của bạn là xây dựng cho mình một hệ thống con VGA để bạn có thể tìm hiểu cách thức hoạt động của những thứ như vậy, giao diện VGA ở 640x480 yêu cầu khả năng đạt khoảng 32 triệu pixel / giây. Đó sẽ là một chút công bằng vượt quá khả năng của một PIC "chưa được đăng ký"; bạn có thể sẽ không phải thêm nhiều phần cứng vào PIC để cho phép nó xuất văn bản nếu bạn không bận tâm đến việc màn hình hiển thị bộ xử lý trong phần lớn mỗi khung hình, nhưng PIC có thể sẽ không có thời gian cho bất cứ điều gì khác; mỗi dòng quét sẽ yêu cầu nó thực hiện một chuỗi 160 lệnh như sau:

movf  POSTINC0,w,c
movwf PORTC,c

bắt đầu chỉ đúng chu kỳ và chạy mà không bị gián đoạn [phần cứng sẽ lấy dữ liệu ký tự từ PORTC một cách mù quáng tại thời điểm đáng lẽ nó ở đó, đưa nó qua ROM hình dạng ký tự và tải nó vào một thanh ghi thay đổi].

Nếu bạn đã làm một cái gì đó tương tự, có thể PIC 32 MHz có thể tạo văn bản 80x25 bằng cách sử dụng một cái gì đó như ROM 32Kx8 nhanh (25ns) để giữ hình dạng ký tự và tuần tự hóa chúng, bộ đếm 3 bit để hiển thị các pixel của mỗi ký tự và một vài cổng linh tinh; người ta có thể sử dụng một trong các mô-đun PWM của PIC để xử lý đồng bộ hóa ngang. Cách tiếp cận này sẽ cung cấp một ma trận gạch 80x25, mỗi ô có thể là bất kỳ hình nào trong số 256 hình; mỗi hình dạng sẽ là 8x16 pixel và bất kỳ sự kết hợp nào của 256 màu [để đơn giản, hình các màu có thể sẽ là RRRGGGBB hoặc đại loại như thế]. Nếu một người gặp khó khăn trong việc tìm kiếm ROM 32Kx8 đủ nhanh, thay vào đó, người ta có thể sử dụng RAM 32Kx8 nhanh và cung cấp cơ chế cung cấp dữ liệu vào nó khi khởi động hệ thống.


Nhưng Raspberry Pi không làm VGA.
AndrejaKo

@AndrejaKo: À, được rồi. Nếu bạn cần VGA nói riêng, có lẽ vẫn còn một số máy tính bảng đơn khác có thể thực hiện công việc với chi phí thấp hơn chi phí kỹ thuật cho một giải pháp tùy chỉnh. Đi theo con đường PIC có thể là giáo dục, mặc dù. Số lượng mạch không phải là không hợp lý, và bạn có thể vẫn có thể tìm thấy mọi thứ bạn cần trong các bộ phận dễ hàn bằng tay. BTW, thêm một số bộ đếm, RAM ngoài chip và logic keo nhỏ sẽ giúp video có thể được tạo liên tục mà không cần sự tham gia của PIC, với lời cảnh báo rằng PIC ...
supercat

... sẽ phải ghi đúng thời gian màn hình của nó ghi để đảm bảo rằng chúng trùng khớp với thời gian dữ liệu hiển thị có sẵn; thêm một chút mạch có thể giảm bớt yêu cầu đó.
supercat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.