Intel® Hyperflex™ 体系结构高性能设计手册

ID 683353
日期 10/04/2021
Public
文档目录

2.4.2.9.3. Intel® Hyperflex™ 体系结构简单双端口存储器示例

使用两个简单的双端口存储器可以将器件中的M20K模块的使用率翻倍。然而,此存储器结构可以在高达1 GHz的频率上运行。当在 Intel® Hyperflex™ 体系结构FPGA中使用包括独立时钟的真双端口存储器时,此频率是不可能的。

图 74. 简单双端口存储器实现

通过推断RTL中的简单双端口存储器可以实现类似的频率结果,而不是通过 英特尔® Quartus® Prime IP parameter editor中的实例来实现类似的频率结果。

简单双端口RAM接口

module simple_dual_port_ram_with_SDPs
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=6)
(
		input [(DATA_WIDTH-1):0] wrdata,
		input [(ADDR_WIDTH-1):0] wraddr, rdaddr,
		input we_a, wrclock, rdclock,
		output reg [(DATA_WIDTH-1):0] q_a
);

// Declare the RAM variable
reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0];

always @ (posedge wrclock)
begin
		// Port A  is for writing only
		if (we_a)
		begin
		ram[wraddr] <= wrdata;
		end
end

always @ (posedge rdclock)
begin
// Port B is for reading only
begin
q_a <= ram[rdaddr];
end
end
endmodule

真双端口RAM行为仿真

module test (wrdata, wraddr, rdaddr_a, rdaddr_b, 
	clk_a, clk_b, we_a, q_a, q_b);
	
	input [7:0] wrdata;
	input clk_a, clk_b, we_a;
	input [5:0] wraddr, rdaddr_a, rdaddr_b;
	output [7:0] q_a, q_b;
	
	simple_dual_port_ram_with_SDPs myRam1 (
		.wrdata(wrdata),
		.wraddr(wraddr),
		.rdaddr(rdaddr_a),
		.we_a(we_a),
		.wrclock(clk_a), .rdclock(clk_b),
		.q_a(q_a)
		);

	simple_dual_port_ram_with_SDPs myRam2 (
		.wrdata(wrdata),
		.wraddr(wraddr),
		.rdaddr(rdaddr_b),
		.we_a(we_a),
		.wrclock(clk_a), .rdclock(clk_a),
		.q_a(q_b)
		);
		
endmodule