Altifigence Academy

14 / 24 · अवधारणा

एक स्थान वाला लचीला रजिस्टर डिज़ाइन करें

खाली स्थान में इनपुट स्वीकार करें या उसी समय उपयोग हुए आइटम का स्थान लें।

उपलब्ध भंडारण से ready निकालें

एक स्थान वाले बफ़र में full बिट और पेलोड रजिस्टर होता है। खाली होने पर वह प्राप्तकर्ता स्टॉल होने पर भी इनपुट स्वीकार कर सकता है। भरा होने पर उसी किनारे पर मौजूदा आउटपुट उपयोग होने से उसका प्रतिस्थापन स्वीकार कर सकता है। इसलिए input-ready, !full OR output-ready है और output-valid, full है। इस रजिस्टर वाले बफ़र में डेटा संयोजी रूप से सीधे पार नहीं होता।

input-ready उच्च हो तो अगला full, input-valid के बराबर है। इनपुट होने पर पेलोड कैप्चर करें; नहीं हो तो स्थान खाली करें। input-ready निम्न हो तो full और पेलोड बनाए रखें। केवल आउटपुट स्थानांतरित होने पर full साफ़ करने से साथ में आया प्रतिस्थापन खो जाता है। केवल input-valid पर कैप्चर करना भरे, स्टॉल किए स्थान को अधिलेखित करता है।

SystemVerilog
module elastic_byte (
  input logic clk, rst,
  input logic in_valid,
  output logic in_ready,
  input logic [7:0] in_data, in_tag,
  output logic out_valid,
  input logic out_ready,
  output logic [7:0] out_data, out_tag
);
  logic full;
  assign in_ready = !full || out_ready;
  assign out_valid = full;
  always_ff @(posedge clk) begin
    if (rst) full <= 1'b0;
    else if (in_ready) begin
      full <= in_valid;
      if (in_valid) begin
        out_data <= in_data;
        out_tag <= in_tag;
      end
    end
  end
endmodule
पुराना fullout-readyin-validक्रिया
001इनपुट संग्रहीत करें
101इनपुट अस्वीकार करें और आउटपुट रखें
111पुराना आइटम दें और प्रतिस्थापन रखें
110पुराना आइटम दें और स्थान खाली करें

किनारा 0 पर tag0,y9 रखें। किनारा 1 पर स्टॉल करें। किनारा 2 पर tag0 उपयोग करें और tag1,y12 रखें; स्थान भरा रहता है। किनारा 3 पर tag1 उपयोग करें और इनपुट नहीं हो तो खाली करें। प्रतिस्थापन से प्रति चक्र एक लेनदेन संभव होता है।

कई चरण जोड़ने से पीछे की ओर संयोजी ready पथ बनता है। ready को रजिस्टर में रखने के लिए अतिरिक्त भंडारण चाहिए जो स्टॉल सूचना प्रभावी होने से पहले पहुँचने वाली वस्तुएँ रख सके। बस के विशिष्ट संयोजी पथ प्रतिबंध अलग जाँचें। पेलोड चौड़ाई कुछ भी हो, डेटा और सभी साथ के फ़ील्ड एक ही शर्त पर रखें और अपडेट के चारों मामले सत्यापित करें।

खुद आज़माएँ

full=1, out-ready=1 और in-valid=1 वाले किनारे पर tag7 उपयोग होता है और tag8 प्रस्तुत है। अगला full और out-tag क्या है? हर उपयोग पर full साफ़ करने से क्या गलत होगा?

व्याख्या पढ़ें

Input-ready उच्च है, इसलिए tag8 रखें और full=1 बनाए रखें। Out-tag का मान 8 होता है। हर बार full साफ़ करने से स्वीकार किया tag8 खो जाता है।

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।