Làm thế nào là một XOR với hơn 2 đầu vào được cho là hoạt động?


27

Tôi mới bắt đầu học ngành kỹ thuật máy tính và tôi có một số nghi ngờ về hành vi của cổng XOR.

Tôi đã chiếu các mạch với Logisim, người có XOR hoạt động khác với những gì tôi đã học. Đối với tôi, nó nên hoạt động như một cổng chẵn lẻ, cho đầu ra cao bất cứ khi nào đầu vào nhận được một kết hợp lẻ. Nó không, mặc dù, cho nhiều hơn hai đầu vào. Nó nên cư xử thế nào?

Tôi cũng đọc trong một cuốn sách rằng các cổng XOR không được sản xuất với hơn hai đầu vào. Đúng không? Tại sao?


1
Tại sao không (hoặc gần như không bao giờ) với> 2 đầu vào? Hai cách sử dụng điển hình của cổng XOR là 1) để kiểm tra sự bằng nhau và 2) để kiểm soát / thao tác phân cực của tín hiệu. Không có ý nghĩa cho hơn 2 đầu vào.
Wouter van Ooijen

1
Không phải tổng số trong một bộ cộng đầy đủ sẽ được biểu diễn dưới dạng A ^ B ^ Cin?
gabrieljcs

Bạn có thể diễn đạt theo cách đó, nhưng điều đó không có nghĩa là đó là một cách tốt để thực hiện nó.
Wouter van Ooijen

1
Chỉ cần kiểm tra phiên bản Logisim của tôi và "1 và chỉ 1" dường như là hành vi mặc định nhưng có tùy chọn để thay đổi nó thành một hàm chẵn lẻ.
Joe Hass

Thật vậy, Joe. Liên kết này có một cuộc thảo luận liên quan đến vấn đề đó, được trả lời bởi nhà phát triển của Logisim, Carl Burch.
gabrieljcs

Câu trả lời:


23

Có nhiều quan điểm khác nhau về cách một cổng OR độc quyền có nhiều hơn hai đầu vào nên hoạt động. Thông thường, một cổng XOR như vậy hoạt động giống như một tầng của các cổng 2 đầu vào và thực hiện chức năng tương đương lẻ. Tuy nhiên, một số người giải thích ý nghĩa của độc quyền-HOẶC theo nghĩa đen hơn và nói rằng đầu ra phải là 1 khi và chỉ khi chính xác một trong các đầu vào là 1. Tôi dường như nhớ lại rằng Logisim sử dụng cách hiểu sau và ở đâu đó trong bộ nhớ rỉ sét của tôi Tôi đã nhìn thấy nó trong một thư viện tế bào ASIC. Một trong những ký hiệu tiêu chuẩn quốc tế cho cổng XOR là một hình chữ nhật được dán nhãn =1dường như phù hợp hơn với định nghĩa "1 và chỉ 1".

EDIT: Định nghĩa độc quyền HOẶC là "1 và chỉ 1" là không phổ biến nhưng nó có thể được tìm thấy. Ví dụ, IEEE-Std91a-1991 đưa ra biểu tượng cho độc quyền OR trên p. 62 với ghi chú: "Đầu ra đứng ở trạng thái 1 nếu một và chỉ một trong hai đầu vào đứng ở trạng thái 1". Thay vào đó, đối với hơn 2 đầu vào, tiêu chuẩn khuyến nghị sử dụng biểu tượng "chẵn lẻ". Các trang web thảo luận về tình huống khó hiểu này bao gồm XOR: Cổng thú vị và các bản giới thiệu cổng tại TAM . Một tìm kiếm google cũng sẽ bật lên các trang web tuyên bố rằng, nói đúng ra, không có thứ gọi là cổng XOR có nhiều hơn hai đầu vào.


4
Theo như tôi quan tâm, cách thứ hai (1 và chỉ 1) là cách duy nhất đúng để làm điều này - bất cứ điều gì khác không thực sự độc quyền .
Đa thức

3
Không có quan điểm khác nhau, cả hai điểm đều đúng về mặt kỹ thuật, tuy nhiên "1 nếu chỉ khi chính xác một trong các đầu vào là 1" không mở rộng như bạn nghĩ. Khi bạn xếp tầng 2 XOR, mỗi đầu ra đưa vào các chân của XOR thứ ba, điều này cho thấy điểm trên. Các cổng đa đầu vào được lấy từ các nguyên hàm 2input của chúng. Do đó, bảng chân lý 4input là ((A⊕B) (C⊕D)) dẫn đến kết quả đầu ra 1 cuối cùng nếu có một số lượng lẻ các đầu vào thực.
Kris Bahnsen

