IORDIORD一:新建一个FPGA工程
1.
2.
3.
4.
5.
6. 核心FPGA芯片:选用256个管脚的FPGA芯片Cyclone IV EP4CE6F17C8
7.
8.
9.
10.
10.
11. 保存为test.v,注意要和module的名字一样。为保证正常的现象,需要将没有用到的芯片管脚设置为三态输入,同时将复用的管脚设置为普通IO口。
module test
(
input clk,
input rst_n,
output reg [7:0] LED
);
parameter T_2S=25'd24000000;
reg [24:0] Cnt;
always @(posedge clk,negedge rst_n) begin
if(!rst_n) begin
LED<=8'b1111_1110;
Cnt<=25'd0;
end
else if(Cnt==(T_2S-25'd1)) begin
Cnt<=0;
LED<={LED[6:0],LED[7]};
end
else begin
Cnt<=Cnt+1'b1;
LED<=LED;
end
end
endmodule
12.查看新建的.v文件
13.
14.
15.
16.
17.预编译
18. 编译完成
19.分配引脚
20.
21.全编译
22.烧写.sof文件
23.
24.烧写成功
二:添加PLL时钟信号
在Quartus Prime中要在IP核中找到pll核,才能进行时钟添加。
双击IP catalog,得到下图界面,点击ALTPLL
接下来配置时钟发生器
以下是通用步骤。
step1 这里我新建一个名为PLL的工程如下所示,准备调用一个PLL核
step2 点击菜单栏上的TOOls下拉菜单中的魔法棒
step3 在弹出的对话框中点击Next
step4 这里我们选择输出文件类型选择为Verilog HDL,输出IP核名称为PLL_out,单击I/0下拉选择ALTPLL。
(注意:这里我的工程名为PLL所以起的PLL核的名称不能和工程名一样所以我的PLL核的名称为PLL_out)
step5 填写PLL核的输入时钟,这里我的开发板的输入时钟是50M,点击Next
step6 在弹出的对话框中PLL核默认勾选了复位和输出使能,我这里不需要用到
将这两个勾选都去掉(如果工程里面要用到也可以勾选),点击Next
step7 点击Next
step8 点击Next
step9 点击Next
step10 在弹出的对话框中选择为1倍频、50分频、占空比为百分之50,我这里
输入是50M所以50分频输出也就是1M,点击Next
step11 一直点击Next,直到summary(从上图可以看出我们这个开发板
有5个PLL核分别为clkc0,、clkc1、clkc2、clkc3、clkc4,但我们
只用到1个所以设置其它的4个PLL核都一直Next跳过没有进行设置,
如果你要多添加几个PLL核设置方法和clkc0的设置方法是一样的)。
step12 我们要调用这个PLL核勾选选择输出PLL_out_inst.v文件,然后点击Finish
step 13 PLL核设置完成后点击工具栏上的打开或者File->open
step14 打开我们建的PLL工程,找到我们设置PLL核所输出的PLL_out_inst.v文件点击打开按钮
step15 打开的文件如下图所示,将这个文件里的PLL_out核复制到我们工程PLL中
step16 PLL_out核复制到我们的PLL工程里如下图所示
step17 这里我将PLL的例化名称改为u1(也可以不更改使用默认名称),填写输入
时钟i_clk,以及输出口,我这里直接将PLL核的输出时钟连接到了输出口上
i_clk接FPGA上的晶振输出,查FPGA手册可以得到。
软核的input 与output 与普通模型(module)接口写的方式不同吗?
是相同的,最终还是需要晶振输入时钟信号。
step18 编译工程分配引脚用逻辑分析仪看输出时钟是否是1M,从下图可以看出输出频率和PLL分频的频率一致
|