Thiết kế logic rời rạc


11

Tôi đã được giao nhiệm vụ xây dựng một thiết bị báo động đơn giản. Nó chỉ cần đo một vài đầu vào và đầu ra sẽ đáp ứng tương ứng (để đặt nó rất đơn giản!). Đối với tôi, dường như việc sử dụng một vài cổng logic rời rạc sẽ hoàn thành công việc, nhưng một đồng nghiệp (người đang làm việc với tôi) đã quyết định rằng chúng ta nên sử dụng logic lập trình thay thế. Trường hợp của anh ấy đã thắng, bởi vì thứ nhất, anh ấy cao cấp hơn tôi, và thứ hai, lập luận chính của anh ấy là các thiết bị lập trình là tương lai và chúng tôi muốn tạo ra các sản phẩm bằng chứng trong tương lai.

Câu hỏi của tôi là nếu bạn có một thiết kế có thể dễ dàng thực hiện bằng một vài cổng logic rời rạc, nó có đáng để thiết kế với logic rời rạc nữa không? Có bất kỳ lợi thế để sử dụng chúng trên lập trình? Hay là nó sẽ dần bị loại bỏ hoàn toàn bởi logic lập trình? Để rõ ràng, tôi không muốn câu trả lời của 'Tôi tin rằng đây là trường hợp' hoặc 'cá nhân tôi nghĩ vậy nhưng ...' Tôi muốn biết liệu có bất kỳ lợi thế thực tế nào khi thiết kế với rời rạc có thể lập trình được không nó có giá trị thiết kế với họ những ngày này trong các sản phẩm điện tử tiêu dùng?


16
Điều này nghe có vẻ như là một câu hỏi từ thập niên 90 ...
PlasmaHH

9
Cổng rời rạc có một lợi thế lớn. Không có công cụ.
jonk

Không có toolchain? Ý bạn là gì @jonk
Tò mò

@PlasmaHH vì vậy về cơ bản bạn đang nói rằng không có lợi thế để thiết kế rời rạc trong tương lai?
Tò mò

11
Ý nghĩa của @jonk là, khi sử dụng vi điều khiển, bạn cần phần mềm để tạo chương trình cho vi điều khiển, như IDE (giao diện người dùng đồ họa hoặc văn bản) và kết hợp trình biên dịch / liên kết / công cụ khác dành cho vi điều khiển bạn sử dụng, được gọi là chuỗi công cụ.
Michel Keijzers

Câu trả lời:


15

Thiết kế logic rời rạc sẽ không được loại bỏ hoàn toàn. Sẽ luôn có những ứng dụng sử dụng IC logic rời rạc. Như đã được chỉ ra, tốc độ là một lợi thế lớn, mặc dù trong rất nhiều ứng dụng, sự khác biệt về tốc độ chỉ là không quan trọng.

Khi đến giai đoạn thiết kế, nếu bạn thiết kế một mạch chỉ cần thực hiện 2 hoặc 3 chức năng logic đơn giản tại các điểm khác nhau trong mạch, sẽ tốt hơn khi sử dụng các cổng rời rạc, chỉ để tiết kiệm thời gian thiết kế mà còn phải viết chương trình cũng vậy.

Đối với các hệ thống cần thực hiện các chức năng logic phức tạp hơn, sẽ thật ngớ ngẩn khi dành toàn bộ thời gian để tạo ra một bảng chân lý, sau đó tìm ra cổng logic nào sẽ đi đâu khi bạn có thể viết một chương trình nhỏ. Thông thường, càng nhiều đầu vào có nghĩa là càng cần nhiều cổng và thời gian thiết kế rời rạc càng lâu.

Nơi mà logic rời rạc thực sự có lợi thế mặc dù là trong học tập. Khi bạn lần đầu tiên tìm hiểu về thiết kế logic và cách các cổng hoạt động, v.v., đó là nơi bắt tay với các cổng logic thực tế và thiết kế các chức năng khác nhau với các phần rời rạc là tuyệt vời. Luôn luôn là một ý tưởng tốt để có được sự hiểu biết về các nguyên tắc cơ bản. Vì vậy, vì điều đó, logic rời rạc sẽ luôn có một vị trí trong thế giới này. Còn đối với hàng điện tử tiêu dùng? Tương lai chắc chắn là lập trình.


