网站w3c标准,网站名称需要备案吗,慧聪网登录,场所码小程序怎么做由于项目中关于厂商提供的温度-偏压曲线数据已经被同事放在ROM表了#xff0c;我这边可用直接调用。 今天在仿真的时候#xff0c;发现他的ROM表用的IP核是及时输出的#xff0c;就是你地址给进去#xff0c;对应地址的ROM数据就立马输出#xff0c;没有延迟。 我打开他的… 由于项目中关于厂商提供的温度-偏压曲线数据已经被同事放在ROM表了我这边可用直接调用。 今天在仿真的时候发现他的ROM表用的IP核是及时输出的就是你地址给进去对应地址的ROM数据就立马输出没有延迟。 我打开他的IP核配置一看他用的是Distributed Memory Generator。 我以前用的是Block Memory Generator是要延迟一拍的。所以我立马进行了Distributed Memory Generator的测试。 1 ROM IP核配置 Distributed Memory Generator IP核已生成 老规矩查看如何例化 2 ModelSim仿真测试
源码
timescale 1ns / 1psmodule lab_rom(input wire clk,input wire rst_n
);//
// Parameter define
//
parameter MAX_ADDR 32 - 1;//
// Internal Signals
//
(* MARK_DEBUGtrue *) reg [4:0] a;
(* MARK_DEBUGtrue *) wire [15:0] spo;//----------------------------- addra自增 -----------------------------
always (posedge clk or negedge rst_n) beginif (rst_n 1b0) begina d0; endelse if(a MAX_ADDR)begina d0;endelse begina a 1b1;end
end//----------------------------- s_rom_32x16b例化 -----------------------------
s_rom_32x16b u1_rom_32x16b (.a(a), // input wire [4 : 0] a.spo(spo) // output wire [15 : 0] spo
);仿真代码
timescale 1ns/1ps
module tb_lab_rom (); /* this is automatically generated */// clockreg clk;initial beginclk 1b0;forever #(10) clk ~clk;end// asynchronous resetreg rst_n;initial beginrst_n 1b0;#10rst_n 1b1;end// (*NOTE*) replace reset, clock, othersparameter MAX_ADDR 32 - 1;lab_rom #(.MAX_ADDR(MAX_ADDR)) inst_lab_rom (.clk(clk), .rst_n(rst_n));endmodule约束文件
create_clock -period 20.000 [get_ports clk]set_property PACKAGE_PIN N18 [get_ports clk]
set_property PACKAGE_PIN T12 [get_ports rst_n]set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]仿真结果 从仿真来看确实用Distributed Memory Generator生成的ROM IP核是无延迟的。
3 在线调试
在线调试的ILA步骤我这里就不赘述了。 我直接给出结果。 总得来讲Distributed Memory Generator虽然深度必须是16的倍数但其生成的ROM IP核输出是无延迟的真香