Mục lục:

Mô hình của một công tắc tắt đa năng: 10 bước
Mô hình của một công tắc tắt đa năng: 10 bước

Video: Mô hình của một công tắc tắt đa năng: 10 bước

Video: Mô hình của một công tắc tắt đa năng: 10 bước
Video: Xé toạc không gian bằng MẮT của bạn | khanhtrungsi 2024, Tháng bảy
Anonim
Mô hình của một công tắc tắt đa năng
Mô hình của một công tắc tắt đa năng

Bạn có mệt mỏi với việc kiểm tra xem tất cả các đèn trong nhà của bạn đã tắt trước khi bạn đi ngủ? Bạn có ước mình có thể tắt mọi ánh sáng cùng một lúc mà không gặp bất kỳ phiền phức nào không? Để tiết kiệm điện năng và thời gian, chúng tôi quyết định tạo ra một hệ thống về lý thuyết có thể đóng cửa toàn bộ ngôi nhà cùng một lúc.

Chúng tôi đã mô hình hóa một bằng chứng về khái niệm này bằng cách sử dụng một vài đèn LED và một bảng mạch đế 3, đồng thời tạo ra một thiết kế có thể tắt tất cả các đèn LED chỉ bằng một nút nhấn. Mô hình này cũng có thể được áp dụng cho hệ thống chiếu sáng gia đình thực tế, mặc dù nó sẽ yêu cầu hệ thống dây điện và sửa đổi phức tạp hơn đối với các tệp VHDL nhất định.

Bước 1: Nhập các tệp VHDL đã cho

Để mô hình của chúng tôi hoạt động chính xác, bạn sẽ cần tải xuống phần mềm cung cấp hướng dẫn cho bo mạch Basys 3.

Trước tiên, bạn sẽ cần tải xuống một công cụ tổng hợp để triển khai các tệp vhdl vào phần cứng. Nếu bạn muốn chắc chắn rằng tất cả mã sẽ sao chép hoàn toàn thiết kế của chúng tôi mà không cần bất kỳ sửa đổi nào, chúng tôi khuyên bạn nên sử dụng Vivado 2016.2. Sau khi cài đặt Vivado, bạn có thể tạo một dự án và tải xuống các tệp nguồn của chúng tôi. Thêm chúng làm nguồn cho dự án của bạn, đừng quên thêm tệp ràng buộc nữa!

Tiếp theo, chúng tôi sẽ giải thích chức năng của từng tệp nguồn. Bỏ qua các bước từ 2 đến 6 nếu bạn chỉ muốn xem cấu trúc vật lý của thiết bị.

Bước 2: Phân tích Mô-đun hàng đầu VHDL

Phân tích Mô-đun hàng đầu VHDL
Phân tích Mô-đun hàng đầu VHDL
Phân tích của Mô-đun hàng đầu VHDL
Phân tích của Mô-đun hàng đầu VHDL

Mô-đun trên cùng của dự án là thứ kết nối tất cả các mô-đun thành phần riêng lẻ với phần cứng được sử dụng. Như bạn có thể thấy, chúng tôi có các mô-đun killSwitch và buzzerControl được định nghĩa là các thành phần ở trên cùng.

Phần dưới chỉ định cách các mô-đun này được kết nối với nhau. Chúng tôi đã kết nối bốn đèn LED với bảng và liên kết chúng với các mô-đun killSwitch từ dev0 đến dev3. Chúng tôi có bốn mô-đun killSwitch được xác định vì chúng tôi cần một mô-đun để quản lý trạng thái của mỗi đèn LED được kết nối. Mỗi mô-đun này sử dụng đồng hồ và tín hiệu nút mà chúng tôi đã tạo trong định nghĩa mô-đun trên cùng cũng như các tín hiệu thiết bị chuyển đổi đầu vào và đầu ra tương ứng của chúng.

