iCE40 Ultra Plus 5k-如何设置PLL(没有专业GUI工具)(续) [英] iCE40 Ultra Plus 5k — how to set PLL (without propietary GUI tools) (continued)

查看:21
本文介绍了iCE40 Ultra Plus 5k-如何设置PLL(没有专业GUI工具)(续)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我买了破冰者V1.0e板,看起来是这样的:

外部12 MHz振荡器连接到晶格iCE40UP5k(封装SG48)的35针(标记为绿色)

引脚35具有功能:IOT_46b_G0,类型:DPIO/GBIN0,并且位于 在银行:0)。

当我搜索我在上面发布的库时,我在第98页上发现了一个很好的原语SB_PLL40_PAD。此原语的描述与IceBreaker V1.0e原理图中的描述完全匹配。说明如下:

请注意它是否与上面的PIN描述相匹配!现在,我想在我的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设计
# 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

为什么?Yosys工具中没有实现Lattice技术库吗?我有点困惑..。我如何解决此问题?

推荐答案

看起来我不识字。网格技术库提及SB_PLL40_PAD

我使用SB_PLL_40_PAD.所以它当然不能工作了!现在可以编译了!

所以我从这里开始创建一个很好的PLL示例,它使用FPGA内部已有的硬件!

这篇关于iCE40 Ultra Plus 5k-如何设置PLL(没有专业GUI工具)(续)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