棒上有一个12MHz的振荡器。 http://www.latticesemi.com/icestick
我已设法编写verilog代码来将此时钟分频,闪光LED为1Hz。 (我刚开始学习verilog。)
我相信这款FPGA可以在高达133MHz的频率下工作。
有没有办法从12MHz振荡器产生更快的时钟信号(以verilog为单位)?
答案 0 :(得分:1)
答案尚未经过测试。
通过https://www.reddit.com/r/yosys/comments/3yrq6d/are_plls_supported_on_the_icestick_hw/
来自:https://github.com/SubProto/icestick-vga-test/blob/master/vga.v
wire clk;
SB_PLL40_CORE #(.FEEDBACK_PATH("SIMPLE"),
.PLLOUT_SELECT("GENCLK"),
.DIVR(4'b0001),
.DIVF(7'b1000010),
.DIVQ(3'b100),
.FILTER_RANGE(3'b001),
) uut (
.REFERENCECLK(pclk),
.PLLOUTCORE(clk),
.LOCK(D5),
.RESETB(1'b1),
.BYPASS(1'b0)
);
此外:
iCE40 sysCLOCK PLL iCE40锁相环(PLL)提供各种用户可合成的时钟频率,以及cus- 可以在软件宏的帮助下配置和使用iCE40器件中的PLL PLL模块发生器。 PLL模块生成器实用程序可帮助用户快速配置所需的设置 借助GUI并生成配置PLL宏的Verilog代码。图2显示了iCE40系统 CLOCK PLL框图。
答案 1 :(得分:0)
我已经使用更高的时钟频率在使用TinyFPGA BX的VGA显示器中显示乒乓游戏。 TinyFPGA BX和莱迪思iCEstick非常相似。因此,我想分享我的代码。您可能需要使用官方的莱迪思软件来简化GUI(图形用户界面)的配置。 https://www.latticesemi.com/software
module top(
input wire clk_16,
output USBPU
);
assign USBPU = 0; // drive USB pull-up resistor to '0' to disable USB
output wire;
SB_PLL40_CORE #(
.FEEDBACK_PATH("SIMPLE"),
.DIVR(4'b0000), // DIVR = 0
.DIVF(7'b0110001), // DIVF = 49
.DIVQ(3'b101), // DIVQ = 5
.FILTER_RANGE(3'b001) // FILTER_RANGE = 1
) uut (
.LOCK(locked),
.RESETB(1'b1),
.BYPASS(1'b0),
.REFERENCECLK(clk_16), // clk_16_MHz is the original clock
.PLLOUTCORE(clk) // clk is the modified clock with higher frequency
);