原创
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条评论)
登录后参与讨论