Mục lục:
- Quân nhu
- Bước 1: Khái niệm
- Bước 2: Yêu cầu
- Bước 3: Kết hợp nó lại với nhau
- Bước 4: Kiểm tra mạch
- Bước 5: Bước tiếp theo
- Bước 6: Chương trình
- Bước 7: Kết luận
Video: Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 1: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Bộ vi xử lý 6502 xuất hiện lần đầu tiên vào năm 1975 và được thiết kế bởi một nhóm nhỏ do Chuck Peddle dẫn đầu cho MOS Technology. Hồi đó nó được sử dụng trong máy chơi game và máy tính gia đình bao gồm Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 và 64. Vào thời điểm đó, nó là một trong những loại rẻ nhất trên thị trường. Nó chưa bao giờ thực sự biến mất và bây giờ nó được sử dụng bởi những người yêu thích và các chuyên gia cho nhiều ứng dụng.
Phiên bản tôi đang sử dụng là W65C02S6TPG-14 do Trung tâm Thiết kế Phương Tây sản xuất và sử dụng ít năng lượng hơn 10 lần so với phiên bản gốc. Nó đặc biệt ở chỗ nó không phải chạy ở tốc độ 1 MHz như chip gốc. Nó có thể chạy chậm hơn nhiều hoặc được sử dụng để thực hiện từng bước trong một chương trình và thậm chí còn được tăng tốc lên đến 14 MHz. Bảng dữ liệu cho chip giải thích các khả năng của nó. Các chip 6502 khác không có khả năng này và sẽ không chạy theo cách này. Các chip hiện đang có sẵn trên Ebay cũng như các nguồn khác.
Quân nhu
Tất cả các bộ phận được sử dụng hiện có sẵn trên Ebay, AliExpress và những nơi khác.
Bước 1: Khái niệm
Tôi lấy cảm hứng từ Ben Eater, người đã sản xuất một loạt video trên YouTube về 6502 và nhiều khía cạnh khác của việc xây dựng máy tính và vi mạch. Chương trình được viết bởi anh ấy ban đầu và tôi đã sửa đổi điều này và một số thiết kế của anh ấy để đưa ra chương trình Có thể hướng dẫn này. Một người khác đã truyền cảm hứng cho tôi là Andrew Jacobs, người có một phần trên GitHub, nơi anh ấy sử dụng một vi PIC để điều khiển chiếc 6502 của mình.
Giống như Ben, tôi đang sử dụng Arduino MEGA để theo dõi 6502. Tôi cũng đang sử dụng MEGA để cung cấp tín hiệu đồng hồ không giống như Ben. Hiện tại tôi cũng không sử dụng bất kỳ EEPROM hoặc RAM nào.
Bước 2: Yêu cầu
Để xây dựng "máy tính" này, một danh sách các mục như sau:
1 x Arduino MEGA
1 x Trung tâm thiết kế phương Tây W65C02S6TPG-14
1 x 74HC00N IC (4 cổng NAND 2 đầu vào) hoặc tương tự
1 x 74HC373N IC (chốt trong suốt kiểu bát phân D) hoặc tương tự
Bảng bánh mì 2 x 830 lỗ (1 cái ở chốt)
Nhiều loại Dupont nam - dây dẫn nam và dây liên kết
2 x đèn LED (Tôi đã sử dụng 5mm màu xanh lam vì bạn có thể tránh xa mà không có điện trở)
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ở
2 x 0,1 uF tụ gốm
1 x 8 Way Water Light Marquee 5mm LED màu đỏ (như trên) hoặc 8 đèn LED và điện trở
LƯU Ý: Nếu bạn nhận được bộ chưa bán được, bạn có thể lắp các đèn LED không đúng cách để chúng là cực âm chung. Tôi gắn một đầu ruồi (thay vì ghim) để nó có thể dễ dàng kết nối ở nơi khác. VCC bây giờ trở thành Ground. Tất nhiên, bạn có thể xoay đèn LED xung quanh (trên một mặt hàng đã lắp ráp) và hàn lại chúng, nhưng điều này rất rắc rối! Bộ dụng cụ hiện đang có sẵn trên AliExpress.
Bước 3: Kết hợp nó lại với nhau
Tôi thấy dễ dàng hơn khi sử dụng các dây DuPont mới chưa được tách khỏi dải băng của chúng cho các bus địa chỉ và dữ liệu.
Kết nối chân 9 (A0) của 6502 với chân 52 của MEGA, chân 10 (A1) của 6502 đến chân 50, v.v.
cho đến khi
Kết nối chân 25 (A15) của 6502 với chân 22 của MEGA.
16 kết nối cho đến nay.
Tương tự như vậy
Kết nối chân 26 (D7) của 6502 với chân 39 của MEGA, chân 27 (D6) của 6502 đến chân 41, v.v.
cho đến khi
Kết nối chân 33 (D0) của 6502 với chân 53 của MEGA.
8 kết nối nữa.
Kết nối chân 8 (VDD) với 5v trên MEGA.
Một tụ điện 0,1uF được kết nối từ chân 8 đến Gnd của bảng mạch bánh mì có thể hữu ích ở đây nhưng không cần thiết.
Kết nối chân 21 (VSS) với Gnd trên MEGA.
Các chân 2, 4, 6, 36 và 38 có thể được gắn với 5v
Kết nối chân 37 (Đồng hồ) với chân 2 và chân 7 của MEGA.
Kết nối chân 34 (RWB) với chân 3 của MEGA.
Kết nối chân 40 (Reset) như sơ đồ trên.
Bước 4: Kiểm tra mạch
Ở giai đoạn này, 6502 sẽ hoạt động và chương trình1 có thể được sử dụng. Nếu bạn đang sử dụng bảng điều khiển 8 cách (như trên), nó có thể được lắp thẳng vào breadboard và dây dẫn ruồi nối với mặt đất, hoặc bạn có thể sử dụng 8 đèn LED và điện trở. LEDS sẽ hiển thị những gì có trên bus dữ liệu.
Ở giai đoạn này, cũng nên đặt độ trễ trong Vòng lặp () thành 500 hoặc hơn, để theo dõi những gì đang xảy ra.
Bạn sẽ nhận được một đầu ra tương tự trên Serial Monitor như ở trên. Khi Reset được nhấn, bộ xử lý sẽ trải qua 7 chu kỳ và sau đó nó sẽ tìm kiếm điểm bắt đầu của chương trình ở các vị trí $ FFFC và $ FFFD. Vì không có địa chỉ vật lý nào để 6502 đọc, chúng tôi phải cung cấp chúng từ MEGA.
Trong kết quả đầu ra ở trên, 6502 đọc $ FFFC và $ FFFD và nhận được $ 00 và $ 10 (byte thấp, byte cao) là giá trị bắt đầu của chương trình ở mức $ 1000. Sau đó, bộ xử lý bắt đầu thực hiện chương trình tại vị trí $ 1000 (như trên). Trong trường hợp này, nó ghi $ A9 và $ 55, tức là LDA # $ 55 (Nạp 85 vào bộ tích lũy). Một lần nữa vì không có vị trí bộ nhớ vật lý, MEGA mô phỏng những gì được đọc từ bus dữ liệu.
$ 55 (85) cho dạng nhị phân 01010101 và khi xoay 1 bit sang trái cho $ AA (170) 10101010.
Chương trình cho thấy rằng bộ xử lý đang hoạt động chính xác nhưng sẽ sớm hơi nhàm chán, hãy chuyển sang phần tiếp theo.
Bước 5: Bước tiếp theo
"Một đống mì Ý" ở trên có lẽ là thứ giống như những gì bạn sẽ có sau công đoạn này.
Tiếp theo, bạn cần thêm các IC 74HC373N và 74HC00N vào breadboard.
Thật không may, các chân của 373 không thẳng hàng với bus dữ liệu, vì vậy sẽ cần phải được nối bằng dây.
Kết nối 5v với chân 20.
Kết nối đất với chân số 10.
Kết nối chân 33 (D0) của 6502 với chân 3 (D0) của 74HC373N
và tương tự như vậy với chân D1 đến D7.
Q0 đến Q7 là các đầu ra và những đầu ra này sẽ cần kết nối với đèn LED hoặc các đèn LED và điện trở riêng lẻ.
Với 74HC00 chỉ cần 2 cổng của nó
Kết nối 5v với chân 14.
Kết nối đất với chân số 7.
Kết nối chân 17 (A8) của 6502 với chân 1 (1A) của 74HC00
Kết nối chân 25 (A15) của 6502 với chân 2 (1B) của 74HC00
Kết nối chân 34 (R / W) của 6502 với chân 5 (2B) của 74HC00
Kết nối chân 3 (1Y) của 74HC00 với chân 4 (2A) của 74HC00
Kết nối chân 6 (2Y) của 74HC00 với chân 11 (LE) của 74HC373N
Kết nối chân 11 (LE) của 74HC373N với chân 1 (OE) của 74HC373N
Bạn có thể kết nối đèn LED màu xanh lam với 1Y và nối đất cũng như 2Y với đất, điều này sẽ cho biết khi nào cổng hoạt động.
Cuối cùng thay đổi dòng trong thủ tục onClock từ chương trình1 thành chương trình2
setDataPins (program2 [offset]);
Bước 6: Chương trình
Chương trình 6502-Monitor chứa hai quy trình 6502 được mô tả ở trên.
Chương trình vẫn đang được phát triển và còn một chút rắc rối.
Khi chạy chương trình2, độ trễ trong vòng lặp () có thể từ 50 trở xuống và thậm chí bị loại bỏ hoàn toàn. Nhận xét về các dòng Serial.print () cũng làm cho 6502 chạy nhanh hơn. Ngắt kết nối chân 1 (OE) của 373 khỏi chân 11 (LE) tạo ra các kết quả khác nhau. Ngắt kết nối chân 1 và chân 11 của 373 khỏi các cổng NAND cho phép bạn xem những gì đang có trên bus dữ liệu ở mỗi chu kỳ đồng hồ.
Bạn có thể cần buộc OE xuống đất thay vì để nó nổi vì 8 đường đầu ra bị vô hiệu hóa nếu chân này lên cao. Khi chân LE ở mức cao, các chân đầu ra giống như các đầu vào. Việc lấy chân LE ở mức thấp sẽ chốt các đầu ra, tức là nếu các chân đầu vào thay đổi, các đầu ra vẫn giữ nguyên.
Tôi đã cố gắng giữ chương trình càng đơn giản càng tốt để dễ hiểu hơn.
Thử nghiệm với độ trễ thời gian cho phép bạn theo dõi chính xác những gì 6502 đang làm.
Dưới đây là hai chương trình (cả hai đều chạy ở địa chỉ $ 1000) trong 6502 Assembler:
chương trình1
LDA # $ 55
NOP
ROL
STA $ 1010
JMP $ 1000
ROL xoay nội dung của bộ tích lũy sang trái một bit, có nghĩa là $ 55 bây giờ trở thành $ AA.
Trong mã máy (hex): A9 55 EA 2A 8D 10 10 4C 00 10
chương trình2
LDA # $ 01
STA $ 8100
ADC # $ 03
STA $ 8100
JMP $ 1005
Trong mã máy (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
Trong chương trình2 bây giờ có một địa chỉ thực $ 8100, đó là nơi 74HC373 nằm trên bus địa chỉ.
tức là A15 của 6502 là 32768 ($ 8000) và A8 là 256 ($ 0100) = 33024 ($ 8100).
Vì vậy, khi 6502 ghi vào $ 8100 (STA $ 8100), R / W của 6502 thấp và dữ liệu trên bus dữ liệu 6502 được chốt khi 373 LE xuống thấp. Vì Cổng 74HC00 NAND, các tín hiệu bị đảo ngược.
Trong màn hình trên, bản in thứ hai đã tăng 3 (ADC # $ 03) - từ $ 7F lên $ 82.
Trong thực tế, hơn 2 dòng của bus địa chỉ sẽ được sử dụng cho vị trí cụ thể của 373. Vì đây là địa chỉ vật lý duy nhất trong số 65536 có thể, nên nó thể hiện cách hoạt động của bus địa chỉ. Bạn có thể thử nghiệm với các chân địa chỉ khác nhau và đặt nó ở một vị trí khác. Tất nhiên, bạn sẽ cần thay đổi toán hạng STA sang vị trí mới. ví dụ. Nếu bạn sử dụng dòng địa chỉ A15 và A9, địa chỉ sẽ là $ 8200 (32768 + 512).
Bước 7: Kết luận
Tôi đã cố gắng chứng minh việc thiết lập và chạy 6502 dễ dàng như thế nào.
Tôi không phải là chuyên gia trong lĩnh vực này vì vậy tôi hoan nghênh bất kỳ nhận xét hoặc thông tin mang tính xây dựng nào.
Chúng tôi hoan nghênh bạn phát triển điều này hơn nữa và tôi sẽ quan tâm đến những gì bạn đã làm được.
Tôi dự định thêm EEPROM, SRAM và 6522 vào dự án cũng như đưa nó lên bảng mạch dải trong tương lai.
Đề xuất:
Tự làm 8 kênh Analog Màn hình điện áp tối đa / tối thiểu: 13 bước
Tự làm 8 kênh Analog Max / Min Voltage Monitor: Hệ thống điều khiển và các thiết bị liên quan xử lý nhiều nguồn điện, chẳng hạn như đường phân cực hoặc pin và phải theo dõi dòng cao nhất (hoặc thấp nhất) trong một bộ nhất định. Ví dụ: chuyển đổi tải trong hệ thống cấp nguồn “nhiều pin” yêu cầu t
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 3: 7 bước
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 3: Tiếp tục xa hơn, bây giờ tôi đã thêm Chốt bát phân, 8 đèn LED hình chữ nhật và mảng điện trở 220 Ohm vào bảng mạch chính. Ngoài ra còn có một dây nối giữa chân chung của mảng và mặt đất, để có thể tắt đèn LED. Cổng 74HC00 NAND h
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: Tiếp theo từ Máy tính hướng dẫn trước của tôi, bây giờ 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à một kết hợp hoàn hảo cho 6502. Không chỉ những chiếc máy mới này còn c
Cách làm cho máy tính xách tay của bạn tiết kiệm pin với hiệu suất giảm thiểu tối thiểu: 4 bước
Làm thế nào để máy tính xách tay của bạn tiết kiệm pin với mức giảm hiệu suất tối thiểu: Ai nói rằng máy tính xách tay của bạn phải chịu hiệu suất chậm để tiết kiệm một chút năng lượng? Hiệu suất hoặc tuổi thọ pin của bạn thay đổi như thế nào phụ thuộc vào tuổi máy tính xách tay, tuổi thọ pin cũng như các chương trình và cài đặt khác. Dưới đây là một số bước đơn giản để giúp tăng
Nhiệt kế kỹ thuật số dựa trên Picaxe với tối đa và tối thiểu: 13 bước
Nhiệt kế kỹ thuật số dựa trên Picaxe với Max và Min: (Vui lòng để lại tin nhắn, nhưng đừng quá quan trọng, đây là hướng dẫn đầu tiên của tôi !!) Đây là nhiệt kế tôi làm cho xe tải cắm trại của chúng tôi, để hiển thị nhiệt độ bên ngoài. Nó dựa trên chip Picaxe vì chúng rẻ và dễ sử dụng. Nếu điều này dành cho