• Verilog代码和FPGA硬件的映射关系(五)


      既然我们可以指定寄存器放在IOB内,那我们同样也可以指定PLL的位置。首先要确保我们有多个PLL才行。如图1所示,我们所使用的EP4CE10F17C8芯片刚好有两个。

     

    1

      为了演示这个例子,我们使用pll工程,RTL代码如下所示:

     1 //--------------------------------------------------
     2 module pll(
     3     input      wire     sys_clk        , //系统时钟50MHz
     4   
     5     output     wire     clk_mul_2      , //系统时钟经过2倍频后的时钟
     6     output     wire     clk_div_2      , //系统时钟经过2分频后的时钟
     7     output     wire     clk_phase_90   , //系统时钟经过相移90°后的时钟
     8     output     wire     clk_ducle_20   , //系统时钟变为占空比为20%的时钟
     9     output     wire     locked           //检测锁相环是否已经锁定,只有该信号为高时输出的时钟才是稳定的
    10  
    11 ); 
    12  
    13 //------------------------pll_ip_inst------------------------
    14 pll_ip pll_ip_inst(
    15     .inclk0   (sys_clk      ),   //input     inclk0                                          
    16 
    17     .c0       (clk_mul_2    ),   //output    c0 
    18     .c1       (clk_div_2    ),   //output    c1
    19     .c2       (clk_phase_90 ),   //output    c2 
    20     .c3       (clk_ducle_20 ),   //output    c3
    21     .locked  (locked       )    //output    locked
    22 );
    23   
    24 endmodule
    25 //-------------------------------------------------                               

      代码编写完后依然需要点击Start Analysis & Synthesis图标进行分析和综合。然后双击Netlist Viewers”下的“RTL Viewer”查看RTL视图。

     

    2

      点击Start Compilation图标全编译进行布局布线,然后打开Chip Planner视图Chip Planner打开后的界面3所示,我们可以看到在版图模型中左下角有一块颜色变深的区域,与之形成鲜明对比的是右上角颜色没有变深的位置,这就是我们FPGA芯片中两个PLL的位置,而颜色变深的区域说明资源被占用

     

    3

      放大并点击该PLL,如图4所示,可以在右侧看到该PLL的结构图中显示的部分蓝色高亮信号,下面“Location”则显示了该PLL的名字为“PLL_1”。

     

    4

      如5所示,选中该PLL后点击左侧的图标显示扇入扇出线路径,可以看到PLL在芯片内的连接关系。

     

    5

      如图6所示,我们回到工程界面点击“Assignment Editor”图标来约束PLL的位置。

     

    6

      如图7所示,在打开的“Assignment Editor”界面中点击“To”下面的“<<new>>”添加要约束的项。

     

    7

      在打开的Node Finder”界面中我们找到信号的输入key_in8所示,根据序号顺序,在①处的“Named :”选项框中输入“*pll*”,点击 ②处的“List”,在③处的“Node Found :”列表中就会列出名为altpll:altpll_component的信号,双击③处的altpll:altpll_component 信号或点击图标④,altpll:altpll_component信号就被添加到⑤处的“Selected Nodes:”中了。如果我们想取消⑤处选择的信号则在“Selected Nodes:”选中该信号后点击图标⑥即可。设置完毕后点击“OK”退出。

     

    8

      如9所示,设置Assignment Name”,下拉列表找到“Location(Accepts wildcards/groups)”,这是设置位置的约束。

     

    9

      如图10所示,点击“Value”下的“...”。

     

    10

      如图11所示,在弹出的“Location”对话框中的“Element:”选择“PLL”。可以看到在这里我们还可以设置其他元素的位置。

     

    11

      如图12所示,“Location:”选择“PLL_2”。

     

    12

      如图13所示,“Location”对话框设置完毕后点击“OK”。

     

    13

      全部设置完成后的结果如14所示。

     

    14

      点击Start Compilation图标全编译进行布局布线,否则无法重新映射资源。此时会弹出如所示的对话框,提示是否要保存更改,选择Yes”后会执行布局布线。

     

    15

      当布局布线重新完成映射后我们再来看看Chip Planner视图,如16所示,我们可以发现在版图模型的右上角一块颜色变深的区域,与左下颜色没有变深的位置形成鲜明的对比,颜色变深的区域说明资源被占用。

     

    16

      放大并点击该PLL,如图17所示,可以在右侧看到该PLL的结构图中显示的部分蓝色高亮信号,下面“Location”则显示了该PLL的名字为“PLL_2,说明已经成功映射上了。

     

    17

      如图18所示,选中该PLL后点击左侧的图标显示扇入扇出线路径,可以看到PLL在芯片内的连接关系。

     

    18

      修改PLL的映射位置意义何在呢?当我们的时序在某些情况下不好的时候就可以通过修改PLL的映射位置来调整时序,以实现时序的收敛。

       欢迎加入FPGA技术学习交流群,本群致力于为广大FPGAer提供良好的学习交流环境,不定期提供各种本行业相关资料!QQ交流群号:450843130

  • 相关阅读:
    【转】如何复制一个正在使用的文件?(VB6.0)
    VB6.0操作SQL Server——增删改查
    SQL Server时间戳并发 .
    WCF WinCE 中 手机端 非字符串型 datetime,int,decimal,double 等等 传递不到WCF端的解决方案
    VB中调用带参数存储过程的实现(数据库)
    C# VB6.0 Java C++ GUID 生成
    vb6.0 取得文件扩展名
    VB6.0 取得windows 临时目录 temp
    VB6.0 在代码中直接调用 文件打开对话框,不使用windows控件
    VB数据库记录查询四法
  • 原文地址:https://www.cnblogs.com/mc2-xiangliangzi/p/12967138.html
Copyright © 2020-2023  润新知