Altifigence Academy

7 / 37 · अवधारणा

Slice, concatenation और replication की चौड़ाई

जुड़े सिग्नलों की कुल चौड़ाई और मान सुरक्षित रखने की शर्तें निकालकर डेटा पथ बनाएँ।

बिट जोड़कर लगाना अंकगणितीय जोड़ नहीं है

{a,b} में a के बिटों के बाद b के बिट लगाए जाते हैं। चौड़ाइयाँ M और N हों तो परिणाम M+N बिट का है। दोनों operands unsignedunsigned बिट अनुक्रम को गैर-ऋणात्मक पूर्णांक मानने का नियम। n बिट की सीमा 0 से 2^n−1 है और वही बिट signed व्याख्या में अलग मान दे सकते हैं। और पढ़ें बिट क्रम हों, तो संख्यात्मक अर्थ है:

{a,b}=a⋅2N+b\{a,b\}=a\cdot2^N+b

a=2'b10, b=3'b101 पर concatenation का परिणाम 5'b10101 यानी 21 है। यह अंकगणितीय योग 7 से अलग क्रिया है।

a के बिट b की चौड़ाई जितने स्थान ऊपर जाते हैं। Concatenationबिट संयोजन (concatenation) बिट अनुक्रमों को एक के बाद एक जोड़ना। परिणाम की चौड़ाई operands की चौड़ाइयों का योग है; यह संख्याओं के अंकगणितीय जोड़ से अलग है। को a+b नहीं, a×2³+b पढ़ें।

बिट संयोजन और अंकगणितीय जोड़
  1. a = 10: चौड़ाई 2 बिट, पूर्णांक 2
  2. b = 101: चौड़ाई 3 बिट, पूर्णांक 5
  3. {a,b} = 10101: चौड़ाई 5 बिट, 2×8+5=21

व्यंजक के पास उसकी चौड़ाई लिखें

SystemVerilog
logic [7:0] word;
logic [3:0] upper, lower;
logic [7:0] swapped;
assign upper = word[7:4];
assign lower = word[3:0];
assign swapped = {lower, upper};

8'hA3 देने पर swapped=8'h3A होता है। Sliceस्लाइस वेक्टर से लगातार बिटों की सीमा चुनना। चुनी हुई सीमा परिणाम की चौड़ाई और बिट क्रम तय करती है। सीमा एक स्थान गलत होने से चौड़ाई या मान बदल जाता है। मूल वेक्टर signed होने पर भी part-select कुछ संदर्भों में अलग unsigned मान माना जाता है; signed गणना से पहले उसका अर्थ दोबारा जाँचें।

चिह्न विस्तार और बार-बार concatenation

SystemVerilog
logic signed [3:0] small;
logic signed [7:0] extended;
assign extended = {{4{small[3]}}, small};

चिह्न बिट की चार प्रतियाँ और मूल चार बिट मिलकर आठ बिट बनते हैं। Sign extension MSBMSB सबसे अधिक स्थानिक भार वाला बिट। उसका इंडेक्स वेक्टर की घोषणा की दिशा पर निर्भर है; उसे हमेशा सबसे बड़ा इंडेक्स न मानें। और पढ़ें=1 होने पर अंकगणितीय रूप से 1 जोड़ना नहीं है। यह बिट विन्यास की चौड़ाई इस तरह बढ़ाता है कि व्याख्यायित मान सुरक्षित रहे।

q[N-2:0] वाले सामान्य shift परिपथ में N=1 पर range मान्य नहीं रहती। न्यूनतम समर्थित चौड़ाई सीमित करें या generate शाखा से N=1 को अलग संभालें। केवल संख्याओं की जगह चर रखने से parameterization पूरा नहीं होता।

खुद आज़माएँ

a तीन-बिट 101 और b दो-बिट 11 है। {a,b} की चौड़ाई और मान क्या हैं? इसे चार बिटों में रखने पर क्या बचेगा?

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

चौड़ाई पाँच बिट, बिट क्रम 10111 और मान 5⋅4+3=235\cdot4+3=23 है। चार बिटों में रखने पर ऊपरी बिट हटता है और 0111, यानी 7 बचता है।

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