学科竞赛-简易电子时钟设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易电子时钟设计实验报告
实验二简易电子时钟设计
学院:研究生院学号:1400030034 姓名:张秋明
一、实验目的及要求
设计一个简易电子时钟,实现分、秒计时功能,使之在控制实验板上液晶输出分、秒数值,在环境下,编写源文件,用软件器件实现。
二、实现程序
module clk_gen(clk,rst_n,clk_pwm,clk_frame);
input clk;
input rst_n;
output clk_pwm;
output clk_frame;
reg clk_pwm;
reg clk_frame;
reg [11:0] count_pwm;
reg [13:0] count_frame;
always@(posedge clk or negedge rst_n) //一秒的设置
begin
if(rst_n==1'b0) begin
count_pwm clk_pwm end
else begin
if(count_pwm==12'b0000000001010)
begin
count_pwm clk_pwm end
else
count_pwm end
end
always@(posedge clk or negedge rst_n)
begin
if(rst_n==1'b0) begin
count_frame clk_frame end
else begin
if(count_frame==14'b11000000000000) begin
count_frame clk_frame end
else
count_frame end
end
endmodule
module clock(clkk,rstn,minute_h,minute_l,second_h,second_l); //时钟的进位机理input clkk;
input rstn;
output [3:0] minute_h; //分钟的高位
output [3:0] minute_l; //分钟的低位
output [3:0] second_h; //秒钟的高位
output [3:0] second_l; //秒钟的低位
reg [3:0] minute_h;
reg [3:0] minute_l;
reg [3:0] second_h;
reg [3:0] second_l;
reg second_l_flag; //秒钟低位的进位标志
reg second_h_flag; //秒钟高位的进位标志
reg minute_l_flag; //分钟低位的进位标志
reg clk1;
reg [22:0] count;
always@(posedge clkk)
begin
if(count == 23'b10110111000110110000000)
begin
count clk1 end
else
count end
always @(posedge clk or negedge rstn)
begin
if(!rstn)
clk1 else
clk1 end
always @(posedge clk1 or negedge rstn)
if(!rstn)
begin
second_l second_l_flag end
else
begin
if(second_l==4'b1001)
begin
second_l second_l_flag end
end
always @(posedge second_l_flag or negedge rstn)
if(!rstn)
begin
second_h second_h_flag end
else
begin
if(second_h==4'b0101)
begin
second_h second_h_flag end
end
always @(posedge second_h_flag or negedge rstn)//分钟的低位
if(!rstn)
begin
minute_l minute_l_flag end
else
begin
if(minute_l==4'b1001)
begin
minute_l minute_l_flag end
end
//分钟的高位
always @(posedge minute_l_flag or negedge rstn) //进位标志位为上升沿时变化if(!rstn)
begin
minute_h end
else
begin
if(minute_h==4'b0101)
begin
minute_h end
end
endmodule
三、实验步骤
1、建立新工程dzsz,在Location栏选用上面所建文件夹yjxs, 然后点击NEXT,
在新弹出的对话框NEW PROJECT点击NEXT,在新出现的对话框中选择相应芯片,本实验所选芯片应为MachXO2-LCMXO2-1200ZE-2MG132C.
2、在Lattice Diamond 主界面File->Add->Existing files,添加刚刚放新建dzsz
文件夹中的.v文件。
3、综合,编译。
4、在新建项目file->new->file,在对话框New File中,选择verilog;在name
栏输入文件名yjxs,点击NEXT,在Lattice Diamond主界面出现LCD_DISPLAY.v.
LCD_DISPLAY实验中,在TxetEditer中编写verilog模块代码调用
seg4_7.v,clk_gen.v,LCDDight.v中的模块(实现在LCD屏幕上显示特定字符)并保存。
5、调试。
在主界面Process窗口中双击Traslate Design,对所编写代码进行调
试。
6、管脚分配。
在Lattice主界面中,点击Tools->Spreadsheet view,打开Spreadsheet veiw框。
在pin一栏中填入各输入输出映射管脚。
如表7.1分配完管脚之后并保存,在主界面Process框Map Design,Place & Route Design,Export Files 等选中所有选项,然后右键选中JEDEC Files,选中其下拉菜单中的Return All。
表7.1 管脚分配
7、程序烧写。
四、实验结果
液晶显示屏的显示结果如图7.1所示:从一秒开始计时,记到六十秒变为一分钟,继续计时,直到两分钟,三分钟,一直持续。
五、本次实验心得体会
在本次试验中因为未了解按键开关的为高电平,导致结果不能验证。
找到原因后验证结果正确。