【问题标题】:iCE40 Ultra Plus 5k — how to set PLL (without propietary GUI tools) (continued)iCE40 Ultra Plus 5k — 如何设置 PLL(无需专有 GUI 工具)(续)
【发布时间】:2021-06-24 09:30:06
【问题描述】:

question 中,有人建议我使用现有库来测试 iCE40 Ultra Plus 5k 的 PLL。

我买了Icebreaker V1.0e板,它看起来像这样:

外部 12 MHz 振荡器连接到 Lattice iCE40UP5k (封装 SG48)的引脚 35(标记为绿色)

Pin 35 具有功能:IOT_46b_G0,输入:DPIO/GBIN0 并位于 在银行:0)。

当我搜索我上面发布的库时,我在第 98 页找到了一个不错的原语SB_PLL40_PAD。这个原语的描述与 Icebreaker V1.0e 原理图上所做的完全匹配。这是描述:

请注意它与上面的引脚描述匹配!现在,我想在我的 VHDL 中使用它,所以一开始我只为这个原语编写了一个 VHDL 包装器:

-- A:
library ieee;
use ieee.std_logic_1164.all;

-- B:
entity pll_icebreaker is port(
    C1_1: in std_ulogic;
    C1_2: out std_ulogic;
    C1_3: out std_ulogic;
    C1_4: out std_ulogic;
    C1_5: in std_ulogic;
    C1_6: in std_ulogic_vector (6 downto 0);
    C1_7: in std_ulogic;
    C1_8: in std_ulogic;
    C1_9: in std_ulogic
);
end pll_icebreaker;

-- C:
architecture logic_001 of pll_icebreaker is

    -- D:
    component SB_PLL_40_PAD is port (
        PACKAGEPIN: in std_ulogic;
        PLLOUTGLOBAL: out std_ulogic;
        PLLOUTCORE: out std_ulogic;
        LOCK: out std_ulogic;
        EXTFEEDBACK: in std_ulogic;
        DYNAMICDELAY: in std_ulogic_vector (6 downto 0);
        RESETB: in std_ulogic;
        BYPASS: in std_ulogic;
        LATCHINPUTVALUE: in std_ulogic
    );
    end component;

begin

    -- E:
    C1: SB_PLL_40_PAD port map(
        PACKAGEPIN => C1_1,
        PLLOUTGLOBAL => C1_2,
        PLLOUTCORE => C1_3,
        LOCK => C1_4,
        EXTFEEDBACK => C1_5,
        DYNAMICDELAY => C1_6,
        RESETB => C1_7,
        BYPASS => C1_8,
        LATCHINPUTVALUE => C1_9
    );

end architecture logic_001;

现在我尝试使用 makefile 目标 all 编译这个 VHDL 设计(仅使用 FOSS 工具)

# A:
file_main = pll_icebreaker
file_pcf = icebreaker

module_top = pll_icebreaker
entity_top = $(module_top)

####################################################################################################

# B:
all:
    yosys \
        -m ghdl \
        -p "ghdl $(file_main).vhdl -e $(entity_top); write_verilog $(file_main).v"
    yosys \
        -p "synth_ice40 -top $(module_top) -blif $(file_main).blif" \
        $(file_main).v
    arachne-pnr \
        -d 5k \
        -P sg48 \
        -o $(file_main).asc \
        -p $(file_pcf).pcf $(file_main).blif
    icepack $(file_main).asc $(file_main).bin

我的工具链抱怨找不到模块SB_PLL_40_PAD

2.2.1. Analyzing design hierarchy..
Top module:  \pll_icebreaker
ERROR: Module `\SB_PLL_40_PAD' referenced in module `\pll_icebreaker' in cell `\c1' is not part of the design.
make: *** [makefile:81: all] Error 1

怎么会? Lattice 技术库不是在 Yosys 工具中实现的吗?我有点迷茫...我该如何解决这个问题?

【问题讨论】:

    标签: vhdl fpga yosys


    【解决方案1】:

    我好像看不懂。格技术库提SB_PLL40_PAD

    我使用了SB_PLL_40_PAD...所以它当然行不通!现在它编译了!

    所以我从这里开始,以便创建一个很好的 PLL 示例,该示例使用 FPGA 中预先存在的硬件!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-17
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      相关资源
      最近更新 更多