大于/小于对fmax的影响

上一篇 / 下一篇  2008-07-10 15:24:53

module A_prj
    (
    clk,
    D,
 E,
    x,
    y,
    m,
    n,
    z
    );

input clk;
input [31:0] D, E;
input [31:0] x, y;
input [31:0] m, n;

output [31:0] z;

reg   P, L;
reg  [31:0] D_in, E_in;
reg  [31:0] x_in, y_in;
reg  [31:0] m_in, n_in;
reg  [31:0] s, v;
reg  [31:0] z;

always @(posedge clk)
begin
    D_in <= D;
    E_in <= E;
    x_in <= x;
    y_in <= y;
    m_in <= m;
    n_in <= n;
end

/*
//slow
always @(posedge clk)
    if (D_in >= E_in)
        s <= x_in + y_in;
    else
        s <= x_in - y_in;
always @(posedge clk)
 if (D_in >= E_in)
        v <= m_in + n_in;
    else
        v <= m_in - n_in;
*/
/*
//normal
always @(posedge clk)
    if (D_in >= E_in)
        P <= 1'b1;
    else
        P <= 1'b0;
always @(posedge clk)
 if (P)
        s <= x_in + y_in;
    else
        s <= x_in - y_in;
always @(posedge clk)
 if (P)
        v <= m_in + n_in;
    else
        v <= m_in - n_in;
*/

//fast
always @(posedge clk)
    if (D_in >= E_in)
        P <= 1'b1;
    else
        P <= 1'b0;
always @(posedge clk)
    if (D_in >= E_in)
        L <= 1'b1;
    else
        L <= 1'b0;
always @(posedge clk)
 if (P)
        s <= x_in + y_in;
    else
        s <= x_in - y_in;
always @(posedge clk)
 if (L)
        v <= m_in + n_in;
    else
        v <= m_in - n_in;

always @(posedge clk)
 z <= s + v;

endmodule


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-18  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 170
  • 日志数: 14
  • 建立时间: 2008-07-01
  • 更新时间: 2008-08-03

RSS订阅

Open Toolbar