原创 linux grep 递归 and multiplier

2010-1-14 16:39 2115 4 4 分类: 工程师职场
1,linux下grep的用法
  grep 'xxxx'  yourfiles_list
 
 ex: grep 'input'  *.v
 
 在所有.v文件中查找含有input的行,并且显示出来。
 
 2,c中的递归就是指自己调用自己的意思,比如:
 
 public long F(int n)
 {
     if(n == 1)
        {
          return 1;
        }
     else
        {
          return ( n*F(n-1));
       
        }
 }
 
 
 3,符号数乘法问题,以下使用的是符号*来实现符号数乘法,在verilog中,*仅是无符号数乘法
   对于符号数也是当作无符号数进行操作,以下通过转换来实现有符号数的乘法。
 module mul(a,b,offset,c);
    input [7:0] a;
    input [15:0] b;
    input [7:0] offset;
    output [23:0] c;
   
   
    wire sign ;
    assign sign = a[7] ^ b [15];
   
    wire [7:0] a_abs;
    assign a_abs = a[7]?(~a + 1'b1):{a};//绝对值仍然用8位,因为如果是-128的话,就是1000_0000,如果用之前的方法来
                                        //求绝对值,则会得到0的结果,所以仍然用8为来表示其绝对值。
   
    wire [15:0] b_abs;
    assign b_abs = b[15]?(~b + 1'b1):b;
   
    wire [23:0] re;
    assign re = a_abs * b_abs; //8bits乘以16bits的结果当然是24bits
   
    //assign c = (sign?(~re + 1'b1):re) - {offset[7],offset[7],offset,14'b0};
    assign c = (sign?(~re + 1'b1):re);  //这个因为原来的数据是8bits乘以16bits,所以最后的结果也是24bits,如果有溢出
                                        //没有关系,是多余的符号位而已
endmodule

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条