ID bài viết: 000080752 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 11/12/2007

Tổng hợp Quartus II có thể suy ra một cấu trúc bộ nhớ không đồng bộ nhỏ có thể được đặt trong một khối Stratix III MLAB không?

Môi Trường

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Mô tả

Theo mặc định, phần mềm Quartus® II phiên bản 6.1 và 7.0 không suy ra các cấu trúc bộ nhớ được nhắm mục tiêu cho các khối Stratix® III MLAB từ mã HDL. Bạn phải sử dụng một ramstyle thuộc tính với giá trị MLAB để phần mềm Quartus II có thể suy ra một khối RAM nhỏ và đặt nó trong MLAB.

Ngoài ra, một số khối RAM không đồng bộ có thể được mã hóa với hành vi đọc trong khi ghi không khớp với kiến trúc Stratix III. Do đó, hành vi thiết bị sẽ không chính xác phù hợp với hành vi được mô tả trong mã. Nếu sự khác biệt về hành vi là chấp nhận được trong thiết kế của bạn, ramstyle no_rw_check hãy sử dụng thuộc tính có giá trị để chỉ định rằng phần mềm không nên kiểm tra hành vi đọc trong khi ghi khi suy luận RAM. Khi thuộc tính này được thiết lập, tổng hợp tích hợp Quartus II cho phép hành vi của đầu ra trở nên khác biệt khi đọc không đồng bộ xảy ra trên một địa chỉ có ghi trên cạnh đồng hồ gần đây nhất.  Nghĩa là, các kết quả mô phỏng HDL chức năng sẽ không phù hợp với hành vi phần cứng nếu bạn ghi vào một địa chỉ đang được đọc.

Để bao gồm cả hai thuộc tính, hãy đặt giá trị của thuộc ramstyle tính thành "MLAB, no_rw_check". Để biết thông tin về cú pháp để thiết lập các thuộc tính tổng hợp, hãy tham khảo chương Tổng hợp Tích hợp Quartus II (PDF) trong tập 1 của Sổ tay Quartus II.

Dưới đây là một ví dụ của Verilog-2001 về một khối RAM không đồng bộ nhỏ, ramstyle với bộ thuộc tính tổng hợp để bộ nhớ có thể được triển khai trong khối bộ nhớ MLAB và hành vi đọc trong khi ghi không quan trọng. Nếu không có thuộc tính, thiết kế này yêu cầu thanh ghi 512 và 240 ALUTs. Với thuộc tính, thiết kế yêu cầu 8 ALUT bộ nhớ và chỉ 15 thanh ghi.

module async_ram (
    input   [5:0] addr,
    input   [7:0] data_in,
    input         clk,
    input         write,
    output  [7:0] data_out );
 
   (* ramstyle = "MLAB, no_rw_check" *) reg [7:0] mem[0:63];
 
   assign  data_out = mem[addr];
 
   always @ (posedge clk)
   begin
      if (write)
         mem[addr] = data_in;
   end
endmodule

Các sản phẩm liên quan

Bài viết này áp dụng cho 1 sản phẩm

Thiết bị có thể lập trình Intel®

Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.