Bộ mã hóa là gì?

Bộ mã hóa là gì?

Tìm hiểu về bộ mã hóa, các mạch thông minh giúp thực hiện quá trình chuyển đổi quan trọng này!

Bộ mã hóa là mạch kỹ thuật số chuyển đổi M (< 2N) đầu vào kỹ thuật số thành các đầu ra được mã hóa khác nhau (được biểu diễn bằng N bit) biểu diễn vị trí của các đầu vào. Thông thường, 2N > M > N là mạch được sử dụng rộng rãi trong các hệ thống kỹ thuật số, cho phép chuyển đổi nhiều đường đầu vào song song thành ít đường đầu ra hơn.

Các loại mã hóa phổ biến

  1. Bộ mã hóa 4 đến 2
  2. Bộ mã hóa bát phân sang nhị phân (Bộ mã hóa 8 sang 3)
  3. Mã hóa thập phân sang BCD
  4. Bộ mã hóa ưu tiên

1. Bộ mã hóa 4 đến 2

Bộ mã hóa 4 sang 2 có 4 đầu vào, I0, I1, I2 và I3, cùng với 2 đầu ra, được ký hiệu là Z0 và Z1. Do đó, có 16 bộ đầu vào khả thi, trong khi chỉ có 4 bộ đầu ra khả thi. Do đó, không thể ánh xạ mọi bộ đầu vào thành một bộ đầu ra cụ thể. Do đó, phải áp đặt một ràng buộc lên các đầu vào. Tại bất kỳ thời điểm nào, chỉ một trong 4 đầu vào có thể được đặt thành '1' để có được mã nhị phân tương ứng ở đầu ra. Nếu 2 hoặc nhiều đầu vào được đặt thành '1', thì bất kỳ đầu ra nào trong 4 đầu ra đều có thể xuất hiện. Sơ đồ bên dưới hiển thị các ký hiệu logic biểu diễn bộ mã hóa 4 sang 2.

Biểu thức logic cho đầu ra Z1 và Z0 là:

Z1 = I3 + I2

Z0=I3+I1

Chúng ta có thể quan sát thấy các mẫu đầu vào (I3,I2,I1,I0=1,0,0,0) và (I3,I2,I1,I0=0,1,1,0) tạo ra cùng một đầu ra (Z1,Z0=1,1). Mẫu đầu tiên chỉ có một đầu vào là 1, trong khi ở mẫu sau, chúng ta có hai đầu vào là 1. Vì đầu ra giống nhau cho cả hai mẫu đầu vào, nên rất khó để xác định trạng thái đầu vào nào khiến nó như vậy. Có một số tình huống mà chỉ có một đường đầu vào sẽ ở mức cao tại bất kỳ thời điểm nào (bộ mã hóa vị trí). Tuy nhiên, do nhiễu hoặc lỗi, có thể xảy ra trường hợp hai đường đầu vào vô tình được đặt cùng nhau.

Để loại bỏ sự mơ hồ này, bộ mã hóa ưu tiên được sử dụng.

2. Bộ mã hóa bát phân sang nhị phân (Bộ mã hóa 8 sang 3)

Bộ mã hóa 8 đến 3, còn được gọi là bộ mã hóa bát phân sang nhị phân, bao gồm 8 đầu vào được gắn nhãn từ I0 đến I7 và 3 đầu ra được gắn nhãn Z2, Z1 và Z0. Mỗi dòng đầu vào được ánh xạ tới một số 3 bit duy nhất. Ba đầu ra tạo ra mã nhị phân 3 bit tương ứng. Sơ đồ bên dưới hiển thị ký hiệu logic của bộ mã hóa bát phân sang nhị phân.

3. Bộ mã hóa thập phân sang BCD

