Altifigence Academy

14 / 37 · Khái niệm

Flip-flop, enable và ưu tiên điều khiển

Định nghĩa giữ, nạp, reset bằng trạng thái kế tiếp và tránh clock gating ngoài ý muốn.

Thanh ghi lưu kết quả hàm trạng thái kế tiếp

Ký hiệu giá trị trước cạnh clock là QkQ_k, đầu vào lấy tại cạnh là DkD_k, giá trị sau cập nhật là Qk+1Q_{k+1}. Thanh ghiThanh ghi Mạch lưu trạng thái nhiều bit. Thanh ghi đồng bộ trong khóa học lưu đầu vào đã quy định tại cạnh clock. Tìm hiểu thêm có reset ưu tiên rồi đến enable như sau.

Qk+1={0rk=1Dkrk=0, ek=1Qkrk=0, ek=0Q_{k+1}=\begin{cases} 0 & r_k=1\\ D_k & r_k=0,\ e_k=1\\ Q_k & r_k=0,\ e_k=0 \end{cases}

Khi enable=0, dữ liệu lưu giữ nguyên dù D đổi. Bỏ đường giữ này trong RTL khác với bỏ sót phép gán tổ hợp. Giữ trong khối tuần tự là một phần đặc tả thanh ghi.

SystemVerilog
module enabled_register (
  input logic clk, rst, en,
  input logic [7:0] d,
  output logic [7:0] q
);
  always_ff @(posedge clk) begin
    if (rst) q <= 8'b0;
    else if (en) q <= d;
  end
endmodule

Mạch dùng reset đồng bộ active-high. Tại cạnh reset và enable cùng 1, giá trị 0 được lưu. Đổi thứ tự sẽ đổi chức năng, nên ưu tiên phải xuất hiện cả trong mã và kiểm tra, không chỉ chú thích.

Mỗi cột ghi lại quan sát tại một cạnh lênCạnh lên Khoảnh khắc clock chuyển 0 sang 1, khác với mức cao chỉ cả khoảng CLK=1. Tìm hiểu thêm. Đầu vào là giá trị ngay trước cạnh, còn trạng thái có tên chứa after là giá trị ngay sau cập nhật. Cách căn cột thể hiện thứ tự lấy mẫu, không mô tả độ trễ lan truyềnĐộ trễ lan truyền Thời gian từ khi đầu vào đổi đến khi đầu ra ổn định ở giá trị đúng. Tương đương logic và đặc tính thời gian là hai vấn đề riêng. Tìm hiểu thêm vật lý. Q ban đầu=0xA5. Cột đầu giữ, cột hai ghi, cột ba reset xung đột enable.

Ưu tiên reset, enable, hold
Xem dữ liệu dạng sóng
Dữ liệu dạng sóng: mỗi ký tự là một khoảng; dấu chấm giữ trạng thái trước; p là một chu kỳ đồng hồ.
Tín hiệuDạng sóngGiá trị bus
edge2345E0 → E1 → E2 → E3
reset0.10
enable01.0
D2.343C → 99 → 77
Q after234.A5 → 3C → 00

Enable không phải tín hiệu tùy ý cắt clock

Tự tạo biểu thức tổ hợp như gated_clk = clk & en rồi dùng làm clock có thể khiến thay đổi en tạo xung ngắn hoặc cạnh ngoài dự kiến. Ánh xạ RTL clock enable sang cell là trách nhiệm luồng tổng hợp và triển khai. Clock gating tiết kiệm điện cần thiết kế riêng với cell phù hợp và kiểm chứng thời gian.

Ưu tiên cần kiểm tra lộ rõ khi reset, load, enable chồng nhau. Chỉ bật từng điều khiển riêng là chưa đủ. Ví dụ q=A5, en=0, d=3C thì giữ; cạnh sau en=1 thì phải lưu 3C.

Tự thử

Từ q=0xA5, đi qua cạnh có rst=1, en=1, d=0x3C; tiếp theo rst=0, en=0. q sau từng cạnh là gì?

Đọc giải thích

Cạnh đầu reset ưu tiên nên về 0, cạnh sau enable=0 nên vẫn 0. Nếu reset nằm bên trong en, có thể bỏ lỡ reset khi en=0, vì vậy cũng phải kiểm tra riêng tổ hợp ấy.

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.