电子秒表xin

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子秒表的设计
设计内容:
设计一个电子秒表电路second.bdf ,使其按0.01s的步长进行计时。

假设输入时钟周期为0.1ms 。

该电子秒表具有清零和启动/停止计数功能,并用数码管显示其秒高位、秒低位,百分秒高位、百分秒低位。

为便于显示,秒和百分秒信号均采用BCD码计数方式。

整个电路分为时钟分频电路(将T = 0.1ms分频为T = 0.01s)、 2位十进制计数器和7段LED数码管译码器3个子模块。

设计步骤如下:
一、创建工程
1、在资源管理器下创建一个工作目录,将其命名为second_:
2、启动Quatus II,执行菜单命令 File > New Project Wizard,创建一
个工程,工程名为second_,如图表1。

图表 1
3、选择所建立工程的工作目录,输入工程名称、顶层实体名,点击next ,
出现图表2 的对话框:
图表 2
此步可以先略去,以后再将需要的工作目录文件加进来。

点next,出现图表3对话框
图表 3
4、选择所用器件,此处选用的是 CycloneIII EP3C16F484C6.点击next ,finish,工程建立完成。

二、设计子模块
(一)、50MHZ至10KHZ分频电路设计
1、点击file new,在new对话框中选择如下图表所示,然后点击ok。

图表4
2、将所出现的文本文件命名为clock .v,采用Verilog HDL语言描述。

其对应Verilog 代码如下:
module clock (clk10K,clk,clkin);
output clk10K,clk;
input clkin;
reg [12:0] count1;
reg [6:0] count2;
reg clk10K,clk;
always @ (posedge clkin)
begin
if (count1[12:0]==5000-1)
count1[12:0]=0;
else
count1[12:0]=count1[12:0]+1;
clk10K=count1[12];
end
always @ (posedge clk10K )
begin
if(count2==100-1)
count2[6:0]=0;
else
count2[6:0]=count2[6:0]+1;
clk=count2[6];
end
endmodule
3、保存此文件。

4、将其设置为顶层模块,执行Processing > Start > Start Analysis &Synthesis命令,进行分析与综合。

图表 5
5、执行Processing > GenerateFunctional Simulation Netlist命令,产功能仿真网表文件。

6、仿真通过后,执行Create/Update > Create Symbol Files for Current File 菜单命令,创建模块符号,如图表6:
图表 6
(二)、两位十进制计数器的设计:
方法同模块(一),建立一个文本文件,将Verilog 代码写入,进行编译,编译通过后,对其进行功能仿真。

其对应的Verilog代码如下:
module bcd_counter (high1,low1,high2,low2,cn,clr,clk);
output high1,low1,high2,low2, cn;
input clr,clk;
reg [3:0] high1,low1,high2,low2;
reg cn;
always @ (posedge clk or posedge clr )
begin
if (clr)
begin
cn=0;
high1[3:0]=0;
low1[3:0]=0;
high2[3:0]=0;
low2[3:0]=0;
end
else
begin
if ( low1[3:0]==9 )
begin
low1[3:0]=0;
if( high1[3:0]==9 )
begin
high1[3:0]=0;
cn=1;
if ( low2[3:0] == 9 )
begin
low2[3:0]=0;
if ( high2[3:0] == 5 )
begin
high2[3:0]=0;
low2[3:0]=0;
end
else
high2[3:0]=high2[3:0]+1;
end
else
begin
low2[3:0]=low2[3:0]+1;
end
end
else
high1[3:0]=high1[3:0]+1;
end
else
begin
low1[3:0]=low1[3:0]+1;
end
end
end
endmodule
其对应的模块符号图如下图图所示:
图表7
(三)、7段LED显示器(共阳极)译码器设计
其设计步骤如与以上的模块设计步骤相同,其对应的Verilog代码如下:
module counter_7seg (segment,data);
output [6:0]segment;// segment[6:0]
input[3:0] data;
reg [6:0]segment;
always @(data)
begin
case (data)
4'd0:segment = 7'b1000000;
4'd1:segment = 7'b1111001;
4'd2:segment = 7'b0100100;
4'd3:segment = 7'b0110000;
4'd4:segment = 7'b0011001;
4'd5:segment = 7'b0010010;
4'd6:segment = 7'b0000010;
4'd7:segment = 7'b1111000;
4'd8:segment = 7'b0000000;
4'd9:segment = 7'b0010000;
default:segment = 7'b1111111;
endcase
end
endmodule
其对应的符号如图8所示:
图表8
(四)、清零、停止/启动模块的设计
由于该计数器具有清零和停止/启动计数功能,所以增加了该模块。

其设计步骤与以上设计步骤相同,其对应的Verilog代码如下图图9所示:module start (in,stop,clk1);
output clk1;
input in,stop;
assign clk1=stop∈
endmodule
其对应的符号图如图9所示:
图表9
三、设计顶层图形文件
1、建立一个新文件file new,打开new对话框,如图表10,选择Block Diagram/Schematic File
图表10
点击ok,一个.bdf文件就建好了。

2、在窗口的空白处双击鼠标左键,或单击符号工具按钮,或选择菜单Edit>Insert Symbol,打开Symbol对话框,如图表11:
图表 11
3、将各子模块的符号添加到symbol 中,添加输入、输出引脚,并对其进行连线
4、生成的顶层图形如图表12 :
图表 12
5、将其保存,命名为second_,设为顶层模块,并进行全编译,执行Processing > Start Compilation命令,或单击工具条上的全编译快捷按钮。

6、给输入、输出引脚分配引脚号码,Assignnments > Assignment Editor
如图表13 所示:
图表13
7、保存管脚:processing→start→start I/O assignment analysis,并对
其进行全编译。

8、编程下载,连接开发板,执行Tools > Programmer命令,或单击编程快捷按
钮,如下图表14所示:
图表14
9、点击start,开始编程下载。

若完成编程,则在Message窗口中显示Configuration succeeded。

10、验证设计,利用实验板上的按钮BUTTON2产生清零信号,观察数码管和LED 的显示,看是否与预定的功能相符。

相关文档
最新文档