Mô-đun điều khiển bộ rung ở phía dưới sẽ kích hoạt bộ rung khi nhấn nút tắt đa năng. Như bạn có thể thấy, mô-đun điều khiển bộ rung được chuyển tín hiệu đồng hồ và nút làm đầu vào. Nó cũng được thông qua chân đầu ra của bộ rung vật lý để điều khiển nó cho phù hợp.

Bước 3: Sự cố của Mô-đun chuyển đổi VHDL Kill

Sự cố của mô-đun công tắc tiêu diệt VHDL
Sự cố của mô-đun công tắc tiêu diệt VHDL
Sự cố của mô-đun công tắc tiêu diệt VHDL
Sự cố của mô-đun công tắc tiêu diệt VHDL

Công tắc Kill là nút tắt phổ biến và mô-đun chủ yếu quan tâm đến việc kết nối nó với các phần tử mạch khác để khi nó được nhấn, tất cả các đèn sẽ tắt.

Trong khi mô-đun trên cùng xử lý việc kết nối phần cứng vật lý với phần mềm, thì mô-đun killSwitch xử lý logic chính của từng thiết bị. Mô-đun nhận đầu vào cho tín hiệu đồng hồ, nút tắt đa năng và công tắc bật tắt thiết bị. Đổi lại, nó kiểm soát trạng thái của chân thiết bị mà nó được kết nối.

Trong phần kiến trúc của mã, chúng ta thấy rằng nó có sự phụ thuộc vào mô-đun dFlipFlop để lưu trữ bộ nhớ. Bạn cũng có thể thấy rằng chúng tôi đã khai báo bốn tín hiệu sẽ được sử dụng để kết nối flip flop cũng như thực hiện các câu lệnh logic của chúng tôi. Trong phần hành vi của mã, chúng tôi đã tạo một phiên bản của mô-đun dFlipFlop và gán các tín hiệu I / O của chúng tôi cho các cổng.

Từ đây, phần logic chính của chúng ta nằm ở các giá trị tín hiệu cho invertState và isDevOn. Cơ sở logic của chúng tôi đối với thiết bị như sau: "Bất kỳ lúc nào công tắc được ném, đèn sẽ đảo ngược trạng thái bật / tắt. Bất kỳ lúc nào nhấn nút và đèn LED hiện đang bật, đèn LED sẽ đảo trạng thái thành tắt. " Từ hai câu lệnh này, chúng ta có thể ngoại suy rằng trạng thái của đèn LED phải là XOR của công tắc và phần tử bộ nhớ của chúng ta. Điều này có thể được thực hiện trong tín hiệu isDevOn. Đèn LED điều kiện cho phần tử bộ nhớ được xử lý bởi tín hiệu invertState của chúng tôi. Nếu đèn LED bật và nút được nhấn, phần tử bộ nhớ của chúng tôi sẽ cập nhật và đảo ngược trạng thái của nó. Điều này sau đó cũng đảo ngược trạng thái của đèn LED.

Bước 4: Phân tích Mô-đun VHDL Flip Flop

Sự cố của Mô-đun VHDL Flip Flop
Sự cố của Mô-đun VHDL Flip Flop

Một vấn đề với thiết kế của chúng tôi là thực tế là sau khi sử dụng công tắc tắt, các đèn đã bật trước đó có thể cần phải được lật hai lần để trở về vị trí bật. Điều này sẽ gây khá nhiều bất tiện cho mọi người theo thời gian. Chúng tôi đã cố gắng tránh được sự bất tiện này bằng cách đưa "Flip Flop", một phần tử mạch có khả năng lưu trữ thông tin, vào thiết kế của chúng tôi. Bây giờ, hệ thống ghi nhớ liệu công tắc đèn trước đó có bật hay không để nếu bật lại, công tắc sẽ bật bất kể vị trí ban đầu của nó.

Mã VHDL sử dụng các câu lệnh if và else để tạo Flip Flop như một thành phần trong thiết kế mạch của chúng tôi. Nó đảm bảo rằng khi tín hiệu đồng hồ chuyển từ trạng thái thấp sang trạng thái cao, khi bóng đèn bật và khi công tắc tắt được đẩy, đầu ra flip flops sẽ ghi đè đầu vào của nó. Khi đầu vào được ghi đè, flip flop sẽ được đảo ngược.

