Mục lục:

Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2: 4 bước
Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2: 4 bước

Video: Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2: 4 bước

Video: Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2: 4 bước
Video: 6502 Badge for the Vintage Computer Festival Midwest 2017 2024, Tháng mười một
Anonim
Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2
Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2

Tiếp theo từ Thiết bị hướng dẫn trước đây của tôi, giờ đây tôi đã đặt 6502 vào bảng mạch dải và thêm Bộ điều hợp giao diện đa năng 6522 (VIA). Một lần nữa, tôi đang sử dụng phiên bản WDC của 6522, vì nó là phiên bản hoàn hảo cho 6502. Các chip mới này không chỉ sử dụng ít năng lượng hơn nhiều so với các phiên bản MOS ban đầu mà còn có thể chạy ở tốc độ chậm hơn hoặc thậm chí là chạy qua một chương trình mà không có bất kỳ vấn đề.

Chương trình Arduino ban đầu được viết bởi Ben Eater (người có nhiều video trên YouTube) và đã được tôi sửa đổi để đạt được kết quả này.

Quân nhu

1 x Bộ xử lý WDC W65C02

1 x Bộ điều hợp giao diện đa năng WDC W65C22

1 x 74HC00N IC (4 cổng NAND 2 đầu vào) hoặc tương tự

1 x rộng 10cm (35 dòng) bảng dải

2 x 40 chân cắm DIL

Ổ cắm DIL 1 x 14 chân

Chân tiêu đề PCB 2,54mm

Ổ cắm tiêu đề PCB 2,54mm

1 x 12mm Công tắc nút nhấn xúc giác tạm thời PCB được gắn SPST hoặc tương tự

1 x 1K điện trở

1 x 3K3 điện trở

2 x 0,1 uF tụ gốm

Đèn chiếu sáng nước 1 x 8 đường LED 5mm màu đỏ

Dây màu khác nhau cho các kết nối

8 dây liên kết nam - nam

Bước 1: Bảng mạch

Bảng mạch
Bảng mạch
Bảng mạch
Bảng mạch

Bảng mạch khá nhỏ gọn và mặt dưới cắm trực tiếp vào Arduino MEGA. Để đạt được điều này, các chốt được đẩy càng xa càng tốt vào các giá đỡ bằng nhựa trước khi được hàn vào mặt dưới của bảng. Các chân dài hơn có thể đã được sử dụng cho việc này, nhưng các chân tiêu chuẩn có nghĩa là bo mạch nằm chắc chắn trên đầu MEGA.

Tôi đã xếp các IC 6502 và 6522 để chúng sử dụng các rãnh của bảng mạch dải để kết nối với MEGA. Ngoài ra còn có một số kết nối cho 6502 ẩn dưới IC. Khi tạo bảng, việc đầu tiên cần làm là cắt 16 dải sẽ kết nối với hàng ổ cắm đôi của Arduino. 2 bên ngoài không cần phải cắt vì 5v và Gnd ở cả hai bên. Hàn tiếp theo trong 2 hàng 18 chân ở mặt dưới và 2 hàng 18 ổ cắm ở mặt trên.

Sau đó, các ổ cắm DIL được hàn tại chỗ và các rãnh cắt giữa chúng. Tôi có thể đã lưu kết nối bằng cách đặt chân 14 của 74HC00 trên cùng một rãnh với 5v. Tôi chỉ cắt các bản nhạc khi tôi chắc chắn rằng chúng cần phải có trong khi tôi đang hàn các dây kết nối. Tuy nhiên, mọi thứ không phải lúc nào cũng theo kế hoạch, ban đầu tôi thiết kế bảng mạch dải từ bảng mạch bánh mì trước đó bằng cách sử dụng các chân 2, 3 và 7 của Arduino, nhưng chúng không khớp với các lỗ trên bảng dải, vì vậy phải sử dụng chân 18, 31 và 37. Do đó, các liên kết trên bảng của tôi trên 31 và 37. Bạn có thể thắc mắc tại sao tôi không sử dụng một trong các chân không sử dụng (23, 24, v.v.) cho đồng hồ, điều này là do chúng không hỗ trợ ngắt, vì vậy phải sử dụng chân 18, 19, 20 hoặc 21. May mắn thay, 4 chân này thẳng hàng với các lỗ trên bảng dải và giữ cho mọi thứ nhỏ gọn. Chân 18 cũng ở xa nhất so với tất cả các dây khác.

