Intel® Quartus® Prime Pro Edition用户指南: 设计建议

ID 683082
日期 9/28/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

1.4.1.2. 避免不受支持的复位和控制条件

为确保在目标器件体系结构中正确实现HDL代码,需避免不受支持的复位条件以及器件体系结构中不存在的控制逻辑。

Intel FPGA存储器模块的RAM数据不能在器件操作期间通过reset信号进行清零。如果HDL代码对RAM数据内容使用reset信号来描述RAM,那么逻辑在普通逻辑单元而不是存储器模块中实现。请不要通过reset信号将RAM读或写操作布局在always模块或者process模块中。要指定存储器内容,请在器件操作期间初始化存储器或将数据写入RAM。

除复位信号外,其他控制逻辑还可防止综合将存储逻辑推断为存储模块。例如,如果在读取地址寄存器上使用时钟使能,那么可以更改RAM的输出锁存器(output latch),从而导致综合的RAM结果与HDL描述不匹配。使用地址暂停(address stall)功能作为读取地址时钟使能,可以避免这种限制。查看FPGA器件的文档,以确保您的代码与器件中可用的硬件匹配。

包含清除RAM数据内容的复位信号的Verilog RAM:在器件体系结构中不支持

module clear_ram
(
	input clock, reset, we,
	input [7:0] data_in,
	input [4:0] address,
	output reg [7:0] data_out
);

	reg [7:0] mem [0:31];
	integer i;

	always @ (posedge clock or posedge reset)
	begin
		if (reset == 1'b1)
			mem[address] <= 0;
		else if (we == 1'b1)
			mem[address] <= data_in;

		data_out <= mem[address];
	end
endmodule