Mục lục:

KIM Uno - Trình giả lập Bộ công cụ phát triển bộ vi xử lý trị giá 5 €: 13 bước (có hình ảnh)
KIM Uno - Trình giả lập Bộ công cụ phát triển bộ vi xử lý trị giá 5 €: 13 bước (có hình ảnh)

Video: KIM Uno - Trình giả lập Bộ công cụ phát triển bộ vi xử lý trị giá 5 €: 13 bước (có hình ảnh)

Video: KIM Uno - Trình giả lập Bộ công cụ phát triển bộ vi xử lý trị giá 5 €: 13 bước (có hình ảnh)
Video: BỘ VI XỬ LÝ TRUNG TÂM (CPU) HOẠT ĐỘNG NHƯ THẾ NÀO - KHOA HỌC MÁY TÍNH TẬP 7 | Tri thức nhân loại 2024, Tháng sáu
Anonim
Image
Image
KIM Uno - Trình giả lập bộ công cụ phát triển vi xử lý trị giá € 5
KIM Uno - Trình giả lập bộ công cụ phát triển vi xử lý trị giá € 5
KIM Uno - Trình giả lập bộ công cụ phát triển vi xử lý trị giá 5 €
KIM Uno - Trình giả lập bộ công cụ phát triển vi xử lý trị giá 5 €

KIM Uno là một bộ công cụ dành cho nhà phát triển được xác định bằng phần mềm di động dành cho các bộ vi xử lý (retro). Nhưng hãy để tôi giới thiệu ý tưởng về nó bằng cách quay ngược thời gian:

Vào cuối năm 2018, tôi nghĩ rằng tôi muốn xây dựng một bộ công cụ dành cho nhà phát triển bộ vi xử lý di động nhỏ, giống như KIM-1 nổi tiếng của MOS Technology, Inc. và được thiết kế bởi Chuck Peddle, người cũng tham gia vào việc tạo ra CPU 6502.

Nhưng việc xây dựng một bộ công cụ phát triển "trần trụi" với các thành phần logic rời rạc không phải là lựa chọn vì nó cần một nguồn cung cấp điện lớn (vì những thiết bị cổ xưa đó có xu hướng sử dụng một số dòng điện nghiêm trọng) và quá trình phát triển cũng sẽ tốn rất nhiều thời gian. Và tôi muốn nó ngay bây giờ!

Do đó, tôi đã thiết kế KIM Uno như một thiết bị di động, vừa vặn trong một tay và được cung cấp năng lượng bởi hai pin CR2032. Nó sử dụng vi điều khiển ATMega328p ("Arduino") chạy ở 8 MHz để mô phỏng (hoặc mô phỏng) một CPU mong muốn. Kiến trúc này cũng đảm bảo rằng các CPU được mô phỏng có thể hoán đổi cho bất kỳ thứ gì phù hợp với bên trong bộ nhớ flash của vi điều khiển. Vì vậy, nó là một thiết bị đa năng.

Thật tình cờ, sau đó tôi đã xem một bài nói chuyện thực sự hay - có tên là Buổi nói chuyện máy tính hướng dẫn tối thượng của Apollo (34C3) - trên YouTube có đề cập đến "Một bộ máy tính hướng dẫn" hoặc OISC. Tôi không biết về chúng và thấy đây là ứng cử viên hoàn hảo để thực hiện nó.

KIM Uno mô phỏng một CPU chỉ với một lệnh: subleq - trừ và rẽ nhánh nếu nhỏ hơn hoặc bằng không.

Nếu bạn làm theo cùng với tôi qua Tài liệu hướng dẫn này, bạn có thể xây dựng KIM Uno của riêng mình ngay lập tức. Và phần tốt nhất - bên cạnh thực tế là bạn có thể sửa đổi nó theo sở thích của mình - là nó chỉ tốn 4, 75 € để thực hiện (tính đến cuối năm 2018).

Một gợi ý: có một kho lưu trữ Git chứa tất cả các tệp được cung cấp bởi các bước khác nhau của hướng dẫn này. Trong trường hợp bạn muốn sửa đổi một số tài nguyên và chia sẻ chúng với chúng tôi, tất cả những gì bạn có thể thực hiện PR. Nhưng bạn cũng có thể tải xuống tất cả các tệp cùng một lúc ở đó. Chỉ cần truy cập https://github.com/maxstrauch/kim-uno. Cảm ơn!

