常见面试笔试题verilog程序库汇编文档格式.docx
- 文档编号:1282390
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:23
- 大小:325.92KB
常见面试笔试题verilog程序库汇编文档格式.docx
《常见面试笔试题verilog程序库汇编文档格式.docx》由会员分享,可在线阅读,更多相关《常见面试笔试题verilog程序库汇编文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
if(b[i])outcome<
=outcome+(a<
<
(i-1));
end
另一种乘法器。
在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。
输出结果根据正负关系取得。
elseif(Start_Sig)
case(i)
0:
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-1'
2:
beginisDone<
=1'
3:
b0;
=2'
endcase
assignDone_Sig=isDone;
assignProduct=isNeg?
(~Temp+1'
Temp;
endmodule
booth乘法器
modulebooth_multiplier_module
(
inputCLK,
inputRSTn,
inputStart_Sig,
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};
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];
除法器
moduledivider_module
0]Dividend,
0]Divisor,
0]Quotient,
0]Reminder,
0]Dend;
0]Dsor;
reg[7:
0]Q;
0]R;
regisNeg;
begin
Dend<
Dsor<
Q<
isDone<
elseif(Start_Sig)
case(i)
=Dividend[7]?
~Dividend+1'
b1:
Dividend;
=Divisor[7]?
Divisor:
(~Divisor+1'
isNeg<
=Dividend[7]^Divisor[7];
if(Divisor>
Dend)
beginQ<
=isNeg?
(~Q+1'
Q;
elsebeginDend<
=Dend+Dsor;
=Q+1'
2:
3:
endcase
assignQuotient=Q;
assignReminder=Dend;
除法器2
modulediv(a,b,clk,result,yu)
input[3:
outputreg[3:
0]result,yu;
inputclk;
reg[1:
0]state;
reg[3:
0]m,n;
parameterS0=2'
b00,S1=2'
b01,S2=2'
b10;
always@(posedgeclk)
begincase(state)
S0:
beginif(a>
b)beginn<
=a-b;
m<
=4'
b0001;
state<
=S1;
elsebeginm<
b0000;
n<
=a;
=S2;
S1:
beginif(n>
=b)beginm<
=m+1;
=n-b;
state<
end
elsebeginstate<
S2:
beginresult<
=m;
yu<
=n;
=S0;
defule:
13、一个可预置初值的7进制循环计数器
①verilog
modulecount(clk,reset,load,date,out);
inputload,clk,reset;
0]date;
outputreg[3:
0]out;
parameterWIDTH=4'
d7;
always@(clkorreset)
begin
if(reset)out<
elseif(load)out<
=date;
elseif(out==WIDTH-1)out<
elseout<
=out+1;
Johnson计数器
约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。
它与环形计数器不同,后者用n位触发器仅可表示n个状态。
n位二进制计数器(n为触发器的个数)有2^n个状态。
若以四位二进制计数器为例,它可表示16个状态。
“0000-1000-1100-1110-1111-0111-0011-0001-0000-1000……”
moduleJohnson(inputclk,inputclr,outputreg[N-1:
0]q);
always@(posedgeclkornegedgeclr)
if(!
clr)q<
={N{1’b0}}
elseif(!
q[0])q<
={1’b1,q[N-1:
1]};
elseq<
={1’b0,q[N-1]:
1}];
任意分频,占空比不为50%
always(clk)
beginif(count==x-1)count<
elsecount<
=count+1;
assignclkout=count[y]//y一般用count的最高位
偶数分频(8分频,占空比50%)(计数至n-1,翻转)
modulecount5(reset,clk,out)
inputclk,reset;
outputout;
reg[1:
0]count;
always@(clk)
if(reset)begincount<
out<
elseif(count==3)begincount<
out<
=!
out:
elsecount<
奇数分频电路(占空比50%)。
reg[2:
regcount1;
regcount2;
always@(posedgeclk)
if(reset)beginm<
count1<
elsebeginif(m==4)m<
elsem<
//“4”为分频数NUM-1,NUM=5
if(m<
2)count1<
=1;
elsecount1<
always@(negedgeclk)
if(reset)beginn<
count2<
elsebeginif(n==4)n<
elsen<
=n+1;
if(n<
2)count2<
elsecount2<
assignout=count1|count2;
半整数分频
modulefdiv5_5(clkin,clr,clkout)
inputclkin,clr;
outputregclkout;
regclk1;
wireclk2;
integercount;
xorxor1(clk2,clkin,clk1)
always@(posedgeclkoutornegedgeclr)
beginif(~clr)beginclk1<
=1’b0;
elseclk1<
=~clk1;
always@(posedgeclk2ornegedgeclr)
beginif(~clr)
begincount<
clkout<
elseif(count==5)
=1’b1;
elsebegincount<
end
小数分频
N=M/P.N为分配比,M为分频器输入脉冲数,P为分频器输出脉冲数。
N=(8×
9+9×
1)/(9+1)=8.1先做9次8分频再做1次9分频。
modulefdiv8_1(clkin,rst,clkout)
inputclkin,rst;
reg[3:
0]cnt1,cnt2;
always@(posedgeclkinorposedgerst)
beginif(rst)begincnt1<
cnt2<
clkout<
elseif(cnt1<
9)//cnt1,0~8
if(cnt2<
7)begincnt2<
=cnt2+1;
elsebegincnt2<
cnt1<
=cnt1+1;
elsebegin//cnt1,9
8)begincnt2<
串并转换
modulep2s(clk,clr,load,pi,so)
inputclk,clr,load;
input[3:
0]pi;
outputso;
0]r;
if(~clr)r<
h0;
elseif(load)r<
=pi;
elser<
={r,1'
b0};
//orr<
1;
assignso=r[3];
modules2p(clk,clr,en,si,po)
inputclk,clr,en,si;
output[3:
0]po;
=8’ho;
elser<
={r,si};
assignpo=(en)?
r:
4’h0;
b)试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。
moduledff(q,qn,d,clk,set,reset)
input[7:
0]d,set;
outputreg[7:
0]q,qn;
always@(posedgeclk)
if(reset)beginq<
=8’h00;
qn<
=8’hFF;
elseif(set)beginq<
elsebeginq<
=d;
=~d;
序列检测“101”
modulexulie101(clk,clr,x,z);
inputclk,clr,x;
outputregz;
0]state,next_state;
parameters0=2'
b00,s1=2'
b01,s2=2'
b11,s3=2'
always@(posedgeclkorposedgeclr)
beginif(clr)state<
=s0;
elsestate<
=next_state;
always@(stateorx)
case(state)
s0:
beginif(x)next_state<
=s1;
elsenext_state<
s1:
=s2;
s2:
=s3;
s3:
default:
next_state<
endcase
always@(state)
begincase(state)
s3:
z=1;
default:
z=0;
endcase
按键消抖
1.采用一个频率较低的时钟,对输入进行采样,消除抖动。
moduleswitch(clk,keyin,keyout)
parameterCOUNTWIDTH=8;
inputclk,keyin;
outputregkeyout;
reg[COUNTWIDTH-1:
0]counter;
wireclk_use;
//频率较低的时钟
assignclk_use=counter[COUNTWIDTH-1];
always@(posegdeclk)
counter<
=counter+1’b1;
always@(posedgeclk_use)
keyout<
=keyin;
2.moduleswitch(clk,keyin,keyout)
initialcounter<
=0,keyout<
=0,keyin<
if(keyin=1)beginkey_m<
=keyin,counter<
=counter+1;
elsecounter<
if(keyin&
&
counter[m])keyout<
//m定义时延
数码管显示
modulenumber_mod_module//分别取得数字的十位和个位
(CLK,RSTn,Number_Data,Ten_Data,One_Data);
inputCLK;
inputRSTn;
0]Number_Data;
output[3:
0]Ten_Data;
0]One_Data;
reg[31:
0]rTen;
0]rOne;
rTen<
=32'
rOne<
else
begin
=Number_Data/10;
=Number_Data%10;
assignTen_Data=rTen[3:
0];
assignOne_Data=rOne[3:
moduleled(CLK,Ten_Data,One_Data,led0,led1);
//数码管显示
input[3:
0]Ten_Data,One_Data;
inputCLK;
0]led0,led1;
always@(posedgecp_50)
casez(One_Data)
4'
d0:
led0=8'
b1100_0000;
d1:
b1111_1001;
d2:
b1010_0100;
d3:
b1011_0000;
d4:
b1001_1001;
d5:
b1001_0010;
d6:
b1000_0010;
d7:
b1111_1000;
d8:
b1000_0000;
d9:
b1001_0000;
default:
b1111_1111;
endcase
casez(Ten_Data)
led1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 试笔 试题 verilog 程序库 汇编