@KrisBahnsen Như OP đã chỉ ra, thực sự có hai quan điểm (hãy thử XOR mặc định trong Logisim nếu bạn cần bằng chứng). Sự khẳng định của bạn rằng các cổng đa đầu vào có nguồn gốc từ các nguyên hàm 2 đầu vào được đưa ra như thể đó là sự thật phổ quát nhưng chúng tôi đã cung cấp cho bạn một ví dụ ngược lại.
Joe Hass

@JoeHass, tôi chưa bao giờ sử dụng logisim, tôi chủ yếu sử dụng LogicWorks; trong đó, một XOR đa đầu vào hoạt động như tôi đã mô tả ở trên, số lượng đầu vào thực sự là một đầu ra thực sự. Trang wiki trên XOR (en.wikipedia.org/wiki/XOR) đồng ý rằng những gì tôi nói cũng đúng. Tôi cũng chưa bao giờ thực sự thấy một IC XOR đa đầu vào, vì vậy tôi không thể chuyển sang datasheets để thử và từ chối những gì tôi đã nói. Logisim dường như là điều duy nhất thực hiện lược đồ XOR đa đầu vào với logic "1 nếu và chỉ ..." Nếu bạn có thể tìm thấy một nguồn khác, tôi sẽ thừa nhận tôi sai và có nhiều định nghĩa về XOR.
Kris Bahnsen

Làm rõ, cảm ơn bạn đã dành thời gian nghiên cứu các tiêu chuẩn nhiều hơn tôi đã có.
Kris Bahnsen

11

Trên XOR hai cổng, đầu ra ở mức cao khi các đầu vào khác nhau. Nếu các đầu vào giống nhau thì đầu ra thấp.

Do đó bảng sự thật này:

nhập mô tả hình ảnh ở đây

Bạn có thể tìm thấy một cổng XOR có nhiều hơn hai đầu vào, nhưng thực tế chúng không phải là một XOR 3 đầu vào. Họ XOR đầu vào A và B và kết quả của họ "R" sau đó là XOR với đầu vào C. Và kết quả của R XOR C sau đó là XOR với đầu vào 4, v.v.

Dưới đây là bảng chân lý cho ba XOR đầu vào được hiển thị:

nhập mô tả hình ảnh ở đây

Một thuật toán chẵn lẻ đơn giản là XORing bit trong một tin nhắn nhận được qua ví dụ Ethernet. Nếu người gửi và người nhận biết rằng XOR các bit thông báo phải là 0 (một bit trong tin nhắn được cung cấp để có thể thêm một tin nhắn để tin nhắn có độ dài bất kỳ có thể là 0 khi XOR) thì người nhận có thể biết nếu 1 bit đã được lật. Đây là một kiểm tra chẵn lẻ xấu vì nó chỉ có thể tìm thấy số lượng thay đổi bit lẻ, nhưng hiển thị khái niệm.


1
Tôi là một nhà toán học, câu trả lời đó có vẻ kinh khủng đối với tôi. Tôi hiểu rằng đó là đầu ra thường được dự định bởi XOR 3 đầu vào nhưng 01101000 có vẻ hợp lý hơn nhiều đối với tôi. + Câu trả lời hay.
Ben Crossley

1

Nếu bạn lấy 4 đầu vào và đưa hai đến một XOR và hai cho đầu vào sau đó, hãy lấy hai đầu ra XOR và đưa chúng vào XOR thứ ba, đầu ra của nó sẽ làm những gì bạn tin rằng (tôi nghĩ).


1
Tôi quan tâm nhiều hơn về các whys, không phải hows. Cảm ơn vì câu trả lời.
gabrieljcs

@root, thực ra, bạn hỏi "Nó nên cư xử thế nào?" Bạn đã không hỏi tại sao bất cứ nơi nào. Đây là một câu trả lời đúng, nó mang lại ((A⊕B) (C⊕D)) giống như một XOR 4input, giống như nhiều XOR 2input xếp chồng lên nhau.
Kris Bahnsen

Bạn đúng. Xin lỗi vì sự hiểu lầm.
gabrieljcs 16/12/13

1

XOR không hoàn toàn là một cổng chẵn lẻ. Nếu bạn xác định đầu ra của XOR là 1 khi một và chỉ một trong các đầu vào là 1 thì XOR ba đầu vào sẽ cung cấp cho bạn 0 cho đầu vào tất cả 1. Điều này không được sử dụng rất thường xuyên và do đó, có một vài cổng XOR 3 đầu vào.

Điều mà hầu hết mọi người có nghĩa là khi họ nói XOR là bổ sung modulo 2, một công cụ kiểm tra chẵn lẻ chính xác. Hầu hết các cổng được dán nhãn là XOR 3 đầu vào trên thực tế là 2 cổng bổ sung modulo. Đối với hai đầu vào, bổ sung modulo 2 giống với XOR nhưng 0 từ XOR được mô tả ở trên thay vào đó là 1 trong 2 cổng modulo. Các cổng Modulo 2 với số lượng đầu vào tùy ý có thể được tạo ra từ các cổng XOR hai đầu vào đơn giản.


