将verilog行为级别转换为寄存器传输级别

时间:2014-11-21 01:26:58

标签: verilog

我是verilog的新手,如果任何人都可以帮助我翻译这个并解释其中的差异,我会非常感激地将行为级代码转换为注册转移级别。我的代码似乎正在工作,但我似乎无法找到任何帮助,以便在寄存器传输级别写入它。

   module combinational_mult(product,multiplier,multiplicand);
       input [31:0]  multiplier, 
       input [63:0] multiplicand;
       output        product;
     
       reg [63:0]    product;
       reg           c;
       reg [63:0]    m;  
       integer       i;
     
       always @( multiplier or multiplicand )
         begin
    //initialize
            product[63:32] = 32'd0;
            product[31:0] = multiplier;
            m = multiplicand;
            c = 1'd0;
     
          
    //add,shift algorithm  for unsigned multiplication.        
    //following the notes.
             for(i=0; i<32; i=i+1)
               begin
                   if(product[0]) {c,product[63:32]} = product[31:16] + m ;
                     product[63:0] = {c,product[63:1]};
                        c = 0;
           
     
     
      end    
    endmodule

    module testbench;
     reg [31:0] multiplier;
     reg [63:0] multiplicand;

    initial begin
      $dumpfile("dump.vcd");
      $dumpvars;

      #10ns;
      multiplier   = 16'b1101_1001_1101_1001;
      multiplicand = 16'b0110_1010_1101_1000;

      #50ns;
      multiplier   = 16'b0;
      multiplicand = 16'b0;

      $finish;
    end

    combinational_mult dut ( product, multiplier, multiplicand);
    endmodule 

1 个答案:

答案 0 :(得分:0)

由于您的设计纯粹是组合,因此实际上没有RTL(寄存器传输级别)描述非常有意义或有意义。

从Verilog描述RTL级别的数字时序逻辑;您需要了解系统中的寄存器(数据保持)元素以及影响每个寄存器所具有的值的因素。在你的情况下,因为没有寄存器,你实际上没有任何RTL,只是一个乘数,它是RTL中的有效单位。您可以更深入地描述您的多路复用器,了解系统中各种加法器的连接方式,但这比Id称为RTL要低一些。

快速谷歌搜索会产生关于RTL的教科书章节:http://cseweb.ucsd.edu/classes/sp13/cse140-a/lectures/rtl.pdf