原创 【博客大赛】11. Multicycle Paths Constraints实例I(Timing Constraints in Vivado)

2014-4-29 17:13 2964 21 22 分类: FPGA/CPLD 文集: Timing Constraints in Vivado

       本节通过实例介绍一下多时钟周期路径(multicycle paths)的约束方法。

       如图1中结构,主时钟fast_clk,时钟频率250MHz;时钟使能信号div_by_two,由主时钟2分频得到,作为寄存器的clock enable信号。

20140429171320955001.gif
 

1

       HDL代码如下所示:

以下是代码片段:
module top(
    fast_clk,
    din_a,
    din_b,
    din_x,
    din_y,
    ab_out,
    xy_out
    );
   
    ////////////// PORT /////////////////////////////
    input fast_clk;
    input [7:0] din_a;
    input [7:0] din_b;
    input [7:0] din_x;
    input [7:0] din_y;
    output reg [15:0] ab_out;
    output reg [15:0] xy_out;
   
    ////////////// ARCHITECTURE /////////////////////
    // Clock Enable
    reg div_by_two;
    always@(posedge fast_clk)
        div_by_two<=~div_by_two;
   
    // Input Registers
    reg [7:0] din_a_rg;
    reg [7:0] din_b_rg;
    reg [7:0] din_x_rg;
    reg [7:0] din_y_rg;
    always@(posedge fast_clk) begin
        if(div_by_two) begin
            din_a_rg <= din_a;         
            din_b_rg <= din_b; 
            din_x_rg <= din_x;
            din_y_rg <= din_y;
        end
    end
   
    // Multiplexer
    wire [7:0] mult_a;
    wire [7:0] mult_b;
    assign mult_a = div_by_two ? din_a : din_x;
    assign mult_b = div_by_two ? din_b : din_y;
   
    // Multiplier
    wire [15:0] mult_rlt;
    assign mult_rlt = mult_a * mult_b;
   
    // Ouptut Select
    always@(posedge fast_clk) begin
        if(div_by_two)
            xy_out <= mult_rlt;
        else
            ab_out <= mult_rlt;
    end
           
endmodule
20140429171052799001.gif
20140429171135582001.gif
 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1826176 2015-1-15 10:29

还是不太清楚什么情况要set_Multicycle_path.一个路径SLACK不满足,怎么判断要使用什么样的约束呢?
相关推荐阅读
Hoki 2017-01-11 17:35
LX9开发板呼吸灯实现
对LX9开发板硬件评测后,从这一节开始真正进入FPGA开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。 呼吸灯最初是出现在apple公司的笔记本产品中,当合上...
Hoki 2017-01-11 16:47
LX9的microblaze配置
虽然XC6SLX9芯片资源比较少,但是嵌一个microblaze还是搓搓有余的,这一节就来评测一下在XC6SLX9上microblaze的配置。 有两种方法配置microblaze,一是在ISE软件中...
Hoki 2017-01-11 16:32
zynq评测
Zynq芯片是业界第一款在FPGA中集成ARM核的芯片,由FPGA的发明者xilinx公司推出的。Zynq严格来说不能以FPGA来定义它,因为其是以处理器为中心的平台,能够在单芯片上提供软、硬件和 I...
Hoki 2017-01-11 16:19
u-boot
Zyny芯片启动加载分为3步: 1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),...
Hoki 2017-01-11 16:09
基于zynq的交叉编译平台
Zynq芯片的最大特点是其集成了双ARM Cortex-A9处理器,因此zynq的应用基本是以这个ARM核为核心,再配合FPGA逻辑作为协处理器,几乎能实现所有较复杂的应用。并且在ARM上可以跑操作系...
Hoki 2017-01-11 15:54
u-boot image生成
这节介绍一下如何生成u-boot image文件,在SDK软件中点击Xilinx Tools→Create Boot Image工具即可生成,但是生成image文件需要首先集齐3个文件:u-boot....
EE直播间
更多
我要评论
1
21
关闭 站长推荐上一条 /3 下一条