Neal_Zh

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  关于8位串行乘法器的缺点,书上还提到一点,就是速度慢。具体分析串行乘法器的硬件结构,也就是存在逐步进位信号的传递所造成的延迟,就8位串行乘法器来说,请看如下的仿真图。

在此,笔者特意将2个变量,乘数与被乘数变化设定为8个时钟周期,这样,就可以清晰的看到并推得,N位串行乘法器由于其移位运算的需要,将有N个时钟延迟,即所谓的速度慢。

另外,需要注意的是,与C/C++语言类似,计数变量(此情况下用count计下8个时钟周期)和状态变量(用于case语句中不同情况)都需要给定初值,否则会出现不可预知的错误。仿真代码见下,供参考:

module ade_test;

    // Inputs
    reg clk;
    reg [7:0] x;
    reg [7:0] y;

    // Outputs
    wire [15:0] p;

    // Instantiate the Unit Under Test (UUT)
    ade uut (
        .clk(clk), 
        .x(x), 
        .y(y), 
        .p(p)
    );
    parameter clk_period = 20;
    initial begin
        // Initialize Inputs
        clk = 0;
        x = 0;
        y = 0;

        // Wait 100 ns for global reset to finish
        //#100;
     // x = 2;
        //y = 3;
        // Add stimulus here

    end
    always # (clk_period/2) clk = ~clk;
    always # (clk_period*8)    x = (x+3) % 10;
    always # (clk_period*8) y = (y+1) % 15;
      
endmodule

 

 

 

 

 

posted on 2013-07-27 13:45  Neal_Zh  阅读(908)  评论(0编辑  收藏  举报