2009-03-10 17 views
12

अचानक, मुझे कुछ verilog testbench कोड देखने के लिए बनाया गया है जो भारी रूप से $ readmemh और $ nameememh का उपयोग करता है। मुझे समझ में आया कि यह मूल रूप से स्मृति को पढ़ता है और स्मृति को लिखता है। अगर आप उन दिनचर्या से संबंधित कुछ संसाधनों को इंगित कर सकते हैं तो मैं खुश रहूंगा। पीएस: मैंने सफलता के लिए Google में खोज की। (मैं बहुत ... Verilog के लिए बहुत नया हूँ)

+1

फिर आप कठिन पर्याप्त खोज नहीं कर रहे हैं! "Readmem ट्यूटोरियल" जैसे कुछ खोजने की कोशिश करें। आपके सिम्युलेटर के लिए प्रलेखन में भी उपयोगी जानकारी होनी चाहिए। – Marty

+0

@ मार्टी, जब मैंने Google में "रीडमेम ट्यूटोरियल" की खोज की, तो यह SO पृष्ठ सबसे अच्छा हिट है ... ;-))) – Alphaneo

+1

एक निःशुल्क आईईईई स्टडी 1800-2012 अब उपलब्ध है: सेक्शन 21.4 "मेमोरी सरणी डेटा लोड हो रहा है एक फाइल ", आदि – toolic

उत्तर

17

मैं सहमत हूं कि readmem/articleemem के बारे में कुछ ढूंढना बहुत आसान नहीं है। आप यहाँ एक छोटा सा पा सकते हैं: वैसे भी इन कार्यों के बारे में कहने के लिए बहुत ज्यादा नहीं है http://fullchipdesign.com/index_files/readmemh.htm

, वाक्य रचना है:

$readmem[hb]("File",ArrayName,StartAddr,EndAddr) 
$writemem[hb]("File",ArrayName,StartAddr,EndAddr) 

Verilog फ़ाइल स्वरूप के बारे में बहुत picky है, बिट की संख्या टेक्स्ट फ़ाइल में सरणी में बिट्स की संख्या से मेल खाना पड़ेगा।

मैं आपको एक सरणी को परिभाषित करके थोड़ा सा खेलता हूं, इसे डेटा के साथ भरकर इसे लिखने के साथ लिखता हूं और इसे बाद में प्रिंट करता हूं।

ऐसा कुछ आपको शुरू करना चाहिए (कोशिश नहीं की गई!)।

integer i; 
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries 

initial begin 
    for (i=0; i<16; i++) begin 
     memory = i; 
    end 
    $writememb("memory_binary.txt", memory); 
    $writememh("memory_hex.txt", memory); 
end 

चीयर्स!

0

हेक्स फ़ाइल पढ़ना इस तरह काम करेगा:

integer i; 
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries 

initial begin 
    for (i=0; i<16; i++) begin 
     memory = i; 
    end 
    $readmemh("memory_binary.txt", memory); 

end