Có Vi điều khiển với 16 MB Ram không?
Đúng. Tuy nhiên, người duy nhất tôi biết là trong gia đình Renesas SuperH và không bao gồm ROM - vì vậy bạn phải có đèn flash ngoài, nhưng nó có 16 MByte SRAM trên bo mạch.
Tôi đang tìm cách viết một trình giả lập cho Sega Megadrive (Sega Genesis) chạy trên AVR.
Không có bộ vi điều khiển SRAM 16 MByte trong gia đình Atmel AVR. Hoặc bất cứ nơi nào trong dòng sản phẩm Atmel.
Tuy nhiên, một số thiết bị trong dòng sản phẩm Atmel AVR có Giao diện Bus ngoài sẽ cho phép bạn kết nối bộ nhớ bổ sung. Cụ thể, ATxmega128A1U có thể hỗ trợ tối đa 16 MB SRAM bên ngoài.
Vì vậy, tôi đã tìm kiếm một Bộ điều khiển vi mô có các đặc điểm tương tự như Motorola 68k được bán kèm với MegaDrive.
...
Tôi chắc chắn rằng SRAM hiện đại gần như không giống với bất cứ thứ gì 68k có, nhưng tôi có thể có được một micro AVR phù hợp với sức mạnh của 68k không, tôi có nhìn nhầm vấn đề này không? Tôi có cần thay đổi thiết kế của mình để phù hợp với micros hiện đại không?
Tôi không biết nếu một số nguồn bộ nhớ ngoài sẽ đủ nhanh.
Ah, đây là vấn đề bạn đang gặp phải.
Bộ xử lý 68k (tức là Motorola 68000) KHÔNG phải là vi điều khiển và KHÔNG có 16 MB SRAM nội bộ.
Mặc dù bộ xử lý có 32 bit bên trong, do giới hạn pin, nó chỉ có thể giải quyết tối đa 16 MB tế bào bộ nhớ ngoài, bao gồm flash, sram và bất kỳ thiết bị ánh xạ bộ nhớ nào.
Bạn không cần một bộ vi điều khiển có 16 MB SRAM nội bộ để mô phỏng bộ xử lý 68k.
Có một vi điều khiển 8 bit Atmel AVR có thể mô phỏng bộ xử lý Motorolla 68000 không?
Tôi nghĩ vậy. ATxmega128A1U có bus bộ nhớ ngoài lớn như bus của bộ xử lý 68k và có nhiều đèn flash và RAM cho phép nó chạy phiên bản vi mã của bộ xử lý 68k.
Nó có thể chạy tới 32 MHz và nhiều hướng dẫn mất một chu kỳ, nhưng ngay cả trường hợp xấu nhất cũng mất 5 chu kỳ trong bộ nhớ trong. Giao diện bên ngoài chậm hơn, nhưng nếu bạn chọn bộ nhớ nhanh thì nó vẫn sẽ nhanh hơn rất nhiều so với 68k.
Bộ xử lý 68k không chỉ chạy chậm hơn 4 lần mà hoạt động nhanh nhất phải mất ít nhất 4 chu kỳ xung nhịp và nhiều lần mất nhiều hơn 2-4 lần, đặc biệt là truy cập bộ nhớ.
Vì vậy, với SRAM thậm chí chậm (theo tiêu chuẩn ngày nay) (giả sử, một phần 70 MB 70 MB với giá dưới 10 đô la), bạn có thể sử dụng 0 trạng thái chờ trên bộ xử lý 32 MHz và chạy các vòng tròn xung quanh 68k chạy ở tốc độ 7 GHz. Chẳng hạn, một hướng dẫn di chuyển đơn giản trên 68k sẽ mất 4 chu kỳ ở mức 7.61 MHz mất 525 nS. Một hướng dẫn di chuyển đơn giản tương tự trên ATxmega128A1U chạy ở 32 MHz mất 31nS. Vì vậy, AVR có thể thực hiện 16 động tác vào thời điểm 68K được thực hiện với một. 68k mất 50 chu kỳ cho một số loại ngắt, trong khi đó, AVR nhảy đến ngắt trong 3 chu kỳ - vì vậy, AVR có thể xử lý một số ít các ngắt trong thời gian 68k chỉ đơn giản là nhảy vào một.
Tôi hy vọng bạn có thể chạy chu kỳ chính xác với nỗ lực cẩn thận nếu bạn chấp nhận một số jitter, mặc dù bạn có thể làm cho nó chạy chu kỳ hoàn toàn chính xác mà không có jitter nếu bạn tỉ mỉ. Bộ xử lý AVR chạy tốt với khả năng ép xung vừa phải, do đó bạn có thể chạy nó ở 38,35 MHz và có 5 chu kỳ AVR trên mỗi chu kỳ xung nhịp 68k.
Điều này không có nghĩa là nó sẽ dễ dàng, và có thể có một vài hướng dẫn rất phức tạp sẽ mất nhiều thời gian hơn cho AVR - nhưng thậm chí chúng có thể được tính toán với thiết kế cẩn thận.
Tôi có thể mô phỏng Sega Genesis với Atmel 8 bit không?
Không. Sega Genesis có bộ xử lý 68 nghìn nhưng nó cũng có bộ xử lý âm thanh (Z80) và bộ xử lý video mà bạn sẽ cần nhiều tài nguyên hơn để mô phỏng. Trong sơ đồ bên dưới, bạn sẽ tìm thấy bộ xử lý 68k ở phía trên bên trái - lưu ý rằng đó là một phần nhỏ của mọi thứ cần thiết để mô phỏng hệ thống Sega Genesis đầy đủ.
Vì vậy, trong khi bạn có thể dễ dàng mô phỏng lõi 68k của Sega Genesis, bạn sẽ không thể chạy các trò chơi được tạo cho Genesis chỉ bằng một bộ vi điều khiển AVR. Giả lập 68k một mình trên một chip sẽ đủ khó - ngay cả khi bạn đơn giản hóa mọi thứ tôi nghi ngờ bạn có thể lắp cả ba bộ xử lý vào một chip AVR 32 MHz duy nhất.
Tuy nhiên, có lẽ bạn có thể mô phỏng hai con chip đó với hai AVR nữa. Nếu bạn nhắm mục tiêu một màn hình LCD đồ họa đơn giản hơn mà không yêu cầu thời gian và thế hệ NTSC kỳ lạ, bạn có thể đơn giản hóa mọi thứ một chút và thậm chí có thể đặt cả hai chức năng vào một chip riêng biệt.
Đây là một dự án lớn, mặc dù, chắc chắn không phải là một dự án cuối tuần. Nếu bạn đang ở giai đoạn mà bạn chỉ cảm thấy thoải mái với các bảng phát triển Arduino, thì có thể thú vị khi tạo một trình giả lập bộ xử lý 68k đơn giản và kết nối một chút ROM và RAM bên ngoài để truy cập bộ nhớ. Arduino ATMega không có giao diện bộ nhớ ngoài, nhưng bạn có thể xoay vòng các dòng I / O và mô phỏng nó. Nếu bạn đi đủ xa trong dự án tới nơi bạn có thể mô phỏng các chương trình 68k đơn giản, thì có thể đáng để bỏ arduino, sử dụng môi trường phát triển Atmel và chip AVR tốt hơn với giao diện bus ngoài, và bạn có thể bắt đầu đọc và thực hiện hộp mực. Bạn thậm chí có thể truyền dữ liệu video và âm thanh vào máy tính và giải thích chúng khi xử lý - đó là '
Đảm bảo rằng các thói quen mô phỏng của bạn là di động và bạn sẽ có thể chuyển sang một bộ xử lý tốt hơn đủ dễ dàng để bạn không bị mắc kẹt.
Nếu dự án Arduino Mega đơn giản không bao giờ đi được xa, bạn đã không lãng phí nhiều tài nguyên cho dự án này. Nếu bạn thấy mình bị thúc đẩy để hoàn thành nó, việc chuyển sang chip Atmel có khả năng cao hơn sẽ không quá khó khăn.
Tôi nói hãy thử xem. Một số điều tôi đã nói và những người khác đã nói có vẻ như điều này là không thể vượt qua, nhưng đừng để chúng tôi cản trở bạn. Tiếp tục đặt câu hỏi mỗi khi bạn gặp chướng ngại vật và bạn sẽ thấy rằng hầu hết các kỹ sư đều thích thử thách và sẽ cung cấp cho bạn sự hiểu biết và giúp bạn cần đi xa trên con đường này.
Thi đua là rất nhiều niềm vui.