搜索
您的当前位置:首页数电实验考试 verilogHDL语言及参考程序

数电实验考试 verilogHDL语言及参考程序

来源:小侦探旅游网
题目一: 表决器电路设计

一、设计任务及原理:所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则认为不同意。实验中用7个拨动开关来表示七个人,当对应的拨动开关输入为‘1’时,表示此人同意;否则若拨动开关输入为‘0’,则表示此人反对。表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。同时,数码管上显示通过的票数。 二、具体要求:

本实验就是利用实验系统中的拨动开关模块和LED模块以及数码管模块来实现一个简单的七人表决器的功能。拨动开关模块中的K1~K7表示七个人,当拨动开关输入为‘1’时,表示对应的人投同意票,否则当拨动开关输入为‘0’时,表示对应的人投反对票;LED模块中LED1表示七人表决的结果,当LED1点亮时,表示此行为通过表决;否则当LED1熄灭时,表示此行为未通过表决。同时通过的票数在数码管上显示出来。 在此实验中数码管、LED、拨动开关与FPGA的连接电路和管脚连接

使用模块信号

对应FPGA管脚

说 明

在以前的实验中都做了详细说明,这里不在赘述。 端口名

S1

S2

S3

S4

S5

S6

S7

DOUT0

LEDAG0

LEDAG1

按键开关S1

按键开关S2

按键开关S3

按键开关S4

按键开关S5

按键开关S6

按键开关S7

LED模块D1

数码管模块A段

数码管模块B段

R16

表示1号抢答者 P14 表示2号抢答者 P16 表示3号抢答者 P15 表示4号抢答者 M15 表示5号抢答者 N16 表示6号抢答者 N15 表示7号抢答者 L14 表决结果亮为通过

N4

抢答成功者 G4 号码显示

LEDAG2 数码管模块C段

H4

参考答案:

module liu(s,dout0,ledag); input [6:0]s; output dout0; output [6:0]ledag; reg [6:0]led; reg [2:0]k; reg clk_en; reg dout; always @(s) begin

k<=s[1]+s[2]+s[3]+s[4]+s[5]+s[6]+s[0]; if(k>=4) begin dout<=1; end else begin dout<=0; end

end always@(k) begin case (k)

3'd0:led<=7'b0111111; 3'd1:led<=7'b0000110; 3'd2:led<=7'b1011011; 3'd3:led<=7'b1001111; 3'd4:led<=7'b1100110; 3'd5:led<=7'b1101101; 3'd6:led<=7'b1111101; 3'd7:led<=7'b0000111; default:led<=7'b0000000; endcase end assign ledag=led; assign dout0=dout; endmodule

题目二:数字电子实验设计题目:彩灯循环电路设计

一、设计任务及原理:所谓彩灯循环就是对于一组彩灯(16盏),通过不同的工作模式可按照一定的规律来点亮或者熄灭。我们所要求的彩灯循环电路共分4个节拍,四个节拍按照一定的顺序依次循环执行。 二、具体要求:

系统设有一个复位键,当按下复位键后,系统从第一节拍开始执行直到第四节拍结束,然后从第一节拍重新开始新的循环。

第一节拍:16盏灯(Q1~Q16)从Q1开始依次点亮,直到Q16为止。每盏灯点亮的时间间隔为一秒,即Q1点亮后,间隔一秒后Q2点亮,然后依次点亮。(下面类似间隔时间都为1秒)

第二节拍:在第一节拍的基础上,16盏灯(Q1~Q16)从Q16开始依次熄灭,直到Q1为止。每盏灯熄灭的时间间隔为一秒,即Q16熄灭后,间隔一秒后Q15熄灭,然后依次熄灭直到全部熄灭为止。(下面类似间隔时间都为1秒)

第三节拍: 16盏灯(Q1~Q16)从两端开始依次点亮,即(Q1、Q16先点亮,然后Q2、Q15再点亮,直到全部16盏等点亮为止)。每盏灯点亮的时间间隔为一秒。

第四节拍:在第三节拍的基础上,16盏灯(Q1~Q16)从中间开始依次熄灭,即(Q8、Q9先熄灭,然后Q7、Q10再熄灭,直到全部16盏灯熄灭为止)。每盏灯熄灭的时间间隔为一秒。

在此实验中数码管、LED、拨动开关与FPGA使用模的连接电路和管脚连接在以前的实验中都做了详细说明,这里不在赘述。 端口

对应

说 明

块信号 FPGA管

名 S1

按键开R16 表示复

Q1 Q2 Q3 Q4 Q5

参考答案:

module liu2(clk,ret,led); input clk,ret; output[16:1] led; wire ret_en; reg [16:1]led1; reg [5:0]i,j,k,l,m; reg [31:0]cout; reg clk_en; assign ret_en=ret;

always@(posedge clk or negedge ret_en) begin

if(~ret_en)

关S1

位按键

Q1 L14 Q2 M14 Q3 N14 Q4 N13 Q5

P12 begin

led1<=16'b0000000000000000; i<=0; end else begin if(clk_en) begin j<=0; k<=0; i<=i+1; if(i<=16) begin //dex<=i; //l<=0; //m<=0; led1[i]<=1; //led1[i-j]<=0; end

else if(i>16&&i<=32) begin j<=k*2+1;

k<=k+1; led1[i-j]<=0; //dex<=dex-1; end

else if(i>32&&i<=40) begin

//dex<=dex+1; //l<=2*m+17; led1[i-32]<=1; led1[49-i]<=1; end

else if(i>40&&i<=48) begin

led1[i-32]<=0; led1[49-i]<=0; //dex<=dex-1; end else begin i<=0;

led1<=16'b0000000000000000; end