Có một dự án khá thú vị khác, được gọi là tương tự (KIM Uno), thực hiện một bản sao thực của 6502 KIM Uno. Kiểm tra nó ra ở đây. Người sáng tạo thậm chí còn bán bộ dụng cụ này. Vì vậy, nếu bạn quan tâm đến 6502 và thích dự án này, bạn nên xem qua đó!

Bước 1: Tìm nguồn cung cấp PCB

Tìm nguồn cung cấp PCB
Tìm nguồn cung cấp PCB
Tìm nguồn cung cấp PCB
Tìm nguồn cung cấp PCB

Như bạn có thể thấy, tôi đã tận dụng cơ hội để thiết kế một PCB và để nó được làm một cách chuyên nghiệp. Vì việc sản xuất nó bên ngoài và vận chuyển cho bạn sẽ mất rất nhiều thời gian (tùy thuộc vào vị trí của bạn trên thế giới;-)), nên việc đặt hàng là bước đầu tiên. Sau đó, chúng tôi có thể tiếp tục các bước khác trong khi PCB được sản xuất và vận chuyển cho bạn.

Tôi đã đặt mua PCB của mình ở Trung Quốc tại PCBWay với giá chỉ 5 đô la. Tôi không nhận được bất kỳ lợi ích nào khi giới thiệu PCBWay với tư cách là nhà sản xuất goto của tôi cho PCB, chỉ là nó hoạt động tốt đối với tôi và cũng có thể hoạt động tốt đối với bạn. Nhưng bạn có thể đặt mua chúng ở bất kỳ nơi nào khác như JLCPCB, OSH Park hoặc bất kỳ công ty PCB địa phương nào.

Nhưng nếu bạn muốn đặt chúng tại PCBWay, bạn có thể tải xuống tệp ZIP đính kèm "kim-uno-rev1_2018-12-12_gerbers.zip" và tải trực tiếp lên PCBWay mà không có bất kỳ thay đổi nào. Đây là tệp gốc mà tôi đã sử dụng để đặt mua PCB mà bạn có thể thấy trong hình ảnh.

Nếu bạn đang đặt hàng chúng từ một nhà sản xuất khác, bạn có thể cần phải xuất lại chúng từ các nguồn KiCad ban đầu, vì tôi đã tạo chúng với các thông số kỹ thuật từ PCBWay bạn có thể tìm thấy ở đây. Đối với các nguồn KiCad ban đầu, hãy tải xuống "kim-uno-kicad-sources.zip" và giải nén nó.

Nhưng thậm chí còn có một cách thứ hai: nếu bạn không muốn đặt mua PCB, bạn có thể xây dựng phiên bản của riêng mình bằng perfboard hoặc thậm chí là breadboard.

Dù sao: vì PCB hiện đang được phát triển, chúng ta có thể tập trung vào các phần khác! Đi theo tôi.

Bước 2: Tìm nguồn cung ứng các thành phần

Tìm nguồn cung ứng các thành phần
Tìm nguồn cung ứng các thành phần
Tìm nguồn cung ứng các thành phần
Tìm nguồn cung ứng các thành phần
Tìm nguồn cung ứng các thành phần
Tìm nguồn cung ứng các thành phần

Bây giờ bạn cần lấy các thành phần. Đối với điều này, bạn sẽ tìm thấy hình ảnh tổng quan về tất cả các thành phần và số lượng bạn cần, được đính kèm trong bước này cũng như BOM (hóa đơn nguyên vật liệu).

BOM chứa các liên kết đến eBay. Mặc dù những ưu đãi đó có thể bị đóng khi bạn đọc điều này, nhưng bạn có thể sử dụng nó như một điểm khởi đầu. Các thành phần được sử dụng là khá tiêu chuẩn.

