常见面试笔试题-verilog程序库Word下载.docx

上传人:b****3 文档编号:15509332 上传时间:2022-11-03 格式:DOCX 页数:14 大小:333.71KB
下载 相关 举报
常见面试笔试题-verilog程序库Word下载.docx_第1页
第1页 / 共14页
常见面试笔试题-verilog程序库Word下载.docx_第2页
第2页 / 共14页
常见面试笔试题-verilog程序库Word下载.docx_第3页
第3页 / 共14页
常见面试笔试题-verilog程序库Word下载.docx_第4页
第4页 / 共14页
常见面试笔试题-verilog程序库Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

常见面试笔试题-verilog程序库Word下载.docx

《常见面试笔试题-verilog程序库Word下载.docx》由会员分享,可在线阅读,更多相关《常见面试笔试题-verilog程序库Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

常见面试笔试题-verilog程序库Word下载.docx

inputcin;

output[3:

0]sum;

outputcout;

assign {cout,sum}=a+b+cin;

endmodule

补码不仅可以执行正值和负值转换,其实补码存在的意义,就是避免计算机去做减法的操作。

  1101-3补

+10008

01015

假设-3+8,只要将-3转为补码形式,亦即0011=>

1101,然后和8,亦即1000相加

就会得到5,亦即0101。

至于溢出的最高位可以无视掉。

乘法器

modulemult(outcome,a,b);

parameterSIZE=8;

input[SIZE:

1]a,b;

outputreg[2*SIZE:

1]outcome;

integeri;

always@(aorb)

beginoutcome<

=0;

for(i=0,i<

=SIZE;

i=i+1)

if(b[i])outcome<

=outcome+(a<

<

(i-1));

end

另一种乘法器。

在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。

输出结果根据正负关系取得。

elseif(Start_Sig)

case(i)

0:

begin

isNeg<

=Multiplicand[7]^Multiplier[7];

Mcand<

=Multiplicand[7]?

(~Multiplicand+1'

b1):

Multiplicand;

Mer<

=Multiplier[7]?

(~Multiplier+1'

Multiplier;

Temp<

=16'

d0;

i<

=i+1'

b1;

end

1:

//Multipling

if(Mer==0)i<

elsebeginTemp<

=Temp+Mcand;

Mer<

=Mer-1'

end

2:

beginisDone<

=1'

i<

end

3:

b0;

=2'

endcase

assignDone_Sig=isDone;

assignProduct=isNeg?

(~Temp+1'

Temp;

endmodule

booth乘法器

modulebooth_multiplier_module

inputCLK,

inputRSTn,

inputStart_Sig,

input[7:

0]A,

0]B,

outputDone_Sig,

output[15:

0]Product,

output[7:

0]SQ_a,

0]SQ_s,

output[16:

0]SQ_p

);

reg[3:

0]i;

reg[7:

0]a;

//resultofA

0]s;

//reverseresultofA

reg[16:

0]p;

//p空间,16+1位

0]X;

//指示n次循环

regisDone;

always@(posedgeCLKornegedgeRSTn)

if(!

RSTn)

begin

i<

=4'

a<

=8'

s<

p<

=17'

X<

isDone<

end

elseif(Start_Sig)

case(i)

0:

begina<

=A;

s<

=(~A+1'

b1);

p<

={8'

d0,B,1'

b0};

end

1:

if(X==8)beginX<

=i+4'

d2;

elseif(p[1:

0]==2'

b01)beginp<

={p[16:

9]+a,p[8:

0]};

b10)beginp<

9]+s,p[8:

elsei<

//00和11,无操作

2:

beginp<

={p[16],p[16:

1]};

X<

=X+1'

=i-1'

end//右移,最高位补0or1.

3:

beginisDone<

4:

endcase

assignDone_Sig=isDone;

assignProduct=p[16:

1];

endmodule

除法器

moduledivider_module

inputCLK,

inputRSTn,

inputStart_Sig,

input[7:

0]Dividend,

0]Divisor,

outputDone_Sig,

output[7:

0]Quotient,

0]Reminder,

reg[3:

reg[7:

0]Dend;

0]Dsor;

reg[7:

0]Q;

0]R;

regisNeg;

regisDone;

always@(posedgeCLKornegedgeRSTn)

if(!

begin

i<

Dend<

Dsor<

Q<

isNeg<

isDone<

end

elseif(Start_Sig)

case(i)

begin

Dend<

=Dividend[7]?

~Dividend+1'

b1:

Dividend;

Dsor<

=Divisor[7]?

Divisor:

(~Divisor+1'

isNeg<

=Dividend[7]^Divisor[7];

end

if(Divisor>

Dend)

beginQ<

=isNeg?

(~Q+1'

Q;

elsebeginDend<

=Dend+Dsor;

Q<

=Q+1'

2:

beginisDone<

3:

endcase

assignQuotient=Q;

assignReminder=Dend;

endmodule

除法器2

modulediv(a,b,clk,result,yu)

input[3:

outputreg[3:

0]result,yu;

inputclk;

reg[1:

0]state;

reg[3:

0]m,n;

paramete

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1