仅对英特尔可见 — GUID: mwh1409959582038
Ixiasoft
1.4.1.1. 使用同步的存储器模块
1.4.1.2. 避免不受支持的复位和控制条件
包含清除RAM数据内容的复位信号的Verilog RAM:在器件体系结构中不支持
1.4.1.3. 检查Read-During-Write行为
1.4.1.4. 控制RAM推断和实现
1.4.1.5. 具有旧数据Read-During-Write行为的单时钟同步RAM
1.4.1.6. 具有新数据Read-During-Write行为的单时钟同步RAM
1.4.1.7. 简单双端口,双时钟同步RAM
1.4.1.8. 真双端口同步RAM
1.4.1.9. 混合宽度双端口RAM
1.4.1.10. 带Byte-Enable信号的RAM
1.4.1.11. 上电时指定初始存储器内容
仅对英特尔可见 — GUID: mwh1409959582038
Ixiasoft
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
相关信息