Bạn cũng có thể nhận thấy rằng bảng đã hoàn thành của tôi không hoàn toàn giống với sơ đồ của tôi. Điều này là do tôi đã theo dõi sơ đồ của người khác. Do đó, các kết nối với 74HC00. Tôi cũng đã thêm một đèn LED nguồn và thêm 2 hàng ổ cắm cho Gnd và 5v cũng như một vài tụ điện nữa.

Tôi có thể đã kết nối 2 ổ cắm dữ liệu, nhưng điều này có nghĩa là có nhiều dây hơn qua bảng. Tôi đã chọn 8 dây liên kết để làm điều này như một biện pháp tạm thời.

Cổng A và B của 6522 có các ổ cắm được hàn vào các rãnh của chúng để có thể dễ dàng lắp các đèn LED vào.

Giờ đây, số lượng dây ít hơn nhiều so với phiên bản bảng mạch bánh mì.

Bước 2: Lý thuyết lập trình

Lý thuyết lập trình
Lý thuyết lập trình

6522 có hai cổng I / O cũng như nhiều tính năng khác, nhưng cổng A và B có thể dễ dàng truy cập. Để xuất dữ liệu trên cổng, thanh ghi hướng dữ liệu (DDR) cần được đặt tương ứng và dữ liệu được gửi đến chính cổng.

Với thiết lập ở trên, 6522 có giá $ E000.

Để xuất dữ liệu trên cổng B, DDR tại $ E002 được đặt thành $ FF (255 - tất cả các đầu ra) và dữ liệu được gửi đến $ E000.

Để xuất dữ liệu trên cổng A, DDR tại $ E003 được đặt thành $ FF (255 - tất cả các đầu ra) và dữ liệu được gửi đến $ E001.

Đoạn mã dưới đây tải $ FF vào thanh ghi 6502 A và ghi nó vào DDR B ở $ E002. Sau đó, nó tải $ 55 và ghi nó vào ORB. Mã được xoay (cho $ AA) và được ghi vào ORB. Chương trình nhảy trở lại $ 1005 và lặp lại liên tục. LƯU Ý: DDR chỉ cần được khởi tạo một lần.

Địa chỉ Hexdump Dissassembly

$ 1000 a9 ff LDA # $ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA # $ 55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6a ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 JMP $ 1005

$ 55 trong hệ nhị phân là 010101010 và $ AA là 10101010 khiến các đèn LED luân phiên 4 bật, 4 tắt.

Sửa chữa nhanh và bẩn:

Thay thế 74HC00 (Cổng NAND đầu vào Quad 2) bằng 74HC08 (Cổng AND đầu vào Quad 2) và 6522 hiện có giá $ 6000 thay vì $ E000. Điều này di chuyển nó từ 32K trên xuống 32K thấp hơn của bộ nhớ địa chỉ của 6502.

Bước 3: Chương trình và đầu ra Arduino

Chương trình và đầu ra Arduino
Chương trình và đầu ra Arduino

Vì 6502 không có RAM để đọc nên Arduino đang cung cấp chương trình để nó đọc. Khi phát hiện xung đồng hồ trên chân 18, Arduino đưa dữ liệu chương trình lên bus dữ liệu (các chân Arduino 39, 41, 43, 45, 47, 49, 51 và 53). 6502 tạo ra các địa chỉ riêng của nó mà chỉ được Arduino giám sát trên các chân được đánh số chẵn từ 22 đến 52. Arduino cũng đang cung cấp xung đồng hồ trên chân 37. Dòng R / W của 6502 được giám sát trên chân 31.

Vì Arduino đang cung cấp dữ liệu, cho đến nay vẫn chưa thể lấy 6502 để nhập dữ liệu từ VIA (trừ khi bạn biết rõ hơn).

Chương trình Arduino ở dưới và đầu ra mẫu từ Màn hình nối tiếp ở trên.

Bước 4: Kết luận

Một lần nữa, tôi đã cố gắng chỉ ra cách thiết lập một "Máy tính 6502" tối thiểu.

Ở giai đoạn này, 6502 vẫn dựa vào Arduino để cung cấp cho nó một chương trình và một xung đồng hồ để nó chạy.

Nó là một bước xa hơn so với khi tôi thiết lập nó trên bảng bánh mì.

Tôi đã không sử dụng 74HC373 lần này nhưng 6522 phức tạp hơn để chốt kết quả đầu ra dữ liệu. Ngoài ra 6522 có hai cổng I / O.

Tôi dự định thực hiện dự án này xa hơn bằng cách cài đặt một số SRAM hoặc EEPROM.

Đề xuất: