SOC FPGA论坛首页-ChipDebug-第5页

国产安路 RAM 加载 .mif文件 加载不进去出现 there is an error in the mif ,please select the correct.-ChipDebug
热门评论
ICMaker的头像-ChipDebugICMaker徽章-资深玩家-ChipDebug等级-LV3-ChipDebug版主3
这个比较简单,就不专门出教程了,我给你贴代码进行说明。 我们提供的DEMO4同时提供了OSC和PLL的用法示便。 评论图片-ChipDebug 1. ELF2 器件包含一个 CMOS 环形振荡器, 环形振荡器的输出可以作为全局时钟的输入, 也可以作为 PLL的参考时钟。 环形振荡器在全局时钟路径上, 插入的可配置分频器可以对 OSC 的频率进行 1-128 任意整数分频。 可以动态配置分频系数, 不使用时可以关闭 OSC 以节省功耗。环形振荡器中心频率 287MHz, 芯片个体之间频率误差较高, 误差范围达到 30%。 即 每一片EF2之间的频率可能在这个频率附近30%范围内,但可以校准。

	EF2_PHY_OSCDIV inst(
	.rstn(1), //复位,高有效
	.stdby(0), // 休眠,高有效
	.div(7'b000_0100), //分频系数
	.clko(clko)); //出来的时钟
它有一些注意事项: 1. OSC、 OSCDIV 输出可以接 PLL, 但不能直接 Fabric, 可以通过 GCLK 连接到 Fabric。 2. ELF2系列器件不建议使用OSC+PLL的组合方式, 建议使用内部的EF2_PHY_OSCDIV (rstn, stdby, div,clko)。我们的示例工程就是这么个用法。 3. OSC 输出时钟最大偏差在 30%以内, 对时钟精度要求较高的场景不建议使用。 2. 关于PLL的例化其实没有什么要说的,其实在我们的很多demo中都有PLL的用法, PLL的端口例表如下: 评论图片-ChipDebug 比较简单的如下:

	PLL u_pll(
		.refclk  ( clk_osc    ),  
		.reset   ( ~cnt_rst[7] ), 
		.psclk   ( clk_osc    ), 
		.psdown  ( S_psdown   ),
		.psstep  ( S_psstep   ),
		.psclksel( S_psclksel ),
		.extlock (            ),
		.psdone  ( S_psdone   ),
		.clk0_out( O_clk0     ),
		.clk1_out( O_clk1     )

);
而Demo4中的PLL代码由于进行了动态调相,所以看起来相对复杂。

wire clk_osc;
wire clko;
OSC_DIV u_oscdiv(.rstn(1), .stdby(0), .div(7'b000_0100), .clko(clko)); //58.47M

EF2_LOGIC_BUFG BUFG_inst(
.o(clk_osc),
.i(clko)
);

reg [7:0] rst_cnt;
always @(posedge clk_osc) if (!rst_cnt[7]) rst_cnt <= rst_cnt + 1'b1;

wire sys_rst_n;
wire clk100m, clk50m, clk12m;
osc_pll u_osc_pll(
        .refclk(clko),
        .reset(~rst_cnt[7]),
        .stdby(0),
        .extlock(sys_rst_n),
        .clk0_out(clk100m),
        .clk1_out(clk50m),
        .clk2_out(clk12m));
相较于上面主要是下面这几个端口的区别: 评论图片-ChipDebug
热门评论
chipdebug的头像-ChipDebugchipdebug徽章-创作大使-ChipDebug等级-LV3-ChipDebug超级版主2
后面注意代码格式化输出才方便别人看,向别人提问时自己都不愿意花时间整理一下问题,别人又怎么会愿意花时间回答你的问题?
【闲聊】这论坛活跃度不怎么高啊?不是说最热门的FPGA论坛吗?-ChipDebug

首先目录下的inst1_eval.do文件

LATTICE ECP5 FPGA DDR3 MEMORY CONTROL 控制器 如何仿真?

注意下面的路径以及diamond的版本改为你自己的

LATTICE ECP5 FPGA DDR3 MEM CTRL 控制器 如何仿真?

然后启动modelsim键入以下命令进入仿真所在目录,注意替换成你对应的目录

LATTICE ECP5 FPGA DDR3 MEMORY CONTROL 控制器的仿真步骤1

然后键入以下命令运行仿真

LATTICE ECP5 FPGA DDR3 MEMORY CONTROL 控制器的仿真步骤2

可以看到仿真波形以及输出的调试信息

LATTICE ECP5 FPGA DDR3 MEMORY CONTROL 控制器的仿真步骤3

LATTICE ECP5 FPGA DDR3 MEMORY CONTROL 控制器的仿真步骤4