Bước 5: Phân tích Mô-đun VHDL Piezo Buzzer

Sự cố của Mô-đun VHDL Piezo Buzzer
Sự cố của Mô-đun VHDL Piezo Buzzer
Sự cố của Mô-đun VHDL Piezo Buzzer
Sự cố của Mô-đun VHDL Piezo Buzzer

Tệp này hơi thừa đối với thiết kế phần cứng, nhưng nó rất cần thiết để làm cho mô-đun hàng đầu và các tệp ràng buộc chạy trơn tru. Nếu bạn chọn không sử dụng bộ rung Piezo, hãy tải xuống tệp này, nhưng không đính kèm bộ rung vào bảng Basys 3.

Bộ rung Piezo, khi nhấn nút tắt, sẽ phát hai âm thanh nốt nhạc để cung cấp cho người dùng phản hồi thính giác rằng nút đã được nhấn. Chúng tôi đã thực hiện điều này theo hành vi trong VHDL thông qua một loạt các câu lệnh if trong một cấu trúc quy trình. Chúng tôi bắt đầu bằng cách tạo một giá trị số nguyên để theo dõi số lượng thay đổi đồng hồ đã xảy ra. Khi quá trình bắt đầu, chương trình dành nửa giây đầu tiên (0 đến 50 triệu tích tắc đồng hồ) để xuất ra một nốt A ở 440 hertz. Điều này được thực hiện bằng cách đảo ngược tín hiệu bộ rung piezo sau mỗi bội số chẵn trong số 227272 tích tắc đồng hồ bằng chức năng mô-đun. Con số này là kết quả của việc chia tín hiệu xung nhịp của bo mạch (100 MHz) cho tần số mong muốn (400 Hz). Trong nửa giây sau (50 đến 100 triệu tích tắc đồng hồ), bảng này xuất ra một nốt F ở 349,2 hertz thông qua phương pháp tương tự như trước đây. Sau một giây, chương trình không tăng thêm biến xung nhịp nữa và ngừng xuất bất kỳ thứ gì từ bộ rung piezo. Nhấn nút tắt đa năng một lần nữa sẽ đặt lại số này về 0, bắt đầu lại chu kỳ tiếng ồn.

Bước 6: Phân tích tệp ràng buộc VHDL

Tệp ràng buộc cho Vivado biết những thiết bị nào trên bo mạch Basys 3 mà chúng tôi đang sử dụng. Nó cũng cung cấp cho Vivado những tên mà chúng tôi đã đặt cho các thiết bị trong mã của chúng tôi. Vivado cần thông tin này để Vivado biết cách kết nối các phần tử logic của chúng tôi với phần cứng vật lý. Tệp ràng buộc bao gồm một lượng lớn mã được chú thích (không sử dụng). Những dòng mã này tham chiếu đến các thiết bị trên bảng mà chúng tôi không sử dụng.

Các thiết bị chúng tôi đang sử dụng bao gồm bốn công tắc đầu vào có nhãn V17, V16, W16 và W1 trên bảng. Chúng tôi cũng đang sử dụng nút tắt chung, có nhãn U18. Các chân đầu ra cho bốn đèn LED được kết nối của chúng tôi là JB4, JB10, JC4 và JC10. Đối với bộ rung piezzo của chúng tôi, chúng tôi đang sử dụng chân đầu ra JA9.

Như chúng tôi đã nêu trong phần phân tích mô-đun trên cùng, nếu bạn muốn thêm đèn LED bổ sung hoặc các thiết bị khác vào bảng, bạn cần tăng phạm vi của tín hiệu sw và dev, thêm nhiều mô-đun killSwitch và kết nối chúng với nhau. Sau đó, bạn cần liên kết các tên biến đó với phần cứng thiết bị thông qua tệp ràng buộc. Điều này có thể được thực hiện bằng cách bỏ ghi chú (bật lại) các dòng mã được liên kết với các chân mà bạn muốn sử dụng, sau đó thêm tên của biến được liên kết của nó trong mô-đun trên cùng. Cú pháp thích hợp cho điều này có thể được sao chép từ các thiết bị chúng tôi đang sử dụng. Để tìm ra tên của các chân cắm bạn muốn sử dụng trên bảng, hãy tham khảo hướng dẫn tham khảo Baasys 3 tại đây.

