Verilog HDL Parameter RAM พร้อมพอร์ตอินพุตและเอาต์พุตแยก

author-image

โดย

ตัวอย่างนี้แสดงวิธีสร้างอินสแตนซ์บล็อกหน่วยความจําโดยใช้ฟังก์ชัน LPM lpm_ram_dq variable ram ใช้ฟังก์ชัน lpm_ram_dq จากไลบรารี LPM จะมีการกําหนดพอร์ตในขั้นต้นแล้วแมปกับพอร์ต LPM ตามที่แสดงเป็นข้อความสีแดง จากนั้นค่าพารามิเตอร์จะถูกส่งผ่านด้วย defparam คําสําคัญ ในตัวอย่างนี้ บล็อก 16 x 256 RAM จะถูกสร้างอินสแตนซ์ คุณสามารถใช้กระบวนการที่คล้ายกันเพื่อสร้างอินสแตนซ์บล็อก RAM ในขนาดอื่นๆ

พารามิเตอร์ lpm_file หมายถึง Memory Initialization File (.mif) ที่ระบุเนื้อหาเริ่มต้นของบล็อกหน่วยความจํา (RAM หรือ ROM) MIF เป็นไฟล์ข้อความ ASCII สามารถสร้างได้ด้วยตนเองหรือบันทึกจากผลลัพธ์ของการจําลอง ใน MIF คุณต้องระบุค่าความลึกและความกว้างของหน่วยความจํา และอาจไม่สามารถระบุรังสีที่ใช้ในการแสดงและตีความที่อยู่และค่าข้อมูลได้ ค่าเหล่านี้จะแสดงเป็นข้อความสีแดงในสารสกัดจากไฟล์ตัวอย่าง map_lpm_ram.mifซึ่งรวมอยู่ในส่วนด้านล่าง MIF ถูกใช้เป็นไฟล์อินพุตสําหรับการเตรียมใช้งานหน่วยความจําใน MAX+PLUS II Compiler and Simulator

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ตัวอย่างนี้ในโครงการของคุณ ให้ไปที่:

วิธีการใช้ตัวอย่าง Verilog HDL ›

RAMveri.v

// instantiation of lpm_ram_dq, 16-bit data, 256 address location

module map_lpm_ram (dataout, datain, addr, we, inclk, outclk);

// port instantiation

input   [15:0] datain;
input   [7:0] addr;
input   we, inclk, outclk;

output  [15:0] dataout;

// instantiating lpm_ram_dq

lpm_ram_dq ram (.data(datain), .address(addr), .we(we), .inclock(inclk), 
                .outclock(outclk), .q(dataout));

// passing the parameter values

defparam ram.lpm_width = 16;
defparam ram.lpm_widthad = 8;
defparam ram.lpm_indata = "REGISTERED"
defparam ram.lpm_outdata = "REGISTERED"
defparam ram.lpm_file = "map_lpm_ram.mif"

endmodule

 

ดึงข้อมูลจากไฟล์ MIF

ดาวน์โหลด map_lpm_ram.mif

WIDTH = 16;
DEPTH = 256;

ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;

CONTENT BEGIN
   0   :   ffff;
   1   :   0000;
   2   :   bbf3;
   3   :   0000;
   4   :   0000;
   .
   .
   .
   fb   :   0000;
   fc   :   0000;
   fd   :   0000;
   fe   :   0000;
   ff   :   0000;
END;

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้