还有半年就找工作了,害怕。。。研究生期间水了一年半,是时候该记录一下自己创造/学到的东西了。本人菜鸡,如有问题,欢迎大佬们不吝赐教,在此先谢过了。
因为测频算法中要用到很多乘除法,无论是直接用IP核还是乘除符号,都会占用相当大的资源,故决定用时间换资源,直接用自己写的乘除算法进行计算。
60位乘法器代码
因为我的结果不会超过80的位宽,为了节省资源,这里只取了80位,正常因该是60+60=120
module multi(dataa,datab,result,CLK);
input [59:0]dataa;
input [59:0]datab;
input CLK;
output [79:0]result;
reg [59:0]a = 60'b0;
reg [59:0]b = 60'b0;
reg [6:0]i = 1'b0;
reg [119:0]resul = 120'b0;
reg [119:0]result_tmp = 120'b0;
always@(posedge CLK)
begin
case(i)
0:
begin
a <= dataa;
b <= datab;
resul <= 119'b0;
i <= i + 1'b1;
end
1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60:
begin
if( b[i-1