इस ऑपरेटर को वेरिलॉग में "+:" कहा जाता है


14

मैं verilog परीक्षण के मामले से गुजर रहा हूं और एक बयान पाया

assign XYZ = PQR_AR[44*8 +: 64];

क्या "+:" ऑपरेटर के रूप में जाना जाता है। मैंने इसे Google पर खोजने की कोशिश की लेकिन कोई प्रासंगिक उत्तर नहीं मिला।

जवाबों:


23

उस वाक्यविन्यास को अनुक्रमित भाग-चयन कहा जाता है । पहला शब्द थोड़ा ऑफसेट है और दूसरा शब्द चौड़ाई है। यह आपको ऑफसेट के लिए एक चर निर्दिष्ट करने की अनुमति देता है, लेकिन चौड़ाई स्थिर होनी चाहिए।

SystemVerilog 2012 LRM से उदाहरण:

logic [31: 0] a_vect;
logic [0 :31] b_vect;

logic [63: 0] dword;
integer sel;

a_vect[ 0 +: 8] // == a_vect[ 7 : 0]
a_vect[15 -: 8] // == a_vect[15 : 8]
b_vect[ 0 +: 8] // == b_vect[0 : 7]
b_vect[15 -: 8] // == b_vect[8 :15]

dword[8*sel +: 8] // variable part-select with fixed width

3

अंत में मुझे इसके लिए सोर्स पेज मिला, इसे इंडेक्सेड वेक्टर पार्ट सिलेक्ट ("+:") कहा जाता है

इसे थोड़ा और समझाने के लिए

PQR_AR[44*8 +: 64];

अनुक्रमित वेक्टर भाग चयन के साथ, जो कि वेरिलोग 2000 में जोड़ा गया है, आप बस का एक हिस्सा चुन सकते हैं और फिर पूरी बस का चयन कर सकते हैं।

४४ * 64 भाग, पार्ट सेलेक्ट चर का बिंदु शुरू कर रहा है और ६४ भाग सेलेक्ट और एंडिस की चौड़ाई है। इसका मतलब यह है कि अगर शुरू में हमने इसका संकलन किया है

input [415:0] PQR;

हम PQR का उपयोग करते हुए एक विशेष भाग का चयन कर रहे हैं

PQR_AR[44*8 +: 64];

यह PQR_AR [352+: 64] है या इसका मतलब है कि हम 0 से 415 में से 352 से 415 तक का हिस्सा ले रहे हैं।


LRM से प्राप्त ड्विकल उत्तर से, जब हम एक बस को इनिशियलाइज़ करते हैं जैसे: इनपुट [415: 0] PQR; फिर, PQR_AR [44 * 8 +: 64] PQR_AR [352: 288] होनी चाहिए और PQR_AR [415: 352] नहीं। कृपया मुझे सही करें अगर मैं गलत दिशा में जा रहा हूं।
एबीएक्स

@ABX मैं दिशा के बारे में सहमत हूं, सिवाय इसके कि PQR_AR होना चाहिए [352: 289] 64 बिट वाइड बस होने के लिए
पेटर्ब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.