Dễ

Barrel shifter 8 bit: SLL, SRL, SRA, ROL

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

combinationalshiftersignedalu

Barrel shifter dịch một từ đi số bit tuỳ ý trong một chu kỳ. Đây là khối có sẵn trong mọi ALU. Bài này chủ yếu kiểm hai điều người mới hay nhầm: dịch số học khác dịch logic ra sao, và >>> trong SystemVerilog phụ thuộc vào kiểu signed/unsigned như thế nào.

module barrel8 (
  input  logic [7:0] a,
  input  logic [2:0] sh,     // số bit dịch, 0…7
  input  logic [1:0] op,
  output logic [7:0] y
);
op Phép Ý nghĩa
2'b00 SLL dịch trái logic, chèn 0 ở bên phải
2'b01 SRL dịch phải logic, chèn 0 ở bên trái
2'b10 SRA dịch phải số học: chèn bit dấu a[7] ở bên trái
2'b11 ROL xoay trái: bit bị đẩy ra ở trái vòng về bên phải

Ví dụ với a = 8'b1001_0110, sh = 2: SLL → 0101_1000, SRL → 0010_0101, SRA → 1110_0101, ROL → 0101_1010.

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

Các case

  1. SLL với a = 8'h81, mọi shmẫu
  2. ROL với a = 8'h81, mọi shmẫu

Cùng 5 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ó: Dễ. Điểm gốc 20.