Làm cách nào để thiết kế một máy trạng thái đồng bộ có đồng hồ cho khóa tổ hợp?


7

Tôi cần giúp đỡ trong việc hoàn thành một nhiệm vụ, tôi bị mắc kẹt trong một vài điều. Vì tôi rất mới với chủ đề này trên các máy hữu hạn.

Tôi đã thử sơ đồ trạng thái, bảng trạng thái, bảng chuyển tiếp, giá trị bản đồ K và bản đồ k (Karnaugh - bản đồ). Tuy nhiên, rất nhiều trong số đó là không đầy đủ, vì tôi không biết làm thế nào để tiếp tục.

Bất kỳ gợi ý hoặc giúp đỡ được đánh giá cao; Tôi không yêu cầu câu trả lời chỉ là hướng dẫn, tôi đã cố gắng cả tuần nay nhưng vẫn không hoàn thành việc này.

Bạn có thể đọc nhiệm vụ của tôi dưới đây. Và trong các bức vẽ của tôi là những câu hỏi được tô màu vàng, cho thấy nơi tôi bị mắc kẹt hoặc nơi tôi gặp khó khăn nhất trong việc tìm ra giải pháp.

Nhiệm vụ: Thiết kế một máy trạng thái đồng bộ có xung nhịp cho khóa tổ hợp có hai đầu vào (X và Y) và một đầu ra (Z).

Đầu vào 'X' được sử dụng để khởi tạo mục nhập chuỗi. Đầu vào 'Y' được sử dụng để nhập chuỗi nhị phân để mở khóa. Đầu ra 'Z' sẽ được bật khi và chỉ khi chuỗi nhị phân được nhập theo đúng thứ tự sau khi khởi tạo và phải duy trì miễn là đầu vào X vẫn ở mức cao.

Khóa tổ hợp này hoạt động như sau. Đầu vào 'X' phải thay đổi từ thấp đến cao trong khoảng thời gian trước đó và sẽ duy trì ở mức cao sau đó (Khởi tạo). Việc nhập chữ số nhị phân đầu tiên phải được thực hiện trước khi bắt đầu chu kỳ đồng hồ tiếp theo và việc nhập các chữ số còn lại được thực hiện trên các đồng hồ tiếp theo.

Nếu một chuỗi sai được nhập, nó sẽ yêu cầu khởi tạo lại để bắt đầu nhập đúng chuỗi. nhập mô tả hình ảnh ở đây

Bảng và bản vẽ của tôi cho nhiệm vụ này:

Biểu đồ trạng thái

Bảng trạng thái và bảng chuyển tiếp

Giá trị bản đồ K

Bản đồ K

CẬP NHẬT!

Biểu đồ trạng thái Bảng trạng thái

Bảng trạng thái Biểu đồ trạng thái


2
Trước khi bạn đi quá xa, lưu ý rằng sơ đồ thời gian hiển thị mã được kích hoạt LSB-đầu tiên trên đầu vào Y. Sơ đồ trạng thái của bạn đang xử lý nó MSB-đầu tiên.
Dave Tweed

5
+1 cho một câu hỏi tuyệt vời. Đây là một ví dụ điển hình về cách các câu hỏi bài tập về nhà nên được hỏi.
Vladimir Cravero

1
Phần 'vui' với việc viết bảng quyết định là bạn có một bảng chuyển tiếp thưa thớt; hầu hết các cạnh có thể có trong biểu đồ là không quan tâm! Tôi đã vui vẻ ném tổng hợp như vậy vào các trình biên dịch tự động cho tất cả các công việc máy trạng thái gần đây của tôi. . .
dùng2943160

@ user2943160: Có, nhưng điều đó bỏ lỡ điểm của câu hỏi, đó là phát triển sự hiểu biết chi tiết về những gì công cụ tổng hợp thực sự đang làm cho bạn.
Dave Tweed

Tôi nghĩ rằng trạng thái khởi tạo là không mong muốn và sai. Khi bạn đã lấy mẫu 'x' ở mức cao, các trạng thái tiếp theo sẽ ngay lập tức lấy mẫu đúng (hoặc không) 'y'. Do trạng thái khởi tạo, bạn đang thiếu giá trị 'y' đầu tiên.
Claudio Avi Chami

Câu trả lời:


1

nhập mô tả hình ảnh ở đây Đây là một phiên bản một phần của bảng bạn cần thực hiện. Có tổng cộng 64 hàng. Bạn xác định Q3 * (Q3 +) và những người khác bằng cách suy nghĩ trạng thái tiếp theo là gì nếu tôi ở trạng thái hiện tại và nhìn vào X, Y.

Lấy ví dụ dòng 2: Trạng thái hiện tại 0000 (RESET) và X = 1, Y = 0 điều này có nghĩa là trạng thái tiếp theo là 0001 (UNLOCK). Ngoài ra Z là 0 khi tôi ở trạng thái 0000.

Sau đó, bạn nhận được logic đầu ra cho Q0 * bằng cách lấy tất cả 1 trong cột Q0 * của bạn. Ví dụ: bây giờ tôi có (\ có nghĩa là "không")

Q0 * = \ Q3 \ Q2 \ Q1 \ Q0X \ Y + \ Q3 \ Q2 \ Q1 \ Q0XY + \ Q3 \ Q2 \ Q1Q0 \ X \ Y + vv ...

Sau đó, bạn có thể đơn giản hóa biểu thức này. Bạn sẽ không thực sự có thể thực hiện các bảng Karnaugh vì có 4 trạng thái bit và 2 mục = 6 chiều. Tôi đề nghị bạn sử dụng phương pháp cannonic cho logic như tôi đã giải thích trước đây.

Bạn có thể kiểm tra ở đây để biết thêm thông tin: https://en.wikipedia.org/wiki/Canonical_n normal_form

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.