Mục lục:

Farmer, Fox, Goose, Grain Puzzle: 6 bước
Farmer, Fox, Goose, Grain Puzzle: 6 bước

Video: Farmer, Fox, Goose, Grain Puzzle: 6 bước

Video: Farmer, Fox, Goose, Grain Puzzle: 6 bước
Video: Part 2 - Walden Audiobook by Henry David Thoreau (Chs 02-04) 2024, Tháng bảy
Anonim
Farmer, Fox, Goose, Grain Puzzle
Farmer, Fox, Goose, Grain Puzzle

Khi tôi còn là một đứa trẻ, tôi đã chọn một cuốn sách của cha tôi, tên là The Scientific American Book Of Projects For The Amateur Scientist. Tôi vẫn còn giữ cuốn sách, và tôi hiểu rằng đó là một cuốn sách khó ra đời vào những ngày này. Nhưng bạn có thể đọc nó trực tuyến ngay bây giờ. Cuốn sách này đã giới thiệu cho tôi rất nhiều điều nhưng chương khiến tôi hứng thú là chương về Máy tính toán học. Đó rất có thể là điều khiến tôi bắt đầu sự nghiệp phát triển phần mềm cuối cùng của mình.

Trong chương này là những mô tả về máy giải câu đố sử dụng các mạch thời đó… có trước các mạch tích hợp hiện đại hoặc thậm chí là các bóng bán dẫn (sử dụng rơ le). Nhưng một số khái niệm tương tự đã có ở đó, đó là các thiết bị logic về cơ bản giống với thứ mà các máy tính hiện đại vẫn sử dụng ngày nay.

Ngày nay, bạn có thể dễ dàng và rẻ tiền để có được toàn bộ hệ thống máy tính chỉ với vài đô la và chỉ cần lập trình câu đố hoặc trò chơi của bạn. Nhưng bạn cũng có thể làm nhiều thứ ở cấp độ thấp hơn, sử dụng các cổng logic mà máy tính được tạo ra, để tạo phần cứng tùy chỉnh cho câu đố của bạn. Mặc dù điều này có thể không thực tế hoặc lý tưởng, nhưng nó cho phép bạn tìm hiểu cách máy tính thực sự hoạt động. Nó cũng là một loại thú vị.

Bước 1: Vật liệu cần thiết

Bạn có thể xây dựng điều này hoàn toàn trong Tinkercad Circuits và mô phỏng hoạt động thực tế của câu đố.

Nếu bạn muốn xây dựng nó về mặt vật lý, đây là những gì bạn sẽ cần:

4 công tắc chuyển đổi hoặc trượt.

1 nút ấn (tạm thời)

2 bảng bánh mì nhỏ.

9 đèn LED.

9 điện trở 1K.

1 chip chốt 7475 quad

2 7408 cổng quad AND

1 cổng 7432 quad OR

1 bộ pin chứa 3 ô AA hoặc AAA.

bộ dây nhảy.

Đối với các chip dòng 74xx, bạn có thể sử dụng bất kỳ biến thể nào trong số này. IE, các phiên bản 74xx là TTL gốc, nhưng bạn cũng có thể sử dụng các phiên bản 74LSxx (công suất thấp hơn) hoặc 74HCxx (thậm chí các phiên bản cmos công suất thấp hơn), v.v. Chỉ cần nhớ rằng các phiên bản 74xx và 74LSxx rất dễ xử lý, nhưng tất cả các biến thể khác là tĩnh điện nhạy cảm.

Bước 2: Logic Boolean

Boolean Logic
Boolean Logic
Boolean Logic
Boolean Logic

Logic Boolean nghe có vẻ đáng sợ nhưng thực ra nó khá đơn giản. Boolean chỉ có nghĩa là bạn chỉ xử lý các số 1 và 0, hoặc Đúng và Sai. Hoặc trong điện tử, + và -. Phần logic của nó chỉ đơn giản là "nếu cái này thì cái kia". Các phép toán logic cơ bản nhất chỉ đơn giản là ba điều sau: VÀ, HOẶC và KHÔNG. Chúng được gọi là các cổng, vì về cơ bản chúng hoạt động như các cổng theo nghĩa đen cho dòng điện chạy qua một mạch điện.