Một bộ mã hóa thập phân sang nhị phân thông thường bao gồm 10 dòng đầu vào và 4 dòng đầu ra. Mỗi dòng đầu vào biểu diễn một số thập phân và 4 dòng đầu ra tạo thành mã nhị phân thập phân (BCD). Bộ mã hóa này lấy dữ liệu thập phân đã giải mã làm đầu vào và chuyển đổi thành đầu ra BCD, có thể truy cập thông qua các dòng đầu ra. Sơ đồ bên dưới hiển thị ký hiệu logic của bộ mã hóa thập phân sang BCD.

Bảng 3: Bảng chân lý của bộ mã hóa 8 đến 3 đầu vào.

4. Bộ mã hóa ưu tiên

Bộ mã hóa ưu tiên tương tự như bộ mã hóa cơ bản ở chỗ nó chuyển đổi một số lượng lớn đầu vào nhị phân thành một số lượng nhỏ hơn đầu ra. Không giống như bộ mã hóa cơ bản, đầu ra của bộ mã hóa này phản ánh chỉ số nhị phân của chuỗi được kích hoạt quan trọng nhất. Nếu nhiều đầu vào được kích hoạt đồng thời trong bộ mã hóa ưu tiên, đầu vào có mức ưu tiên cao nhất sẽ xác định đầu ra, giúp loại bỏ sự mơ hồ mà chúng ta thấy trong các bộ mã hóa truyền thống. Mặc dù bộ mã hóa cơ bản có thể xử lý tất cả các tập đầu vào có thể, nhưng nó vẫn yêu cầu logic bổ sung, khiến nó hữu ích hơn bộ mã hóa cơ bản, nhưng phải trả giá bằng sự phức tạp tăng lên.

Bộ mã hóa ưu tiên 4 đến 2

Bộ mã hóa ưu tiên 4 đến 2 có 4 đầu vào được đặt tên là I3, I2, I1 và I0 cùng với 2 đầu ra được đặt tên là Z1 và Z0. Trong thiết lập này, I3 được gán mức ưu tiên cao nhất trong khi I0 được gán mức ưu tiên thấp nhất. Trong tình huống này, nếu nhiều đầu vào có mức ưu tiên cao cùng một lúc, tức là '1', thì đầu ra sẽ biểu diễn mã (nhị phân) của đầu vào có mức ưu tiên cao nhất. Dưới đây là bảng chân lý hiển thị chức năng của bộ mã hóa ưu tiên. Một đầu ra khác được thêm vào được gọi là 'V' (hợp lệ) để phát hiện trạng thái bằng không của tất cả các đầu vào.

Bảng 4: Bảng chân lý của bộ mã hóa ưu tiên 4 đến 2 đầu vào.

Mã Verilog để mã hóa ưu tiên

module priority_encoder_4_to_2(en, Din, Dout);
input en;
input [3:0] Din;
output reg [1:0] Dout;
always @ (Din,en)
begin
case (Din)
4'b00000001: Dout = 2'b000;
4'b0000001x: Dout = 2'b001;
4'b000001xx: Dout = 2'b010;
4'b00001xxx: Dout = 2'b011;
default: Dout = 2'bxx;
endcase
end
endmodule

module priority_encoder_8_to_3(en, Din, Dout);
input en;
input [7:0] Din;
output reg [2:0] Dout;
always @ (Din,en)
begin
case (Din)
8'b00000001: Dout = 3'b000;
8'b0000001x: Dout = 3'b001;
8'b000001xx: Dout = 3'b010;
8'b00001xxx: Dout = 3'b011;
8'b0001xxxx: Dout = 3'b100;
8'b001xxxxx: Dout = 3'b101;
8'b01xxxxxx: Dout = 3'b110;
8'b1xxxxxxx: Dout = 3'b111;
default: Dout = 3'bxxx;
endcase
end
endmodule

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Win a Raspberry Pi!

Answer 5 questions for your chance to win!
Question 1

What color is the sky?

Tìm kiếm bằng danh mục

Chọn danh mục