2010-12-01 7 views
8

मैं एक एफपीजीए पर एक माइक्रोकंट्रोलर को लागू करने की कोशिश कर रहा हूं, और मुझे इसे अपने कार्यक्रम के लिए रोम देना होगा। अगर मैं $ readmemb का उपयोग करता हूं, तो क्या वह रोम में सही ढंग से संश्लेषित होगा? यदि नहीं, तो ऐसा करने का मानक तरीका क्या है?

उत्तर

15

मैं जॉर्ज के जवाब में संशोधन करने के लिए संशोधन करता हूं कि यह संश्लेषण उपकरण पर निर्भर करता है चाहे $readmemb संश्लेषित है या नहीं।

Altera के Recommended HDL Coding Styles गाइड उदाहरण 10-31 शामिल (पेज 10-38), जो एक ROM $readmemb से अनुमान लगाया दर्शाता है (नीचे reproduced):

module dual_port_rom (
    input [(addr_width-1):0] addr_a, addr_b, 
    input clk, 
    output reg [(data_width-1):0] q_a, q_b 
); 
    parameter data_width = 8; 
    parameter addr_width = 8; 
    reg [data_width-1:0] rom[2**addr_width-1:0]; 
    initial // Read the memory contents in the file 
      // dual_port_rom_init.txt. 
    begin 
     $readmemb("dual_port_rom_init.txt", rom); 
    end 
    always @ (posedge clk) 
    begin 
     q_a <= rom[addr_a]; 
     q_b <= rom[addr_b]; 
    end 
endmodule 

इसी तरह, Xilinx है XST User Guide कहा गया है कि:

$readmemb और $readmemh सिस्टम कार्यों का उपयोग ब्लॉक यादों को प्रारंभ करने के लिए किया जा सकता है। अधिक जानकारी के लिए देखें:

हेक्साडेसिमल प्रतिनिधित्व के लिए द्विआधारी और $readmemh के लिए एक बाहरी फ़ाइल से रैम आरंभ किया जा रहा कोडिंग उदाहरण

उपयोग $readmemb। XST और सिम्युलेटर व्यवहार के बीच संभावित अंतर से बचने के लिए, Xilinx® अनुशंसा करता है कि आप इन सिस्टम कार्यों में अनुक्रमणिका पैरामीटर का उपयोग करें। निम्नलिखित कोडिंग उदाहरण देखें।

$readmemb("rams_20c.data",ram, 0, 7);

+1

mrkj के जवाब मेरा तुलना में काफी बेहतर है। मैंने इसे हटा दिया है। – George

संबंधित मुद्दे