Sự khác biệt giữa reg và dây sau khi tổng hợp là gì?


7

Giả sử tôi có hai mã này:

module wire_example( a, b, y);
  input a, b;
  output y;

  wire a, b, y;

  assign y = a & b;

endmodule

và cái thứ hai là:

module reg_combo_example( a, b, y);
input a, b;
output y;

reg   y;
wire a, b;

always @ ( a or b)
begin   
  y = a & b;
end

endmodule

Câu hỏi của tôi là sự khác biệt trong danh sách mạng, cả hai sẽ có một cổng, nhưng mô-đun với reg ysẽ có một flip flop hoặc một chốt để giữ dữ liệu trong khi wire ysẽ không có chốt?

Câu trả lời:


9

Không có ví dụ nào của bạn sẽ chứa bất kỳ chốt hoặc flip-flop nào. Các alwayskhối trong ví dụ thứ hai của bạn là tổ hợp, không phải tuần tự (nếu nó là tổng hợp một chốt, những gì đồng hồ sẽ kiểm soát chốt đó?). Bạn phải sử dụng một regloại yđơn giản vì nó xuất hiện ở bên trái của câu lệnh gán bên trong một alwayskhối. Nhiều người coi đây là nhược điểm của Verilog, rất khó để tranh luận. Trong VHDL, một signalloại sẽ được sử dụng thay vì cả hai wireregloại bỏ sự nhầm lẫn.


3
.... đó là lý do tại sao bạn sử dụng SystemVerilog và chỉ cần khai báo "logic"
ThePopMachine

1

dây: Nó là một mạng đại diện cho các kết nối giữa các thành phần. Nó được sử dụng để gán liên tục, nghĩa là, dây có giá trị liên tục được điều khiển trên nó bởi đầu ra của các thiết bị được kết nối với chúng. Reg: Nó được sử dụng để phân công thủ tục. Reg luôn không có nghĩa là một flop. reg có thể giữ giá trị của nó cho đến khi giá trị khác được đặt vào các thanh ghi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.