Bước 7: Xây dựng Basys 3

Xây dựng Basys 3
Xây dựng Basys 3
Xây dựng Basys 3
Xây dựng Basys 3

Bạn sẽ cần cắm đèn LED của mình vào đúng cổng I / O của Basys 3. Hãy làm theo các hình ảnh được cung cấp để xác định đâu là cổng chính xác, bởi vì nếu bạn cắm đèn LED vào cổng sai, đèn LED sẽ không sáng. Nếu bạn đã chọn gắn bộ rung piezo, bạn cũng sẽ cần kết nối bộ rung đó với đúng cổng I / O.

Khi bo mạch đã sẵn sàng, hãy cắm nó vào máy tính của bạn qua cáp USB.

Bước 8: Triển khai tệp VHDL vào Basys 3

Triển khai tệp VHDL vào Basys 3
Triển khai tệp VHDL vào Basys 3
Triển khai tệp VHDL vào Basys 3
Triển khai tệp VHDL vào Basys 3

Bây giờ bảng của bạn đã sẵn sàng và mã của bạn đã hoàn thành, cuối cùng bạn có thể ghép mô hình lại với nhau.

Khi bạn đã thiết lập xong dự án của mình trong Vivado, bạn phải nhấp vào nút "Tạo dòng bit" để biên dịch mã trước khi tải lên bảng. Nếu bạn nhận được thông báo lỗi vào lúc này, bạn phải kiểm tra lại xem mã của bạn có khớp chính xác với mã của chúng tôi không. Khi tôi nói chính xác, tôi muốn nói đến ngay cả dấu chấm phẩy hoặc các loại dấu ngoặc đơn đang được sử dụng. Khi dòng bit của bạn đã được viết thành công, hãy chuyển đến trình quản lý phần cứng trong Vivado và nhấp vào nút "Open Target", sau đó nhấp vào "Program Device" ngay sau đó. Bảng Basys 3 của bạn bây giờ sẽ hoạt động đầy đủ.

Bước 9: Sử dụng Bảng Basys 3

Sử dụng bảng Basys 3
Sử dụng bảng Basys 3

Bây giờ Ban Basys 3 đã hoạt động và đã được lập trình để đại diện cho mô hình của chúng tôi, bạn phải biết cách sử dụng nó.

Mỗi công tắc trong số bốn công tắc ở xa nhất bên phải sẽ điều khiển một trong các đèn LED, nhấp nháy chúng sẽ làm cho đèn LED bật hoặc tắt. Nếu đèn LED không kích hoạt, hãy kiểm tra xem bạn đã cắm đúng cổng I / O chưa và đèn LED của bạn đã hoạt động ngay từ đầu chưa.

Khi bạn muốn tắt tất cả các đèn LED cùng một lúc, bạn phải nhấn nút trung tâm trong bộ năm nút hiển thị ở trên.

Bước 10: Hiển thị

Mô hình đóng vai trò là một sự mới lạ nhỏ gọn mà bạn có thể thể hiện trước mặt bạn bè và gia đình của mình. Về mặt lý thuyết, nó cũng có thể được sử dụng để thực hiện công tắc tắt chung vào hệ thống điện gia đình của bạn, nếu bạn thay thế đèn LED bằng dây dẫn đến đèn của bạn. Mặc dù có thể xảy ra, nhưng chúng tôi vẫn phải khuyên bạn không nên làm như vậy. Có khả năng gây hại nghiêm trọng cho bản thân hoặc ngôi nhà của bạn nếu bạn cố gắng quấn lại mà không có sự trợ giúp của thợ điện.

Đề xuất: