verilog में $size
और $bits
ऑपरेटर के बीच क्या अंतर है? यदि मेरे पास चर हैं, [9:0]a
, [6:0]b
, [31:0]c
।
c <= [($size(a)+$size(b)-1]-:$bits(b)];
उपरोक्त अभिव्यक्ति से 'सी' पर आउटपुट क्या होगा?
verilog में $size
और $bits
ऑपरेटर के बीच क्या अंतर है? यदि मेरे पास चर हैं, [9:0]a
, [6:0]b
, [31:0]c
।
c <= [($size(a)+$size(b)-1]-:$bits(b)];
उपरोक्त अभिव्यक्ति से 'सी' पर आउटपुट क्या होगा?
$size
आयाम में तत्वों की संख्या वापस करेगा, जो $high - $low + 1
के बराबर है। यह आयाम के सापेक्ष है, न केवल बिट मायने रखता है। यदि प्रकार 1 डी पैक सरणी या अभिन्न प्रकार है, तो यह $bits
के बराबर है।
$bits
सिस्टम फ़ंक्शन बिट स्ट्रीम के रूप में अभिव्यक्ति को पकड़ने के लिए आवश्यक बिट्स की संख्या देता है।
$bits ([expression|type_identifier])
यह 0 लौटाता है जब गतिशील रूप से आकार के साथ वर्तमान में खाली होता है। $bits
सिस्टम फ़ंक्शन का उपयोग गतिशील रूप से आकार के पहचानकर्ता के साथ सीधे करने में त्रुटि है।
मुझे आपके प्रश्न, c <= [($size(a)+$size(b)-1]-:$bits(b)];
के बारे में कोई जानकारी नहीं है। क्या यह आरएचएस में वैध अभिव्यक्ति है? क्या आप सरणी रेंज अभिव्यक्ति, [n +: m]
या [n -: m]
के बारे में बात कर रहे हैं?
$size()
एकल आयाम के लिए बिट्स की संख्या देता है। $bits()
पूरी तरह से चर का प्रतिनिधित्व करने के लिए बिट्स की संख्या देता है।
उदाहरण के लिए:
reg [9:0] a;
reg [9:0] b [5:0];
initial begin
$display("a Size ", $size(a));
$display("a Bits ", $bits(a));
$display("b Size ", $size(b));
$display("b Bits ", $bits(b)) ;
end
देता है:
a Size 10
a Bits 10
b Size 6 // Depth of memory
b Bits 60 // Width * Depth
अपने मामले में आप सिर्फ 1 आयामी सरणी, नहीं यादें या structs तो $size()
और $bits()
है एक ही बात होगी।
'$ आकार (ए)' = 10, '$ आकार (बी) = 7',' $ बिट्स (बी) '= 7:' सी <= x [17-1-: 7] 'ये सभी हैं मानक प्रकार तो '$ बिट्स 'और' $ आकार' समान होंगे। – Morgan
आप सही हैं। लेकिन मुझे एहसास नहीं है कि 'c <= [17 + 7-1] -: 7] के लिए एक टाइपो या असली इरादा है;' – jclin
आह हाँ, टाइपो 17 + 7-1। यह भी ध्यान रखें कि प्रश्न में कोई चर नहीं है, यह केवल एक सीमा है, इसलिए यह वैध verilog नहीं है। – Morgan