Altifigence Academy

20 / 37 · Khái niệm

generate: tạo mạch tĩnh bằng vòng lặp

Dùng genvar và generate-if để tạo phân cấp có tên và kiểm tra vị trí lane.

Vòng lặp tạo thể hiện, không tạo chu kỳ

genvar/generate lặp cấu trúc tĩnh trước chạy. Vòng lặp always_comb mô tả tính toán thủ tục, phần cứng được tổng hợp xác định. Không mặc nhiên là một lần lặp mỗi clock; xử lý nối tiếp cần trạng thái và bộ điều khiển. Bus packed được chia thành LANES từ W bit, tính parity từng từ. Hai tham số đều dương.

SystemVerilog
module lane_parity #(
  parameter integer W = 8,
  parameter integer LANES = 3
) (
  input  logic [W*LANES-1:0] data,
  output logic [LANES-1:0] parity
);
  genvar lane;
  generate
    for (lane = 0; lane < LANES; lane = lane + 1) begin : g_lane
      wire [W-1:0] word_data;
      assign word_data = data[lane*W +: W];
      assign parity[lane] = ^word_data;
    end
  endgenerate
endmodule

data[base +: W] chọn W bit từ base hướng chỉ số tăng; W hằng. W=8, LANES=3 nối 7:0 với lane 0,15:8 với 1,23:16 với 2. g_lane tạo phân cấp ổn định như g_lane[1].word_data.

Đọc thứ tự lane

data=24'h03_01_80 có 80,01,03 từ lane 0. Parity 1,1,0 cho parity[2:0]=011. Byte bên trái là lane 2. Tách chỉ số, hiển thị và truyền. Tất cả tính đồng thời, không độ trễ thanh ghi. Nhiều LANES tăng logic, không tăng chu kỳ; fanout, định tuyến và timing vật lý cần kiểm tra riêng.

generate-if chọn cấu trúc cố định

Điều kiện là hằng, ví dụ tham số thêm thanh ghi. Tín hiệu động thuộc khối tổ hợp hoặc clock. Thêm thanh ghi đổi tính hợp lệ, nên đổi hợp đồng và checker. Không tắt bus bằng zero:[−1:0] không phải đối tượng độ rộng zero an toàn. Từ chối cấu hình hoặc giữ giao diện xác định trong nhánh tĩnh.

Thực hành: phát hiện lane tráo

Thử ví dụ rồi bật một bit từng lane: chỉ parity tương ứng đổi. Hai bit bật cho parity chẵn 0. Dữ liệu giống nhau mọi lane che lát cắt tráo. Tách lane bằng phép toán số trong tham chiếu và đếm bit 1. Thử W=1,8 và LANES=1,3 cho tối thiểu, byte và phân cấp. Sau đó lưu parity vào thanh ghi và định nghĩa reset, enable, so với bus hiện tại hay bắt tại cạnh trước.

Lựa chọn áp dụng cho trình duyệt này. Có thể đổi ở chân trang bất cứ lúc nào.