end end end assign led=led1; endmodule

题目三: 汽车尾灯控制电路设计

一、设计任务及原理:假设汽车尾部左右两侧各有3个指示灯, (1)汽车正常运行时,指示灯全灭。

(2)左转弯时,左侧3个指示灯按照左循环顺序点亮(1HZ)。 (3) 右转弯时,右侧3个指示灯按照右循环顺序点亮(1HZ)。 (4)临时刹车时,所有指示灯同时闪烁(1HZ)。 二、具体要求: 尾灯与汽车运行状态运行状态

左尾灯

右尾灯

表 开关控制 S1 S0 D1 D2 D3 D4 D5 D6 0 0 正常运行 灯灭

灯灭 0 1

左转弯

按照灯灭

D3,D2,D1顺序循环点亮

1 0

右转弯

灯灭

D4,D5,D6顺序循环点亮

1 1

临时停车

1HZ频率同时1HZ频率同时闪烁

闪烁

在此实验中数码管、LED、拨动开关与FPGA的连接电路和管脚连接在以前的实验中都做了详细说明,这里不在赘述。

端口名

使用模块信对应FPGA管

S1 S2 D1 D2

按键开关S1 按键开关S2 LED模块D1 LED模块D2

D3

LED模块D3

D4

LED模块D4

D5

LED模块D5

D6

LED模块D6

脉冲源50MHZ

CP

J3 N12 P12 N13 N14 脚 R16 P14 L14 M14

参考程序:

module lwf(clk,ledag,s); input clk; input [1:0]s; output[5:0]ledag; reg[5:0]led; reg[1:0]i,j,k; reg[31:0]cout; reg clk_en;

always@(posedge clk) begin if(clk_en) begin

if(s==2'b00) begin

i<=0;j<=0;k<=0; led<=6'b000000; end

else if(s==2'b01) begin

led<=6'b000000; k<=0;

j<=0; i<=i+1; if(i==2'b01) begin

led<=6'b001000; end

if(i==2'b10) begin

led<=6'b010000; end

if(i==2'b11) begin

led<=6'b100000; i<=0; end end

else if(s==2'b10) begin

led<=6'b000000; k<=0; i<=0; j<=j+1;

if(j==2'b01) begin

led<=6'b000100; end

if(j==2'b10) begin

led<=6'b000010; end

if(j==2'b11) begin

led<=6'b000001; j<=0; end end

else if(s==2'b11) begin

led<=6'b000000; i<=0; j<=0; k<=k+1; if(k==2'b01) begin

led<=6'b000000; end

if(k==2'b10) begin

led<=6'b111111; k<=0; end end end end assign ledag=led; endmodule

题目四: 数字电子实验设计题目:抢答器电路设计 一、设计任务及原理:抢答器在各类竞赛性质的场合得到了广泛的应用,它的出现,消除了原来由于人眼的误差而未能正确判断最先抢答的人的情况。抢答器的原理比较简单,首先必须设置一个抢答允许标志位,目的就是为了允许或者禁止抢答者按按钮;如果抢答允许位有效,那么第一个抢答者按下的按钮就将其清除,同时记录按钮的序号,也就是对应的按按钮的人,这样做的目的是为了禁止后面再有人按下按钮的情况。总的说来,抢答器的实现就是在

抢答允许位有效后,第一个按下按钮的人将其清除以禁止再有按钮按下,同时记录清楚抢答允许位的按钮的序号并显示出来,这就是抢答器的实现原理。 二、具体要求:

本实验的任务是设计一个四人抢答器,用按键模块的S8来作抢答允许按钮,用S1~S4来表示1号抢答者~4号抢答者,同时用LED模块的LED1~LED4分别表示于抢答者对应的位子。具体要求为:按下S8一次,允许一次抢答,这时S1~S4中第一个按下的按键将抢答允许位清除,同时将对应的LED点亮,用来表示对应的按键抢答成功。数码管显示对应抢答成功者的号码。 在此实验中数码管、LED、按键开关与FPGA的连接电路和管脚连接在以前的实验中都做了详细说明,这里不在赘述。 端口名

S1

按键开关S1

S2

按键开关S2

S3

按键开关S3

S4

按键开关S4

P15 P16 P14 R16

表示1号抢答者 表示2号抢答者 表示3号抢答者 表示4号抢答者

使用模块信号

对应FPGA管脚

说 明

S8 按键开关S12

DOUT0 LED模块D1 DOUT1 LED模块D2 DOUT2 LED模块D3 DOUT3 LED模块D4 LEDAG0 数码管模块A段

LEDAG1 数码管模块B段

LEDAG2 数码管模块C段

参考程序:

module liu1(s1,s2,s3,s4,s8,led,ledag); input s1,s2,s3,s4; input s8;

output [6:0]ledag; output [3:0]led;

M15 开始抢答按键

L14 1号抢答者

M14 2号抢答者

N14 3号抢答者

N13 4号抢答者

N4 抢答成功者

G4 号码显示

H4

reg [3:0]led; reg k; reg [6:0]ledag1; //initial // k<=0; always @( s8) begin

if(s8==0)begin

k<=1;led<=4'b0000;ledag1<=7'b0111111;end else begin if(k==1) begin if(~s1) begin

led<=4'b1000; ledag1<=7'b0000110; k<=0; end else if(~s2) begin

led<=4'b0100;

ledag1<=7'b1011011; k<=0; end

else if(~s3) begin

led<=4'b0010; ledag1<=7'b1001111; k<=0; end else if(~s4) begin

led<=4'b0001; ledag1<=7'b1100110; k<=0; end end end end assign

ledag=ledag1; endmodule

因篇幅问题不能全部显示,请点此查看更多更全内容

Top