Trong phần sau, tôi sẽ giải thích cho bạn tất cả các thành phần cần thiết:

  • Điện trở 7x 1 kΩ cho màn hình bảy đoạn. Bạn có thể giảm giá trị (ví dụ: xuống 470 Ω) để làm cho chúng sáng hơn, nhưng không giảm quá nhiều nếu không đèn LED sẽ chết hoặc pin cạn rất nhanh. Tôi thấy rằng giá trị này phù hợp với tôi
  • 1x 10 kΩ làm điện trở kéo lên cho đường ĐẶT LẠI của vi điều khiển
  • Tụ điện 1x 100nF để làm phẳng mọi đột biến điện áp (điều này không nên xảy ra vì chúng ta đang sử dụng pin, đúng vậy, nhưng để có biện pháp tốt…)
  • 1x ATMega328P trong gói DIP-28 (thường có tên ATMega328P-PU)
  • 1x PCB chính - xem bước trước; đặt hàng hoặc do chính bạn xây dựng
  • 2x bộ giữ pin CR2032
  • Công tắc 1x SPDT (cực đơn, đôi) về cơ bản có ba tiếp điểm và ở mỗi trạng thái trong số hai trạng thái của nó (bật hoặc tắt), nó kết nối hai tiếp điểm
  • 20 lần nút nhấn xúc giác cho bàn phím. Để sử dụng mặt sau của PCB, tôi đã sử dụng các nút ấn xúc giác SMD (các nút tiêu chuẩn 6x6x6 mm) - chúng khá dễ hàn như bạn sẽ thấy
  • TÙY CHỌN: Tiêu đề chân 1x 1x6 để kết nối lập trình viên, nhưng đây là tùy chọn như bạn sẽ thấy sau
  • Màn hình 1x bảy đoạn với 4 chữ số và màn hình 1x bảy đoạn với 2 chữ số - bảng sẽ chỉ sử dụng các phần tử 0,36 inch (9, 14 mm) với hệ thống dây điện cực dương chung. Cả hai yêu cầu đều quan trọng để có được một đơn vị hoạt động. Nhưng loại màn hình bảy phân đoạn này cũng rất phổ biến

Được đính kèm với bước này, bạn có thể tìm thấy tệp "component-datasheets.zip" chứa thông tin chính xác hơn về kích thước và loại của các thành phần được sử dụng. Nhưng hầu hết các linh kiện đều rất chuẩn và có thể tìm nguồn dễ dàng với số tiền ít.

Bây giờ bạn cần đợi cho đến khi bạn có tất cả các thành phần sẵn sàng để tiếp tục hàn. Trong thời gian này, bạn đã có thể chuyển đến phần cuối và đọc một chút về cách sử dụng KIM Uno nếu bạn thích.

Bước 3: Tổng quan về công cụ hàn

Tổng quan về công cụ hàn
Tổng quan về công cụ hàn
Tổng quan về công cụ hàn
Tổng quan về công cụ hàn

Để hàn và xây dựng KIM Uno, bạn cần các công cụ được hiển thị bằng hình ảnh:

  • Máy cắt dây (để cắt phần cuối của dây linh kiện)
  • Kìm dẹt
  • Cặp nhíp
  • (khá) Hàn không dày - tôi sử dụng vật hàn 0,56 mm
  • Một cái mỏ hàn - bạn không cần một cái mỏ hàn cao cấp (vì chúng tôi cũng không nghiên cứu khoa học tên lửa ở đây) - Tôi sử dụng Ersa FineTip 260 lâu rồi và nó thực sự tốt
  • Bút trợ dung: thêm chất trợ dung vào các thành phần và miếng đệm làm cho việc hàn chúng trở nên dễ dàng hơn rất nhiều vì sau đó chất hàn sẽ tự "chảy" đến đúng vị trí *
  • Tùy chọn: một miếng bọt biển (từ len kim loại) cho mỏ hàn của bạn

Để lập trình KIM Uno sau này, bạn cũng cần:

  • máy tính có chuỗi công cụ AVR-GCC và avrdude để tải lên chương trình cơ sở
  • một ISP (lập trình viên) - như bạn có thể thấy trên hình ảnh tôi đang sử dụng Arduino Uno làm ISP với một bản phác thảo đặc biệt - vì vậy không cần phải mua bất kỳ phần cứng cầu kỳ nào

* một số hướng dẫn của con người cần thiết;-)

Bạn đã sẵn sàng chưa? Trong bước tiếp theo, chúng ta sẽ bắt đầu lắp ráp KIM Uno.

