आप कैसे पैक और अनपैक सरणियों काम का एक याद आती है समझ है: यहाँ की कड़ी है। मैं आपको IEEE1800-2012 अनुभाग 7.4.1, 7.4.2, 7.4.4, & 7.4.5 पढ़ने की सलाह देता हूं। तकनीकी रूप से आईईईई 1800 सिस्टम वेरिलोग के लिए है जो वेरिलोग का एक सुपर सेट है। दोनों स्थिर आकार वाले सरणी के लिए समान हैं और मुझे लगता है कि आईईईई 1800 में आईईईई 1364 के बाद बेहतर स्पष्टीकरण और उदाहरण हैं।
आप पहले से ही LRM की एक प्रति की जरूरत नहीं है, तो आप इसे मुक्त करने के लिए ieee.org वेबसाइट पर डाउनलोड कर सकते हैं: IEEE Std 1800-2012
प्रदान की कोड के लिए, आप एक पैक सरणी में प्रत्येक तत्व असाइन नहीं कर सकते इस तरह से। आपके पास दो विकल्प हैं: सरणी के अनपॅक किए गए हिस्से को असाइन करने के लिए फॉर-लूप का उपयोग करें, या अपनी सरणी को डबल पैक करें।
/* Using for-loop */
reg [7:0] FIFO [0:8];
integer i;
[email protected](posedge clk) begin
if(wr & !rd & !full) begin
for(i = 8; i > 0; i=i-i) begin
FIFO[i] <= FIFO[i-1];
end
FIFO[0] <= data_in;
end
end
/* Using double packed array */
reg [0:8] [7:0] FIFO; // NOTE: format and usage explained in IEEE1800-2012 7.4.5
[email protected](posedge clk) begin
if(wr & !rd & !full) begin
FIFO[0:8] <= {data_in,FIFO[0:7]};
end
end
धन्यवाद, आपने मेरा दिन बचाया :)। मैं वास्तव में पैक और अनपॅक किए गए सरणी के बीच का अंतर नहीं जानता था। मैंने लूप के साथ इसे लागू करने के लिए औपचारिक रूप से कोशिश की लेकिन मैंने जेनवर का इस्तेमाल किया। डाउनलोड लिंक के लिए भी धन्यवाद मैं पूछने से पहले एलआरएम देखूँगा :)। – zsidanyi