Cổng AND hoạt động như sau. Nó có hai đầu vào và một đầu ra. Hai đầu vào có thể là 1 hoặc 0 và đầu ra là 1 hoặc 0. Đối với cổng AND, nếu cả hai đầu vào là 1, thì đầu ra là 1. Ngược lại, nó sẽ xuất ra 0.

Đối với cổng OR, nó cũng có hai đầu vào và một đầu ra. Nếu một hoặc đầu vào khác là 1, thì đầu ra là 1.

Cổng cuối cùng là cổng KHÔNG, và nó chỉ có một đầu vào và một đầu ra. Nếu đầu vào là 1, thì đầu ra là 0. Nếu đầu vào là 0, đầu ra là 1.

Cổng OR và AND cũng có thể có nhiều hơn 2 đầu vào. Để đơn giản hóa, chúng có thể được hiển thị với 2 hoặc nhiều dòng đi vào một cổng, nhưng thực sự, 3 cổng đầu vào chỉ là hai 2 cổng đầu vào với một cổng đưa vào cổng kia.

Bây giờ bạn biết mọi thứ bạn cần biết để xây dựng một máy tính. Ngay cả những máy tính hiện đại nhất cũng chỉ sử dụng ba thứ này, mặc dù chúng có thể sử dụng hàng triệu chiếc.

Vì vậy, chúng ta hãy xây dựng một câu đố.

Bước 3: Farmer, Fox, Goose and Grain Puzzle

Farmer, Fox, Goose and Grain Puzzle
Farmer, Fox, Goose and Grain Puzzle

Điều đầu tiên trong cuốn sách là mạch logic để tạo ra câu đố kinh điển về Người nông dân, Con cáo, Con ngỗng và Hạt thóc. Câu đố này đã tồn tại hàng trăm năm dưới nhiều hình thức khác nhau. Nó là một câu đố logic cơ bản chỉ với một vài quy tắc. Câu đố như sau.

Một người nông dân có một con cáo, một con ngỗng và một ít ngũ cốc. Anh ta đến một con sông mà anh ta phải băng qua, và có một chiếc thuyền, nhưng nó chỉ có thể giữ anh ta và một thứ khác cùng một lúc.

Anh ta không thể để cáo với ngỗng, vì cáo sẽ ăn thịt ngỗng. Đó là những gì loài cáo làm, đó chỉ là bản chất của chúng.

Nó không thể để ngỗng với ngũ cốc, vì ngỗng sẽ ăn nó.

Làm thế nào anh ta có thể đưa cả ba người họ qua bên kia sông một cách an toàn?

Để tạo ra câu đố này, chúng ta cần một số thứ. Đầu tiên, hãy bắt đầu với bốn công tắc, một công tắc cho mỗi nông dân, cáo, ngỗng và ngũ cốc. Đây là cách chúng ta sẽ thiết lập để lên thuyền.

Thứ hai, chúng ta cần câu đố để nhớ mọi thứ ở đâu từ bước này sang bước khác.

Sau đó, chúng ta cần một nút để cho nó biết khi nào di chuyển thuyền.

Cuối cùng, chúng ta cần một số logic để thực thi các quy tắc.

Bước 4: Bộ nhớ

Kỉ niệm
Kỉ niệm
Kỉ niệm
Kỉ niệm

Để ghi nhớ vị trí của các đối tượng trong câu đố này, chúng ta sẽ sử dụng thứ gì đó cao cấp hơn so với các rơ le được sử dụng trong mạch gốc. Trở lại khi cuốn sách này được viết, không có bóng bán dẫn, nhưng chúng có rơ le. Các rơ le này được nối dây sao cho khi bạn nhấn một nút, chúng sẽ đóng và sau đó vẫn đóng cho đến khi bạn nhấn nút ở phía bên kia.

Hôm nay chúng ta sẽ sử dụng một bộ phận phổ biến và rẻ tiền được gọi là chốt 4 bit. Một 'bit' trong logic máy tính chỉ đề cập đến 1 hoặc 0. Nó giống như một chữ số. Mạch Tích hợp này (hoặc "IC" hoặc "Chip") chứa 4 thành phần logic được gọi là flip flops. Một flip flop chỉ là một vài cổng được cấu hình để khi bạn cho nó 1 hoặc 0 làm đầu vào, nó sẽ xuất ra 1 hoặc 0 và sau đó ở trạng thái 'mắc kẹt'. Do đó tên flip / flop. Nó sẽ lật từ 1 đến 0 hoặc lật từ 0 đến 1 (hay ngược lại?) Và sau đó ở lại đó. Điều này về cơ bản thực hiện tương tự như bốn rơ le trong mạch cũ.

Bạn có thể thực hiện một ván lật đơn giản chỉ với hai cửa, nhưng những cửa trong chốt này có một tính năng bổ sung (yêu cầu thêm một vài cửa). Thay vì ngay lập tức có đầu ra thay đổi với đầu vào thay đổi, nó có một đầu vào khác cho phép hoặc tắt các đầu vào. Thông thường, nó vẫn bị vô hiệu hóa. Điều này cho phép bạn đặt hai trong số các công tắc (người nông dân và một công tắc khác) trước khi nó cố gắng 'gửi' thuyền sang phía bên kia. Mạch của chúng tôi đã thông minh hơn mạch cũ.

Bây giờ chúng tôi có khả năng thiết lập và ghi nhớ vị trí của tất cả các nguyên tắc trong câu đố của chúng tôi.

Đây là mạch của chúng tôi cho đến nay: chốt 4 bit

Bước 5: Logic quy tắc

Quy tắc logic
Quy tắc logic

Để thực thi các quy tắc và chỉ ra khi có vấn đề, chúng tôi sẽ sử dụng một số cổng logic boolean để triển khai các ràng buộc mà chúng tôi cần.

Chúng tôi sẽ cần bốn lần kiểm tra để xác định xem có vấn đề gì không - nếu có bất kỳ vấn đề nào trong số này là đúng, thì hãy thắp sáng tín hiệu cảnh báo.

1. Nếu hạt thóc và con ngỗng ở bên kia sông chứ không phải người nông dân.

2. Nếu cáo và ngỗng ở bên kia sông chứ không phải người nông dân.

3. Nếu người nông dân qua sông mà không có cáo và không có ngỗng ở cùng.

4. Nếu người nông dân qua sông mà không có thóc và không có ngỗng nào ở cùng.

Lưu ý cách mà tôi đã diễn đạt điều này để khớp chính xác với logic chúng ta sẽ sử dụng, đó là các cổng AND với đầu ra bình thường hoặc đầu ra đảo ngược từ chốt, các cổng đảo ngược hoạt động như "không" hoặc "KHÔNG".

Vì bất kỳ giá trị nào trong số chúng có thể là true, gây ra sự cố, chúng đều được cấp vào cổng OR.

Logic đã hoàn thành, bao gồm chốt 4 bit, được hiển thị trong ảnh chụp màn hình. Đây là từ một chương trình có tên là logicy. Chương trình này là tuyệt vời để hiển thị luồng logic khi bạn thao tác với các công tắc, làm nổi bật màu xanh lam các kết nối có giá trị '1'. Tôi đã đính kèm tệp mà bạn có thể tải vào một cách hợp lý.

Bước 6: Nguyên mẫu một mạch thực

Nguyên mẫu một mạch thực
Nguyên mẫu một mạch thực

Bây giờ chúng ta có thể tạo ra một mạch làm việc thực sự. Sử dụng mạch Tinkercad, chúng ta có thể thực hiện điều này bằng cách mô phỏng giao diện thực và chức năng của phần cứng.

Tinkercad đã tích hợp sẵn một chốt 7475 4 bit, vì vậy, phần đó rất dễ dàng. Đối với các cổng, tôi đã chọn sử dụng hai chip với 4 cổng AND mỗi cổng (7408). Để tạo bốn, 3 cổng AND đầu vào, chúng ta sử dụng hai cổng AND với đầu ra của một cổng đi vào 1 đầu vào của đầu vào kia. Điều này để lại 1 đầu vào trên thứ hai và 2 đầu vào trên đầu tiên, tạo ra 3 cổng AND đầu vào. Đối với cổng OR, tôi cũng làm điều tương tự. Một chip bốn cổng OR sử dụng hai cổng OR với các đầu ra đi vào cổng OR thứ ba. Một cổng không được sử dụng.

Chạy mô phỏng trên mạch Tinkercad

Đề xuất: