Vừa

Mã Hamming(7,4): mã hoá và sửa lỗi 1 bit

Module cần viết: hamming74 · 6 case (2 mẫu) · giới hạn 4 s/case · ~25 phút

combinationalecchammingparityinterview

Bộ nhớ và đường truyền có thể bị lật bit do nhiễu hay bức xạ. Mã Hamming(7,4) thêm 3 bit parity vào 4 bit dữ liệu, đủ để phát hiện và sửa mọi lỗi 1 bit. Đây là ý tưởng nền của ECC trong DRAM/SRAM, và là câu phỏng vấn thiết kế tổ hợp quen thuộc.

module hamming74 (
  input  logic [3:0] d,          // dữ liệu cần mã hoá
  output logic [6:0] cw,         // từ mã: cw[k-1] là bit ở VỊ TRÍ k (k = 1…7)
  input  logic [6:0] rx,         // từ mã nhận được (có thể sai 1 bit)
  output logic [3:0] dout,       // dữ liệu sau khi sửa
  output logic [2:0] syndrome,   // vị trí bit sai (1…7), 0 nếu không sai
  output logic       corrected   // 1 nếu đã sửa một bit
);
Vị trí 1 2 3 4 5 6 7
Nội dung p1 p2 d[0] p4 d[1] d[2] d[3]
  • p1 = XOR các vị trí 3, 5, 7; p2 = XOR 3, 6, 7; p4 = XOR 5, 6, 7 (parity chẵn).
  • Bên nhận: s1 = XOR vị trí 1, 3, 5, 7 của rx; s2 = XOR 2, 3, 6, 7; s4 = XOR 4, 5, 6, 7. syndrome = {s4, s2, s1}.
  • dout lấy từ các vị trí 3, 5, 6, 7 sau khi lật bit ở vị trí syndrome (nếu khác 0).

Ví dụ: d = 4'b1011 → cw = 7'b1010101 (đọc từ vị trí 7 về 1). Nếu nhận rx sai ở vị trí 6 thì syndrome = 6, corrected = 1, dout = 1011.

Mạch tổ hợp; testbench đọc ngõ ra 1 ns sau khi đổi đầu vào.

Các case

  1. Mã hoá đủ 16 giá trị dữ liệumẫu
  2. Giải mã mã đúng: syndrome = 0mẫu

Cùng 4 case ẩn kiểm các yêu cầu còn lại của đề. Case ẩn chỉ báo đúng/sai, không nói chi tiết: tự tìm chỗ sai từ đề, hoặc mở gợi ý.

Testbench có mô hình tham chiếu riêng, độc lập với lời giải mẫu. Lời giải mẫu đã chạy qua mọi case trên simulator thật, và 3 bản lỗi mẫu đều bị ít nhất một case bắt. Case mẫu sai sẽ cho biết chỗ sai đầu tiên (giá trị mong đợi so với giá trị nhận được); case ẩn chỉ báo đúng/sai.

Đang kết nối máy chấm…
Đang nạp bản nháp…

Tab để thụt lề. Nhấn Esc rồi Tab để rời trình soạn. Bản nháp tự lưu trong trình duyệt.

Gợi ý

Mỗi gợi ý mở trước khi AC giảm 10% điểm của đề.

Lời giải và phân tích

Lịch sử nộp bài

Chưa có lượt nào.

Độ khó: Vừa. Điểm gốc 40.