1

Tôi đã thực hiện một chút tìm kiếm khi thấy câu hỏi của bạn và tìm thấy một IC là cổng XOR 3input. 74LVC1G386 từ nxp. liên kết đến trang web nxp hiển thị kết quả tìm kiếm cho số phần này trong trang web nxp là http://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10


2
Cảm ơn bạn đã đóng góp, nhưng câu trả lời của bạn sẽ vô giá trị nếu NXP thay đổi công cụ tìm kiếm của họ. Hãy tóm tắt những gì bạn tìm thấy ở đây để nó sẽ có giá trị lâu dài.
Joe Hass

Tôi chỉ tìm kiếm để xem liệu có nhà sản xuất nào cung cấp XOR với hơn 3 đầu vào không và tìm thấy cái này ... vì vậy tôi nghĩ nó sẽ giúp tôi chia sẻ nó ... đây là một liên kết đến bảng dữ liệu của họ nxp.com/document/ data_sheet / 74LVC1G386.pdf
Mahesh Mohandasan

1
Xin đừng đăng một liên kết khác! Hãy cho chúng tôi làm thế nào điều này hoạt động!
Joe Hass

cổng XOR 3 đầu vào có chức năng giống như chúng ta đã nghiên cứu / biết. tức là, nó cung cấp một o / p cao cho số lượng đầu vào cao lẻ (như từ bảng dữ liệu). đó là lý do tại sao chia sẻ liên kết. :)
Mahesh Mohandasan

1

Vì vậy, tôi đã đến đó và thử nghiệm! Tôi đã viết một tập tin nhỏ, mô phỏng và nhìn vào dạng sóng.

Hóa ra cách giải thích chính xác cho Verilog là: Có số lượng 1 lẻ trong phần giải thích AKA đầu vào 2 của bài viết này

module top (y1, y2);
output y1, y2;
reg a, b, c;
wire x1, x2;
wire t;

xor(t, a, b);
xor(x2, t, c);

assign y2 = x2;
assign y1 = x1;

xor(x1, a, b, c);

initial
begin
  $dumpfile("test.vcd");
  $dumpvars(y1, y2, a, b, c, x1, x2);

#20
#10  a = 0; b = 0; c = 0;
#10  a = 0; b = 0; c = 1;
#10  a = 0; b = 1; c = 0;
#10  a = 0; b = 1; c = 1;
#10  a = 1; b = 0; c = 0;
#10  a = 1; b = 0; c = 1;
#10  a = 1; b = 1; c = 0;
#10  a = 1; b = 1; c = 1;
#10  a = 0; b = 0; c = 0;
end

endmodule

nhập mô tả hình ảnh ở đây


-1

Theo logic của cổng OR đa đầu vào đơn giản, nó giả sử giá trị cao nhất trong số tất cả các đầu vào tuy nhiên nó không đưa ra quyết định. Đối với EXOR (được trộn lẫn với một nửa bộ cộng chỉ là một sự trùng hợp ngẫu nhiên, vì nó không xảy ra trong EXOR logic đa giá trị), sẽ đưa ra quyết định xem cái nào cao nhất trong số các đầu vào nhưng nếu cao nhất (bao gồm 0 + 0 .. 1 + 1) giống nhau, nó không chọn được giữa các đầu vào nghĩa là nó không thể đưa ra quyết định nên chọn cái nào. Không có quyết định nào có nghĩa là đầu ra bằng không. Ví dụ: nếu ai đó được yêu cầu mua số lượng kẹo tối đa của một thương hiệu trong một dug và nếu có hai nhãn hiệu (radix = 2) thì anh ta có thể chọn một thương hiệu có số lượng ngọt cao nhất nhưng nếu cả hai thương hiệu có sẵn miễn phí, anh ta không thể chọn bất kỳ (có nghĩa là 0,0) tương tự nếu cả hai thương hiệu cung cấp cùng một số (1, 1) đồ ngọt anh ta không thể đưa ra quyết định có nghĩa là đầu ra bằng không. Logic tương tự có thể được mở rộng cho 3, 4 hoặc nhiều số nhãn hiệu (cơ số cao hơn) của đồ ngọt. Điều này áp dụng tương tự cho logic đa giá trị. (x + x + .. + x = 0 trong đó x có thể có bất kỳ giá trị nào), Trong ba cổng EXOR đầu vào 1 + 1 + 1 = 0 (so với cách hiểu thông thường 1 + 1 + 1 = 1 có vẻ sai, bị sai trộn lẫn với tính chẵn lẻ). VT Ingole, Tiến sĩ


Giải thích này phức tạp không cần thiết và dường như không trả lời dứt khoát câu hỏi nào.
duskwuff
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.