Bước 4: Hàn # 1: Thêm điện trở và tụ điện

Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện
Hàn # 1: Thêm điện trở và tụ điện

Bạn phải luôn làm việc từ các thành phần nhỏ nhất (về chiều cao thành phần) trước, đến các thành phần cao nhất sau cùng. Do đó, chúng tôi bắt đầu bằng cách thêm các điện trở và uốn cong các chân ở phía sau để các điện trở dễ hàn và giữ nguyên vị trí. Sau đó cắt các dây dài.

Ngoài ra, không được hiển thị trong hình ảnh, hãy thêm tụ điện 100 nF nhỏ theo cùng một cách.

Một mẹo nhỏ: hãy giữ những chiếc chân dây đó trong một hộp đựng nhỏ, đôi khi chúng rất tiện dụng.

Bước 5: Hàn # 2: Lắp ráp bàn phím

Hàn # 2: Lắp ráp bàn phím
Hàn # 2: Lắp ráp bàn phím
Hàn # 2: Lắp ráp bàn phím
Hàn # 2: Lắp ráp bàn phím
Hàn # 2: Lắp ráp bàn phím
Hàn # 2: Lắp ráp bàn phím

Bước tiếp theo là hàn các công tắc xúc giác 20 SMD. Vì công việc này hơi rắc rối, chúng tôi thực hiện ngay bây giờ, khi PCB nằm phẳng trên bàn làm việc.

Chúng tôi sẽ làm việc từ trên xuống dưới (hoặc từ trái sang phải nếu PCB được định hướng như trong ảnh) và bắt đầu với hàng đầu tiên: chọn một trong bốn miếng đệm cho mỗi công tắc và làm ướt nó bằng bút thông lượng.

Sau đó, sử dụng một chiếc nhíp để lấy một công tắc và đặt nó cẩn thận vào bốn miếng đệm. Sau đó, chỉ hàn chân của công tắc trên miếng đệm mà bạn đã chọn và chuẩn bị bằng chất trợ dung. Đối với điều này, bạn nên "lấy" một ít thuốc hàn với bàn ủi của bạn trước khi bắt đầu. Sử dụng phương pháp này, hoàn thành toàn bộ hàng công tắc, chỉ hàn một chân.

Hình ảnh với các mũi tên cho thấy độ phóng đại cách hàn được thực hiện chính xác.

Sau khi bạn đã hàn toàn bộ hàng (chỉ một chốt), bạn có thể thực hiện một số điều chỉnh nhỏ bằng cách đốt nóng chốt lại và định vị lại công tắc. Đảm bảo rằng các công tắc được căn chỉnh tốt nhất có thể.

Nếu bạn hài lòng với việc căn chỉnh, bạn có thể làm ướt tất cả các chốt khác bằng bút thông lượng và sau đó hàn chúng bằng cách chạm vào nó với mỏ hàn và thêm một chút chất hàn bằng cách chạm vào nó. Bạn sẽ thấy rằng chất hàn được hút trực tiếp vào miếng đệm.

Sau khi hàn một hàng hoặc lâu hơn, bạn sẽ nhận thấy rằng bạn hiểu được nó và nó không khó nhưng lặp đi lặp lại. Vì vậy, chỉ cần thực hiện phần còn lại và bạn sẽ có một bàn phím hoàn chỉnh ngay lập tức.

Bước 6: Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển và ghim

Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển đổi và ghim
Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển đổi và ghim
Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển và ghim
Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển và ghim
Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển và ghim
Hàn # 3: Hiển thị bảy phân đoạn, đầu chuyển và ghim

Bây giờ bạn có thể thêm công tắc và đầu cắm chân cắm (tùy chọn) bằng cách giữ nó bằng ngón tay và hàn một chân để giữ nó vào PCB, để bạn có thể hàn các chân khác và cuối cùng chạm vào chân giữ ban đầu.

Hãy cẩn thận để không bị bỏng với mỏ hàn nóng. Nếu không cảm thấy thoải mái với điều này, bạn có thể sử dụng một ít băng dính (ví dụ như băng của họa sĩ) để giữ thành phần. Bằng cách này, bạn có thể rảnh cả hai tay để di chuyển.

