湖工大电信大四一学期EDAVerilog HDL考试资料Word格式文档下载.docx
- 文档编号:20668527
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:29
- 大小:21.45KB
湖工大电信大四一学期EDAVerilog HDL考试资料Word格式文档下载.docx
《湖工大电信大四一学期EDAVerilog HDL考试资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《湖工大电信大四一学期EDAVerilog HDL考试资料Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
yout=8’b00000100;
3’b011:
yout=8’b00001000;
3’b100:
yout=8’b00010000;
3’b101:
yout=8’b00100000;
3’b110:
yout=8’b01000000;
3’b111:
yout=8’b10000000;
deflaut:
yout=8’b00000000;
endcase
end
【例3.28】3-8线译码器(低电平有效)
//3-8线译码器(低电平有效)decode3_8b.v
moduledecoder3_8b(g1,g2a,g2b,c,b,a,y7,y6,y5,y4,y3,y2,y1,y0);
inputg1,g2a,g2b;
inputc,b,a;
outputy7,y6,y5,y4,y3,y2,y1,y0;
regy7,y6,y5,y4,y3,y2,y1,y0;
always@(g1org2aorg2borcorbora)
if((g1==1’b0)||(g2a==1’b1)||(g2b==1’b1))
{y7,y6,y5,y4,y3,y2,y1,y0}<
=8’b11111111;
elseif((g1==1’b1)&
&
(g2a==1’b0)&
(g2b==1’b0))
begin
case({c,b,a})
3’b000:
{y7,y6,y5,y4,y3,y2,y1,y0}<
=8’b11111110;
3’b001:
=8’b11111101;
3’b010:
=8’b11111011;
3’b011:
=8’b11110111;
3’b100:
=8’b11101111;
3’b101:
=8’b11011111;
3’b110:
=8’b10111111;
3’b111:
=8’b01111111;
deflaut:
end
else
{y7,y6,y5,y4,y3,y2,y1,y0}<
endmodule
2.编码器
【例3.29】8-3线优先编码器。
//8-3线优先编码器:
encode8_3.v
Moduleencode8_3(y,a);
Output[2:
0]y;
Input[7:
0]a;
Reg[2:
Always@(a)
Casex(a)
8’b?
?
1:
y=3’d000;
10:
y=3’d001;
100:
y=3’d010;
1000:
y=3’d011;
10000:
y=3’d100;
100000:
y=3’d101;
1000000:
y=3’d110;
8’b10000000:
y=3’d111;
deflaut:
y=3’bzzz;
endcase
3.比较器
【例3.30】8位二进制比较器
//8位二进制比较器compare8.v
Modulecompare8(a,b,eq,gt,lt);
Input[7:
0]a,b;
Outputeq,gt,lt;
Regeq,gt,lt;
Always@(aorb)
Begin
If(a==b)
{eq,gt,lt}<
=3’b100;
Elseif(a>
b)
=3’b010;
ElseIf(a<
=3’b001;
=3’b000;
End
Endmodule
4.选择器
【例3.31】四选一信号选择器一。
Modulemul4_1a(y,s,x);
Outputy;
Input[1:
0]s;
Input[3:
0]x;
Regy;
Always@(sorx)
Begin
Case(s)
2’b00:
y=x[0];
2’b01:
y=x[1];
2’b10:
y=x[2];
2’b11:
y=x[3];
Deflaut:
y=1’b0;
Endcase
End
Endmoduse
【例3.32】四选一信号选择器二
//使用if语句的四选一信号选择器mul4_1b.v
Modulemul4_1b(y,s,x);
If(s==2’b00)
Y=x[0];
If(s==2’b01)
Y=x[1];
If(s==2’b10)
Y=x[2];
Y=x[3];
End
【例3.33】四选一数据选择器。
//四选一数据选择器mul4_1c.v
Modulemul4_1c(y,s,data0,data1,data2,data3);
Output[7:
Input[1:
0]data0,data1,data2,data3;
Always@(sordata0ordata1ordata2ordata3)
Y=data0;
ElseIf(s==2’b01)
Y=data1;
ElseIf(s==2’b10)
Y=data2;
Else
Y=data3;
5.驱动电路
1)
【例3.34】三态门电路
//三态门电路tritate.v
Moduletristate(en,din,dout);
Inouten,din;
Outputdout;
Regdout;
Always@(enordin)
If(en==1’b1)
Dout<
=din;
Else
=1’bz;
【例3.35】单向总线驱动器。
//单向总线驱动器tri_bufs.v
Moduletri_bufs(en,din,dout);
Inputen;
0]din;
0]dout;
Reg[7:
If(en==1’b1)
Dout<
=8’bzzzzzzz;
3)
【例3.36】双向总线缓冲器。
//双向总线缓冲器bidir_bufs.v
Modulebidir_bufs(a,b,en,dir);
Inout[7:
Inputen,dir;
0]sa,sb;
Always@(aorenordir)
If(en==1’b0)
If(dir==1’b0)
Sb<
=a;
Assignb=sb;
Always@(borenordir)
If(en==1’b0)if(dir==1’b1)
Sa<
=b;
Assigna=sa;
Endmodule;
【例3.37】D触发器
//D触发器d_ff.v
Moduled_ff(d,clk,q,qn);
Inputd;
Inputclk;
Outputq,qn;
Regq,qn;
Always@(posedgeclk)
q<
=d;
qn<
=~d;
【例3.38】非同步复位/置位的D触发器、
//非同步复位/置位的D触发器asynd_ff.v
Moduleasynd_ff(clk,d,preset,clr,q);
Inputclk,d,preset,clr;
Outputq;
Regq;
If(preset)
=1’b1;
elseif(clr)
=1’b0;
【例3.39】同步复位的D触发器。
//同步复位的D触发器asynd_ff.v
Modulesynd_ff(clk,d,reset,q);
Inputclk,d,reset;
If(reset)
=1b’0;
【例3.40】JK触发器。
//JK触发器jk_ff.v
Modulejk_ff(j,k,c,q,qn);
Inputj,k;
Inputc;
Always@(negedgec)
Case({j,k})
2’b00:
beginq<
=q;
qn<
=qn;
end;
2’b01:
2’b10:
2’b11:
default:
【例3.41】T触发器
//T触发器t_ff.v
Modulet_ff(en,t,q,qn);
Inputen;
Inputt;
Outputq,qn;
Regq,qn;
Always@(posedget)
Qn<
Q<
=~q;
【例3.42】8位数据寄存(锁存)器。
//8位数据寄存(锁存)器reg8.v
Modulereg8(clk,d,q);
0]d;
Output[7:
0]q;
Regq;
Always@(posedgeclk)
Q<
【例3.43】具有左移或右移1位、并行输入和同步复位功能的8位移位寄存器。
//移位寄存器sftreg8.v
Modulesftreg8(clk,reset,lsft,rsft,data,mode,qout);
Inputclk,reset;
Inputlsft,rsft;
0]data;
0]mode;
0]qout;
If(reset)
Qout<
=8’b00000000;
Case(mode)
2’b01:
qout<
={rsft,qout[7:
1]};
2’b10:
={qout[6:
0],left};
2’b11:
=data;
Default:
=8b’00000000;
【例3.44】带时钟使能的十进制同步计数器。
//有时钟使能的十进制同步计数器cnt10.v
Modulecnt10(clk,clr,ena,cq,co);
Inputclr;
Inputena;
Output[3:
0]cq;
Outputco;
Reg[3:
0]cnt;
Regco;
//计数过程
Always@(posedgeclkorposedgeclr)
If(clr)
Cnt<
=4’b0;
If(ena)
If(cnt==4’h9)
Cnt<
=4’h0;
Assigncq=cnt;
//控制进位输出并去毛刺
Co=4’h1;
Co=4’h0;
【例3.45】具有异步复位、同步置数功能的8421BCD码六十进制同步计数器。
Reg[3:
//计数控制过程
Else
=cnt+1;
Always@(pposedgeclk)
Endmodule
//有时钟使能的六进制同步计数器cnt6.v
Modulecnt6(clk,clr,ena,cq,co);
output[3:
Always@(posedgeclkorposedgeclr)
If(cnt==4’h5)
//六十进制计数器cnt60a.v
Modulecnt60a(clk,clr,ena,dout);
Wires0;
Cnt10u0(.ena(ena),.clk(clk),.clr(clr),.cq(dout[3:
0]),.co(s0));
Cnt6u1(.ena(ena),.clk(s0),.clr(clr),.cq(dout[7:
4]),.co());
【例3.46】具有异步复位、同步置数功能的8421BCD码六十进制同步计数器。
//六十进制同步计数器cnt60b.v
Modulecnt60b(clk,reset,load,ena,d,qh,ql,co);
Inputreset;
Inputload;
Output[3:
0]qh;
0]ql;
Always@(posedgeclkornegedgereset)
If(!
reset)
Qh<
Ql<
If(load)
=d[7:
4];
=d[3:
0];
If(ql==4’h9)
Begin
Ql<
If(qh==4’h5)
Qh<
Else
=qh+1;
End
Else
Ql<
=ql+1;
//进位输出控制过程
Always@(qhorqlorena)
If(qh==4’h5&
q1==4’h9&
ena==1’b1)
Co<
=4’h1;
【例3.47】由8个D触发器构成的异步计数器。
//D触发器d_ff1.v
Moduled_ff1(clk,clr,d,q,qn);
Inputclk,clr;
Regq,qn;
Regq_in;
If(clr)
=q_in;
=~q_in;
//由8个D触发器构成的8位计数器dcnt8.v
Moduledcnt8(clk,clr,cnt);
Wire[8:
Wires1,s2,s3,s4,s5,s6,s7,s8;
D_ff1uut0(.clk(clk),.clr(clr),.d(s1),.q(cnt[0]),.qn(s1));
D_ff1uut1(.clk(s1),.clr(clr),.d(s2),.q(cnt[1]),.qn(s2));
D_ff1uut2(.clk(s2),.clr(clr),.d(s3),.q(cnt[2]),.qn(s3));
D_ff1uut3(.clk(s3),.clr(clr),.d(s4),.q(cnt[3]),.qn(s4));
D_ff1uut4(.clk(s4),.clr(clr),.d(s5),.q(cnt[4]),.qn(s5));
D_ff1uut5(.clk(s5),.clr(clr),.d(s6),.q(cnt[5]),.qn(s6));
D_ff1uut6(.clk(s6),.clr(clr),.d(s7),.q(cnt[6]),.qn(s7));
D_ff1uut7(.clk(s7),.clr(clr),.d(s8),.q(cnt[7]),.qn(s8));
【例3.48】将1KHz的方波信号变为正、负周不等的50Hz信号的非均匀分频电路
//将1KHz的信号变为50Hz非均匀分频器fjydiv.v
Modulefjydiv(cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖工大电信大四一学期EDAVerilog HDL考试资料 湖工大 电信 大四 一学期 EDAVerilog HDL 考试 资料