实验06辩论赛计时器

更新时间:2024-04-29 03:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字系统课程设计 题目: 辩论赛计时器

专业: 自动化

班级: 10级自动化班 姓名,学号:

辩论赛计时器

一、

实验目的

1、深入了解Verilog HDL语言语法

2、学会独立思考、设计及实现较大规模的数字电路系统

二、 实验原理

本实验中将依照现有辩论赛规则,制作一个简易的计时装置。辩论赛由开篇立论、双方攻辩、攻辩小结、自由辩论和总结陈词五部分组成。

1) 开篇立论、攻辩小结、总结陈词部分需一方发言终止后,另一方才

允许发言。

2) 双方攻辩和自由辩论中,双方需要交替发言,一方发言时,本方计

时器工作;另一方计时器处于停滞状态。

本实验中要完成倒数计时,状态控制与过渡,文字提示的显示,按键消 抖等功能。系统正常工作时,发光二极管循环闪烁提醒辩手时间的流逝;八段数码管显示剩余时间;发光数码管显示发言者属于哪一方(正方/反方);拨码开关控制是对正方计时,还是对反方计时;按键1控制计时状态;按键2实现计时状态的转换。

三、 四、

实验学时:24学时 实验步骤

1) 根据实验要求作预习报告。 2) 根据实验需求,进行程序的设计。 3) 根据以前设计的经验,反复调试程序。

4) 调试通过,下载到FPGA开发板上进行实践调试。 5) 完成整个过程,写实验报告。 五、

实验要求:

实验报告应包含实验目的、实验原理,设计思路,实验程序,实验结果,实验总结。其中具体要求为: 1) 2) 3)

程序实现模块化设计,写出设计思路,认真标注代码注释; 达到正确地运行结果;

实验中出现的问题进行详细总结。

module shiyan6(clk,stop,zof,zl,fl,cc,rr,leds,ledd,zq,fq);

input clk;

input stop,zof,zq,fq;

output zl,fl,cc,rr,leds,ledd; reg[6:0] z,f;

reg[7:0] c,cc,rr,leds,ledd; reg[2:0]n; reg[25:0]i,j; reg tick,tick2; reg zl,fl;

reg [3:0]zs,zg,fs,fg;

always @(posedge clk) begin if(j==9999999) end

always @(posedge clk) begin if(i>999)

begin tick2<=~tick2;

begin tick<=~tick;

j<=0; end else

j<=j+1;

i<=0; end else

i<=i+1;

end

always @(posedge clk) begin if(zof)

always @(posedge tick)

begin zl<=1'b1;fl<=1'b0;end

else begin zl<=1'b0;fl<=1'b1;end

end

begin if(zof) begin if(stop==0) begin if(z==0)

begin z<=60;zs<=6;zg<=0;end else

begin z<=z-1;zs<=z/10;zg<=z;end if(zq==1)

begin z<=60;zs<=6;zg<=0;end

end

end

else begin

if(stop==0) begin if(f==0)

begin f<=60;fs<=6;fg<=0;end else

begin f<=f-1;fs<=f/10;fg<=f;end if(fq==1)

begin f<=60;fs<=6;fg<=0;end

end

end

end

always @(posedge tick2) begin case(n) 0:begin

ledd<=8'b11101111; case(zs)

0:leds<=8'b1111110; //0 zhengfang 1:leds<=8'b0110000; //1 2:leds<=8'b1101101; //2 3:leds<=8'b1111001; //3

4:leds<=8'b0110011;

//4

shiwei

5:leds<=8'b1011011; 6:leds<=8'b1011111;

//5 //6

endcase end 1:begin case(zg)

ledd<=8'b11011111;

0:leds<=8'b1111110; //0 zhengfang gewei

endcase end 2:begin

case(fs)

endcase end 3:begin

case(fg)

1:leds<=8'b0110000; //1 2:leds<=8'b1101101; //2 3:leds<=8'b1111001; //3 4:leds<=8'b0110011; //4 5:leds<=8'b1011011; //5 6:leds<=8'b1011111;

//6

7:leds<=8'b1110000; //7 8:leds<=8'b1111111; //8 9:leds<=8'b1111011; //9

ledd<=8'b11111110;

0:leds<=8'b1111110; //0 fanfang shiwei 1:leds<=8'b0110000; //1 2:leds<=8'b1101101; //2 3:leds<=8'b1111001; //3 4:leds<=8'b0110011; //4 5:leds<=8'b1011011; //5 6:leds<=8'b1011111;

//6

ledd<=8'b11111101; 0:leds<=8'b1111110; //0 fanfang gewei 1:leds<=8'b0110000; //1 2:leds<=8'b1101101; //2 3:leds<=8'b1111001; //3 4:leds<=8'b0110011; //4 5:leds<=8'b1011011; //5 6:leds<=8'b1011111;

//6

7:leds<=8'b1110000; //7 8:leds<=8'b1111111; //8 9:leds<=8'b1111011; //9

endcase

end endcase

if(n==4) n<=0; else n<=n+1; end

always @(posedge tick2) begin if(zof)

begin case(c)

0:begin cc=8'b00000000;rr=8'b01111111;end 1:begin cc=8'b01111110;rr=8'b10111111;end 2:begin cc=8'b00001000;rr=8'b11011111;end 3:begin cc=8'b00001000;rr=8'b11101111;end 4:begin cc=8'b00101110;rr=8'b11110111;end 5:begin cc=8'b00101000;rr=8'b11111011;end 6:begin cc=8'b11111111;rr=8'b11111101;end 7:begin cc=8'b00000000;rr=8'b11111110;end endcase

if(c==8) c<=0;

else c<=c+1; end

else begin

case(c) 0:begin cc=8'b01111110;rr=8'b01111111;end

1:begin cc=8'b01000000;rr=8'b10111111;end 2:begin cc=8'b01111110;rr=8'b11011111;end 3:begin cc=8'b01100010;rr=8'b11101111;end 4:begin cc=8'b01010100;rr=8'b11110111;end 5:begin cc=8'b01001000;rr=8'b11111011;end 6:begin cc=8'b01010100;rr=8'b11111101;end 7:begin cc=8'b01000011;rr=8'b11111110;end

endcase if(c==8) c<=0;

else c<=c+1; end end

endmodule

本文来源:https://www.bwwdw.com/article/wt0g.html

Top