Bảy màn hình phân đoạn được hàn theo cùng một cách (xem hình ảnh): bạn đặt nó vào, giữ nó bằng tay hoặc băng và hàn hai chân đối diện để giữ cố định trong khi bạn có thể hàn các chân khác.

Nhưng hãy cẩn thận và đặt màn hình bảy phân đoạn theo đúng hướng (với các dấu chấm thập phân hướng về bàn phím). Nếu không, bạn sẽ gặp rắc rối…

Bước 7: Hàn # 4: Hàn Vi điều khiển

Hàn # 4: Hàn Vi điều khiển
Hàn # 4: Hàn Vi điều khiển

Bây giờ bạn đã thực hành rất nhiều, bạn có thể tiếp tục và đặt bộ vi điều khiển vào với phần khía trên đỉnh (hoặc chân đầu tiên) hướng về phía công tắc. Sử dụng kìm dẹt, bạn có thể cẩn thận uốn cong các chân của bộ vi điều khiển vào trong một chút sao cho chúng khớp với các lỗ trên PCB.

Vì nó vừa khít nên bạn cần một lực kiểm soát nào đó để đưa bộ vi điều khiển vào. Ưu điểm là nó không bị rơi ra ngoài. Điều này có nghĩa là, bạn có thể mất thời gian và hàn nó từ phía sau.

Bước 8: Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)

Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)
Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)
Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)
Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)
Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)
Hàn # 5: Thêm giá đỡ pin (bước cuối cùng)

Cuối cùng bạn cần thêm các giá đỡ pin vào phía sau. Đối với điều này, bạn chỉ cần sử dụng bút thông lượng và làm ướt tất cả bốn miếng đệm và sau đó lấy một ít chất hàn lên bàn ủi của bạn. Căn chỉnh cẩn thận ngăn chứa pin trên cả hai miếng đệm. Ở cả hai đầu của các điểm tiếp xúc phải có cùng số lượng tấm PCB có thể nhìn thấy. Chạm vào miếng PCB và chân của giá đỡ pin bằng bàn ủi của bạn. Chất hàn sẽ chảy dưới miếng đệm và phủ lên nó và cố định nó ở vị trí như thể hiện trong hình ảnh. Nếu bạn gặp vấn đề với điều này, bạn có thể thêm nhiều thông lượng hơn bằng bút.

Bước 9: Nhấp nháy Trình giả lập

Nhấp nháy Trình giả lập
Nhấp nháy Trình giả lập
Nhấp nháy Trình giả lập
Nhấp nháy Trình giả lập
Nhấp nháy Trình giả lập
Nhấp nháy Trình giả lập

Trong kho lưu trữ zip đính kèm "kim-uno-firmware.zip", bạn có thể tìm thấy mã nguồn cho trình giả lập cùng với "main.hex" đã được biên dịch mà bạn có thể tải trực tiếp lên vi điều khiển.

Trước khi thực sự có thể sử dụng nó, bạn cần đặt các bit cầu chì của bộ vi điều khiển để nó sử dụng xung nhịp 8 MHz bên trong mà không chia đôi. Bạn có thể hoàn thành công việc bằng lệnh sau:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m

Nếu bạn chưa biết avrdude: nó là một chương trình tải các chương trình lên một bộ vi điều khiển. Bạn có thể tìm hiểu thêm về nó ở đây. Về cơ bản, bạn cài đặt nó và sau đó nó đã sẵn sàng để sử dụng. Đối với thiết lập của bạn, bạn có thể cần phải thay đổi đối số của "-P" thành một cổng nối tiếp khác. Vui lòng kiểm tra trên máy tính của bạn cổng nối tiếp nào được sử dụng (ví dụ: bên trong Arduino IDE).

Sau đó, bạn có thể cài đặt chương trình cơ sở vào bộ vi điều khiển bằng lệnh này:

avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U flash: w: main.hex

Một lần nữa: điều tương tự cũng áp dụng cho "-P" như trên.