Câu trả lời đơn giản, điểm tốt và câu trả lời tất cả các câu hỏi! Cảm ơn!
Tò mò

Là lập trình viên với nền tảng điện tử, tôi muốn nói rằng nếu bạn không làm việc với bảng chân lý của mình, bạn sẽ dành nhiều thời gian để gỡ lỗi chương trình của mình vì bạn sẽ cần thời gian để thiết lập bảng chân lý của mình. Bảng chân lý của bạn sẽ là tài liệu tốt đẹp cho chương trình của bạn.
chthon

Vâng, tôi đồng ý, các bảng chân lý luôn hữu ích để có, tôi sẽ chỉnh sửa câu trả lời để làm cho nó phù hợp hơn với kịch bản này
MCG

1
Thiết kế cuối cùng tôi thực hiện bằng logic rời rạc có yêu cầu về thời gian là "càng thấp càng tốt" bằng cách sử dụng logic 5V và yêu cầu chương trình tương đối đơn giản. Tôi có thể chi rất nhiều tiền cho một chiếc GPU sáng bóng đẹp đẽ hoặc chỉ làm theo cách "trường học cũ". Các chip thông số kỹ thuật quân sự trải qua sự thay đổi điện áp đầy đủ trong picoseconds, sẽ sống sót sau ngày tận thế hạt nhân cùng với những con gián, và cũng xảy ra với chi phí gần như không có gì. Sẽ luôn có một nơi cho logic rời rạc.
Landak

14

Tôi hoàn toàn không phải là kỹ sư điện tử chuyên nghiệp (thực ra chỉ là người mới bắt đầu), nhưng vài xu của tôi là các IC logic rời rạc chuyên dụng chỉ nên được sử dụng nếu thời gian là quan trọng hoặc nếu đó là yêu cầu không sử dụng logic lập trình.

Với một vi điều khiển, bạn có thể thực hiện logic phức tạp hơn nhiều và nó linh hoạt hơn. Ngoài ra nó có thể được lập trình lại mà không phải thay đổi phần cứng.

Ngoài ra khi cần thời gian rất nhanh mà phần mềm không thể theo kịp, có thể sử dụng IC logic chuyên dụng. Nhưng đối với một hệ thống báo động thì điều này có vẻ không cần thiết (nó không cần thời gian phản hồi là nano giây).

Dưới đây là giải thích của tôi về những lợi thế / bất lợi:

                          Discrete logic (ICs)      Programmable logic/
                                                    (Microcontrollers)
 Nanosecond speed                  x                         -
 Just a few 'operators' needed     x                         -
 No tool chain needed              x                         -
 Cost Efficiency *                 -                         x
 PCB / proto size                  -                         x
 Flexibility for changing          -                         x
 Production cost                   -                         x
 Possibility to extend features    -                         x

* Assuming more than a few (different) logic functions needed

1
Vì vậy, tốc độ là lợi thế chính trong quan điểm của bạn? +1 cho câu trả lời, tôi đặc biệt thích bảng của bạn!
Tò mò

1
Đúng, phần cứng nhanh hơn phần mềm, vì vậy nếu bạn THỰC SỰ cần tốc độ, bạn cần IC phần cứng, nếu không tôi sẽ tìm giải pháp 'phần mềm' (vi điều khiển). Btw, ngày nay đối với các giải pháp nhạy cảm tốc độ phức tạp hơn, các GPU được sử dụng.
Michel Keijzers

1
Tôi đã không có kế hoạch sử dụng một FPGA, kỹ sư trưởng đã quyết định phần cứng ngay bây giờ! Tôi chỉ hỏi câu hỏi vì tò mò muốn xem lợi thế nằm ở đâu. Nhân tiện, tôi sẽ chấp nhận câu trả lời của bạn kịp thời nếu không có câu trả lời nào khác xuất hiện. Chỉ muốn cho người khác một cơ hội để trả lời trước khi chấp nhận sớm!
Tò mò

5
Tôi nghĩ rằng kỹ sư trưởng của bạn đã quyết định đúng. Một hệ thống báo động thường là thứ sẽ được mở rộng (nhận thêm đầu vào từ các nguồn khác nhau và hành động trên nó), thậm chí kết hợp chúng và sau đó thêm chức năng như gửi SMS tự động, báo hiệu tín hiệu báo động / báo động, có thể là một số ghi nhật ký cảm biến, v.v.
Michel Keijzers

2
@MichelKeijzers Các GPU hiện đại nhanh hơn đáng kể so với bất kỳ thứ gì bạn có thể thực hiện với các IC logic rời rạc truyền thống.
Tustique

10

Nếu bạn định tạo một sản phẩm thương mại, bạn thực sự không nên chọn một thiết kế vì "nó có thể lập trình được" hoặc bởi vì một đồng nghiệp cao cấp hơn đã đề xuất nó. Thay vào đó, bạn nên ước tính rủi rochi phí liên quan đến từng thiết kế và chọn một thiết bị có chi phí thấp nhất và mức rủi ro chấp nhận được. Cho một sự khởi đầu:

  • giá của các thành phần riêng lẻ làm tăng thêm chi phí
  • yêu cầu kích thước và độ phức tạp PCB làm tăng thêm chi phí
  • yêu cầu nỗ lực thiết kế và các công cụ làm tăng thêm chi phí
  • yêu cầu kiểm tra và chứng nhận làm tăng thêm chi phí

  • thiếu linh hoạt (ví dụ: thay đổi logic rời rạc cần có PCB mới) là một rủi ro
  • thiếu kinh nghiệm với một công nghệ cụ thể trong nhóm của bạn là một rủi ro
  • không có khả năng đáp ứng yêu cầu của dự án (ví dụ tiêu thụ điện năng mục tiêu) là một rủi ro

Nếu việc tìm nguồn cung cấp IC logic rời rạc cho dự án cụ thể của bạn rẻ hơn, nhóm của bạn có kinh nghiệm với thiết kế như vậy và bạn cho rằng việc thiếu linh hoạt là không quan trọng, không có lý do gì để không sử dụng logic rời rạc.


Rất đúng. Vì vậy, bạn nghĩ rằng có một tương lai cho logic rời rạc sau đó?
Tò mò

4
@Cquil Tôi vẫn thấy các BJT và MOSFET riêng lẻ đang được sử dụng để triển khai các chức năng logic cơ bản ở đây và đó. Logic rời rạc là một sự trừu tượng hữu ích cho một số nhiệm vụ đơn giản, vì vậy tôi tin rằng nó sẽ không biến mất hoàn toàn.
Dmitry Grigoryev

7

Một khía cạnh mà các câu trả lời khác đang quên là sự an toàn. Các mạch logic rời rạc là cách đáng tin cậy hơn nhiều so với các thiết kế vi điều khiển phức tạp hơn nhiều. Tôi đã giúp chế tạo một chiếc xe nguyên mẫu hydro, tất cả các mạch an toàn được thiết kế bằng logic rời rạc. An toàn và độ tin cậy là một khía cạnh bạn có thể muốn xem xét khi thiết kế một hệ thống báo động.


3
Điều này thường không đúng. Người ta có thể xây dựng một hệ thống rời rạc không an toàn khủng khiếp và một hệ thống cực kỳ an toàn và mạnh mẽ trên bộ xử lý. Nhóm của bạn không có kỹ năng sử dụng bộ xử lý, nhưng điều này không làm cho nó không an toàn. Bạn có thể có sự trùng lặp lớn trong một bộ xử lý, điều này sẽ không thực tế trong một hệ thống riêng biệt.
awjlogan

1
@awjlogan Bạn có thể thực hiện cả hai điều đó, nhưng dừng khẩn cấp logic rời rạc của bạn sẽ không bao giờ thất bại trong việc kích hoạt vì một điều kiện không mong muốn đã gửi một phần khác của nó vào một vòng lặp vô hạn. Hệ thống quan trọng an toàn phải đơn giản nhất có thể .
user253751

1
@immibis Đó là thiết kế và thông số xấu, không phải là bộ xử lý. Luôn có khả năng thất bại trong một hệ thống, rời rạc, FPGA hoặc bất cứ điều gì. Đồng ý rằng các két không thành công nên càng đơn giản càng tốt, điều đó không có nghĩa là chúng cần phải rời rạc.
awjlogan

5
@immibis Logic rời rạc trở nên kém tin cậy hơn MCU qua một kích thước thiết kế nhất định chỉ do lỗi hàn. Và nếu logic rời rạc bao gồm các trình kích hoạt, thì cuối cùng bạn cũng gặp vấn đề chính xác với các trạng thái hệ thống bị cấm như bạn làm trong phần mềm.
Dmitry Grigoryev

4
Các bộ phận rời rạc có thể hoạt động dễ dự đoán hơn trong trường hợp có lỗi ...
rackandboneman

4

Tôi phải thừa nhận, bất cứ khi nào tôi phải thực hiện một số logic tổ hợp phức tạp cộng với một số bộ định thời, tôi không bận tâm đến logic rời rạc mà luôn mã hóa một chương trình biên dịch tối thiểu cho ATtiny (sử dụng PIC nếu bạn thích chúng hơn).

Logic tổ hợp có tối đa 20 dòng trình biên dịch (một số bảng tra cứu). Mỗi bộ đếm thời gian phần mềm thêm 10 dòng nữa. Đồng hồ bấm giờ phần cứng thậm chí còn ít hơn. Bạn thậm chí có được lợi thế khi có bộ chuyển đổi A / D, Bộ so sánh, tạo PWM trên tàu, nếu bạn cần những thứ đó.

Nhược điểm duy nhất là bạn phải flash phần này. Đôi khi, đó là một điểm dừng chương trình, nhưng nó hiếm khi xảy ra. Ưu điểm lớn là bạn cần ít không gian hơn trên bảng, việc định tuyến đơn giản hơn nhiều và bạn có thể dễ dàng thay đổi các chức năng logic nếu được yêu cầu.


Trường hợp sử dụng còn lại cho các IC logic riêng biệt là khi mọi thứ phải hoạt động nhanh hơn 1 Lời nói.


Hơi lạc đề một chút, nhưng các phần ATTiny x17 / x16 có hai LUT 3 đầu vào. Thực sự rất tiện dụng!
awjlogan

4

Trong sản phẩm cuối cùng - có lẽ không có nhiều lợi thế cho logic rời rạc nếu chúng ta đang nói về một thiết bị tiêu dùng. Các ngoại lệ sẽ là một thứ gì đó cần phải rất chắc chắn trước các điều kiện bất lợi hoặc rất dễ để mô tả hoàn toàn (độ phức tạp thực tế và tiềm năng của các lỗi ẩn cao hơn nhiều với phần mềm dựa trên phần mềm) hoặc bạn muốn có thể xây dựng lại từ rất các bộ phận tương tự trong nhiều thập kỷ tới (dấu chân 74xx thay đổi rất chậm ngay cả khi các chữ cái công nghệ thay đổi :)).

Một cái gì đó mà bạn thực sự có thể làm tốt hơn với sự rời rạc là tự thời gian, logic không đồng bộ (hoàn thành một điều ngay lập tức kích hoạt một điều khác). Tính hợp pháp của các thiết kế như vậy là một chủ đề chiến tranh thánh. Đừng lo lắng, những người đồng bộ sẽ muốn đánh bại bạn nhưng bạn chỉ cần lấy đồng hồ của họ đi, họ sẽ chờ đợi vô nghĩa cho nó.

Khi nói đến phương pháp thiết kế, tôi muốn nói rằng nó phụ thuộc vào phong cách ưa thích của nhà thiết kế - một thiết bị CPLD mà bạn có thể tua lại trực tiếp theo nghĩa đen ("hãy chạm vào dây đó cho đến khi có thứ gì đó nhấp vào"), trong chế độ xem nhanh nhất, và dưới sức mạnh từ một máy tính chủ (với tia lửa mô phỏng khi bạn chạm dây vào pin, tốt hơn là chỉ vì môi trường xung quanh) chắc chắn sẽ được mọi người thích logic rời rạc :)

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.