Vì tôi không sở hữu ISP "chuyên nghiệp" (Lập trình viên trong hệ thống) nên tôi luôn sử dụng Arduino UNO (xem hình ảnh) và bản phác thảo mà tôi đính kèm ("arduino-isp.ino", từ Randall Bohn). Tôi biết rằng có một phiên bản mới hơn, nhưng với phiên bản này, tôi không gặp khó khăn gì trong năm năm qua, vì vậy tôi giữ nó. Nó chỉ hoạt động. Sử dụng nhận xét trong tiêu đề của bản phác thảo, bạn sẽ có sơ đồ chân trên Arduino UNO và sử dụng sơ đồ của KIM Uno (xem đính kèm), bạn có thể lấy sơ đồ chân của tiêu đề ISP 1x6 trên KIM Uno. Chân vuông, gần với màn hình bảy đoạn là chân 1 (GND). Các chân sau là (theo đúng thứ tự): RESET, MOSI, MISO, SCK, VCC. Bạn có thể kết nối VCC với 3V3 hoặc 5V.

Nếu bạn không thêm đầu cắm chân 1x6, bạn có thể sử dụng dây breadboard và đặt chúng vào các lỗ kết nối và dùng ngón tay tạo góc - giống như trong hình. Điều này tạo đủ tiếp xúc để cài đặt chương trình cơ sở và đặt cầu chì. Nhưng nếu bạn muốn thiết lập lâu dài hơn, bạn chắc chắn nên thêm tiêu đề pin 1x6.

Tôi có hai thiết bị: phiên bản sản xuất không có tiêu đề pin và phiên bản phát triển có tiêu đề pin mà tôi đã kết nối và sử dụng nó nhiều lần trong quá trình phát triển. Điều này là thoải mái hơn nhiều.

Bước 10: Hoàn thành

Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành

Bây giờ bạn đã hoàn thành và có thể bắt đầu viết các chương trình subleq của riêng bạn trên giấy, lắp ráp nó và sau đó nhập nó vào bộ nhớ.

KIM Uno đi kèm với tính toán Fibonacci được lập trình trước bắt đầu từ vị trí bộ nhớ 0x0a. Nó được đặt theo mặc định là n = 6 do đó sẽ dẫn đến giá trị là 8. Nhấn "Go" để bắt đầu tính toán.

Bước 11: Phân tích thiết kế PCB

Phân tích thiết kế PCB
Phân tích thiết kế PCB
Phân tích thiết kế PCB
Phân tích thiết kế PCB

Sau khi hoàn thành dự án này, tôi nhận thấy một số điểm đáng chú ý và cần được giải quyết trong một bản sửa đổi mới của hội đồng quản trị:

  • màn hình lụa của ATMega328p không có rãnh thông thường, nơi đặt chốt đầu tiên. Dấu chân DIP-28 thậm chí không có miếng đệm vuông nơi đặt chân đầu tiên. Điều này chắc chắn sẽ được cải thiện với màn hình lụa chi tiết hơn để tránh nhầm lẫn
  • tiêu đề ISP không có nhãn kết nối trên màn hình lụa. Điều này khiến bạn khó nhận ra cách kết nối nó với ISP
  • tiêu đề ISP có thể được thay đổi thành tiêu đề chân 2x6 với bố cục chân tiêu chuẩn để tránh bất kỳ sự nhầm lẫn nào

Ngoài những điểm đó, tôi khá vui vì nó đã hoạt động như thế nào trong lần thử đầu tiên.

Bước 12: Làm thế nào để lập trình SUBLEQ?

Image
Image
Lập trình SUBLEQ như thế nào?
Lập trình SUBLEQ như thế nào?
Lập trình SUBLEQ như thế nào?
Lập trình SUBLEQ như thế nào?

Như đã đề cập ở phần đầu, chương trình cơ sở hiện tại của KIM Uno mô phỏng Máy tính Tập hợp một lệnh (OISC) và cung cấp lệnh subleq để thực hiện tính toán.

Lệnh subleq là viết tắt của hàm trừ và rẽ nhánh nếu nhỏ hơn hoặc bằng không. Trong mã giả, mã này trông giống như sau:

subleq A B C mem [B] = mem [B] - mem [A]; if (mem [B] <= 0) goto C;

Vì KIM Uno mô phỏng một máy 8 bit, tất cả các đối số A, B và C là các giá trị 8 bit và do đó nó có thể giải quyết tổng bộ nhớ chính là 256 byte. Rõ ràng điều này có thể được mở rộng, bằng cách tạo các giá trị A, B và C nhiều byte. Nhưng bây giờ chúng ta hãy giữ nó đơn giản.

KIM Uno cũng có "thiết bị ngoại vi": màn hình và bàn phím. Nó sử dụng kiến trúc ánh xạ bộ nhớ để giao tiếp các thiết bị ngoại vi đó, mặc dù bản đồ bộ nhớ rất đơn giản:

  • 0x00 = thanh ghi Z (không) và nên được giữ bằng không.
  • 0x01 - 0x06 = sáu byte đại diện cho giá trị của mọi phân đoạn hiển thị (từ phải sang trái). Giá trị 0xf - xem mã nguồn (main.c) để biết thêm chi tiết.
  • 0x07, 0x08, 0x09 = ba byte trong đó mỗi byte đại diện cho hai hiển thị bảy đoạn (từ phải sang trái). Vị trí bộ nhớ này cho phép hiển thị kết quả một cách đơn giản mà không cần chia nhỏ kết quả thành hai ngòi để đặt nó vào các vị trí bộ nhớ một chữ số 0x01 - 0x06.
  • 0x0a + = Một chương trình bắt đầu ở 0x0a. Hiện tại phím "Go" thực thi từ 0x0a đã được sửa.

Với thông tin này bây giờ người ta có thể viết một chương trình trong trình hợp dịch và nhập các lệnh vào bộ nhớ và sau đó thực thi nó. Vì chỉ có một lệnh nên chỉ các đối số (A, B và C) được nhập. Vì vậy, sau ba vị trí bộ nhớ, các đối số lệnh tiếp theo bắt đầu và cứ tiếp tục như vậy.

Đính kèm với bước này, bạn có thể tìm thấy tệp "fibonacci.s" và cả hình ảnh của chương trình viết tay là một ví dụ về triển khai Fibonacci. Nhưng chờ đã: có ba hướng dẫn được sử dụng - cụ thể là ADD, MOV và HLT - không phải là yêu cầu bắt buộc. "Thỏa thuận là gì? Không phải nói chỉ có một chỉ thị sao, subleq?" bạn đang hỏi? Nó rất dễ dàng: với subleq, người ta có thể bắt chước những hướng dẫn đó rất dễ dàng:

MOV a, b - sao chép dữ liệu tại vị trí a đến b có thể bao gồm:

  1. subleq b, b, 2 (hướng dẫn tiếp theo)
  2. subleq a, Z, 3 (hướng dẫn tiếp theo)
  3. subleq Z, b, 4 (hướng dẫn tiếp theo)
  4. subleq Z, Z, ví dụ: 5 (hướng dẫn tiếp theo)

Sử dụng tính năng trừ của subleq, thực hiện mem - mem [a] và ghi đè mem bằng kết quả, giá trị được sao chép bằng thanh ghi zero. Và "subleq Z, Z,…" chỉ cần đặt lại thanh ghi 0 về 0, bất kể giá trị của Z là bao nhiêu.

THÊM a, b - cộng các giá trị a + b và lưu trữ tổng trong b có thể bao gồm:

  1. subleq a, Z, 2 (hướng dẫn tiếp theo)
  2. subleq Z, b, 3 (hướng dẫn tiếp theo)
  3. subleq Z, Z, ví dụ: 4 (hướng dẫn tiếp theo)

Hướng dẫn này chỉ đơn giản tính toán mem - (- mem [a]) là mem + mem [a] bằng cách sử dụng tính năng trừ.

HLT - tạm dừng CPU và kết thúc quá trình thực thi:

Theo định nghĩa, trình giả lập biết rằng CPU muốn kết thúc nếu nó nhảy đến 0xff (hoặc -1 nếu được hát). Vì vậy, một đơn giản

subleq Z, Z, -1

thực hiện công việc và chỉ ra cho trình giả lập rằng nó sẽ kết thúc mô phỏng.

Sử dụng ba hướng dẫn đơn giản này, thuật toán Fibonacci có thể được triển khai và hoạt động tốt. Điều này là do OISC có thể tính toán mọi thứ mà một máy tính "thực" có thể tính toán chỉ với lệnh subleq. Nhưng tất nhiên, có nhiều sự đánh đổi phải thực hiện - như độ dài và tốc độ mã. Nhưng dù sao thì đó cũng là một cách tuyệt vời để học và thử nghiệm với lập trình phần mềm và máy tính cấp thấp.

Đi kèm với bước này, bạn cũng có thể tìm thấy kho lưu trữ zip "kim_uno_tools.zip". Nó chứa một số trình lắp ráp và mô phỏng cơ bản cho KIM Uno. Chúng được viết bằng NodeJS - hãy đảm bảo rằng bạn đã cài đặt nó.

Lắp ráp các chương trình

Nếu bạn xem "fibonacci / fibonacci.s", bạn sẽ thấy rằng nó là mã nguồn cho việc triển khai fibonacci đã thảo luận. Để lắp ráp nó và tạo một chương trình từ nó, để KIM Uno có thể chạy, bạn nhập lệnh sau (trong thư mục gốc của kho lưu trữ "kim_uno_tools.zip" được giải nén):

node assembly.js fibonacci / fibonacci.s

và nó sẽ in lỗi nếu bạn làm sai hoặc làm tràn chương trình kết quả. Để lưu nó, bạn có thể sao chép đầu ra và lưu nó vào một tệp hoặc chỉ cần chạy lệnh sau:

node assembly.js fibonacci / fibonacci.s> yourfile.h

Đầu ra được định dạng theo cách có thể được đưa trực tiếp vào phần sụn KIM Uno dưới dạng tệp tiêu đề C, nhưng trình mô phỏng cũng có thể sử dụng nó để mô phỏng. Chỉ cần nhập:

node sim.js yourfile.h

Và bạn sẽ được hiển thị với kết quả mô phỏng và kết quả mong đợi từ KIM Uno trên màn hình.

Đây là một giới thiệu rất ngắn gọn về công cụ này; Tôi khuyên bạn nên chơi với chúng và xem chúng hoạt động như thế nào. Bằng cách này, bạn có được kiến thức sâu và tìm hiểu các nguyên tắc hoạt động đằng sau CPU, hướng dẫn, trình lắp ráp và trình giả lập;-)

Bước 13: Outlook

Quan điểm
Quan điểm
Quan điểm
Quan điểm
Quan điểm
Quan điểm

Xin chúc mừng

Nếu bạn đọc điều này, bạn có thể đã xem qua toàn bộ hướng dẫn này và xây dựng KIM Uno của riêng bạn. Điều này thực sự tốt đẹp.

Nhưng cuộc hành trình không kết thúc ở đây - có vô số tùy chọn để bạn có thể sửa đổi KIM Uno và tùy chỉnh nó theo nhu cầu và ý thích của bạn.

Ví dụ: KIM Uno có thể được trang bị trình giả lập CPU cổ điển "thực" có thể mô phỏng MOS 6502 nổi tiếng hoặc Intel 8085, 8086 hoặc 8088. Sau đó, nó sẽ đi đúng hướng với tầm nhìn ban đầu của tôi, trước khi tôi tìm hiểu về OISC.

Nhưng có thể có những cách sử dụng khác, vì thiết kế phần cứng khá chung chung. KIM Uno có thể được sử dụng làm…

  • … Một bộ điều khiển từ xa, ví dụ: cho máy CNC hoặc các thiết bị khác. Có thể có dây hoặc được trang bị một diode IR hoặc bất kỳ máy gửi không dây nào khác
  • … Một máy tính bỏ túi (hệ thập lục phân). Phần sụn có thể được điều chỉnh rất dễ dàng và thiết kế bo mạch không cần phải thay đổi nhiều. Có thể màn hình lụa có thể được điều chỉnh với các phép toán và khoảng cách giữa các phân đoạn có thể được xóa bỏ. Ngoài điều này, nó đã sẵn sàng cho sự chuyển đổi này

Tôi hy vọng bạn có nhiều niềm vui khi theo dõi và hy vọng xây dựng KIM Uno như tôi đã thiết kế và lập kế hoạch. Và nếu bạn mở rộng hoặc sửa đổi nó - vui lòng cho tôi biết. Chúc mừng!

Cuộc thi PCB
Cuộc thi PCB
Cuộc thi PCB
Cuộc thi PCB

Á quân trong Cuộc thi PCB

Đề xuất: