FPGA课程设计

您所在的位置:网站首页 eda实验参考文献 FPGA课程设计

FPGA课程设计

2023-08-24 06:20| 来源: 网络整理| 查看: 265

2019 级  电子科学与技术 专业FPGA课程设计

报   告

2022  年 5 月 20 日

多功能数字电子钟的设计

摘要

电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用EDA技术设计的结果既可以用FPGA / CPLD来实施验证,也可以直接做成专用集成电路(ASIC)。

本文是用verilog语言来描述一个基于FPGA的多功能数字电子时钟的设计,该设计具备时间显示,准确计时,时间校准, 定时闹钟等功能。本文首先介绍了需要完成的工作,然后介绍了系统整体设计以及源代码开发过程。源代码首先在Quartus软件上进行仿真、综合,通过后下载到正点原子新启点开发板上,在FPGA器件上的试验结果表明上述功能全部正确,工作稳定良好。

关键词:EDA;数字闹钟;verilog

Abstract

Electronic design automation (EDA) is a technology to realize the automatic design of electronic system or electronic products. The design results using EDA technology can be verified by FPGA / CPLD or directly made into application specific integrated circuit (ASIC).

This paper uses Verilog language to describe the design of a multifunctional digital electronic clock based on FPGA. The design has the functions of time display, accurate timing, time calibration, timing alarm clock and so on. This paper first introduces the work to be completed, and then introduces the overall design of the system and the source code development process. The source code is first simulated and synthesized on quartus software, and then downloaded to the punctual atom xinqidian development board. The test results on FPGA devices show that all the above functions are correct and work stably.

Keywords: EDA; Digital alarm clock; verilog

目录

一、概述所作题目的意义,拟完成的工作 2

1.1选题意义 2

1.2 拟完成的工作 2

二、系统整体设计 3

2.1 系统方框图设计 3

2.2 功能介绍 3

三、代码实现 3

3.1 顶层模块 3

3.2 各底层模块 7

3.3 系统总原理框图 37

3.4 仿真波形 38

四、实物调试效果 40

4.1 硬件管脚分配说明 40

4.2 实物及现象 41

五、 课程设计的体会 45

六、参考文献 46

一、概述所作题目的意义,拟完成的工作

1.1选题意义

数字钟是一种以数字电路为基础,综合了模拟电路和电路基础知识设计出的一种时间数字显示装置。它具有结构简单、设计方便、稳定性强等优点,已广泛应用于各种公共场所,成为人们日常生活的必需品,给人们的生活、学习、工作带来很大的方便。由于数字集成电路的发展和石英品体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。随着科学技术及人们生活观念的改变,数字钟的设计显示出新的发展趋势:体积更加小巧;功能更加强大,如增加了定时控制,闹铃,仿广播电台等功能;设计的外表更加的时尚、美观,适合人们的审美观点的改变。因此,更为先进的电子钟的研究有着良好的发展前景和市场潜力。

数字钟不仅仅是一个数字电路,它在其他领域也有相当大的发展空间,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

1.2 拟完成的工作

1、能够用数码管或液晶屏显示时、分和秒(采用24小时进制);

2、具有按键校时功能,对小时和分单独校时,对分校时时,停止向小时进位;

3、具有闹钟功能,闹钟铃声为自主设计的用蜂鸣器发出的声音;

4、通过按键设置闹钟功能,且自动停闹和手动操作停闹; 

5、其它创意设计:增加闹钟模式开启指示灯和闹铃提示灯;可以作为秒表使用。

二、系统整体设计 2.1 系统方框图设计

2.2 功能介绍

本系统分为分频模块、计时模块、闹钟模块、秒表模块、控制模块、显示模块六个模块:分频模块给计时秒表闹钟模块提供时钟信号,控制模块控制计时秒表闹钟模块,通过显示模块的段选和位选进行显示。

三、代码实现 3.1 顶层模块

clock_top.v module clock(             //input             clk,//时钟信号             rst_n,//复位             key, mkey, button,             //output             data, //a-g段 data_db,             weixuan,//位选 beep, LED, nled, bled,            ); input clk;//时钟信号 input rst_n;//复位 input [2:0] key; input mkey; input button; output [3:0] LED; output nled; output bled; output [6:0] data;//段选 output data_db; output [7:0] weixuan;//位选 output beep; wire beep_1; wire [1:0] H_data1; wire [3:0] H_data2; wire [2:0] H_data3; wire [3:0] H_data4; wire [2:0] H_data5; wire [3:0] H_data6; wire [3:0] H_data7; wire [3:0] H_data8; wire [1:0] N_data1; wire [3:0] N_data2; wire [2:0] N_data3; wire [3:0] N_data4; wire [1:0] C_data1; wire [3:0] C_data2; wire [2:0] C_data3; wire [3:0] C_data4; wire [2:0] C_data5; wire [3:0] C_data6; wire [3:0] C_data7; wire [3:0] C_data8; wire [3:0] pin_status_ctrl; key    U1( .clk(clk),   .rst_n(rst_n),   .key(key),   .pin_status_ctrl(pin_status_ctrl)   ); model U2(.clk(clk),.rst_n(rst_n),.pin_status_ctrl(pin_status_ctrl),                .H_data1(H_data1),    .H_data2(H_data2),    .H_data3(H_data3),    .H_data4(H_data4),    .H_data5(H_data5),    .H_data6(H_data6),    .H_data7(H_data7),    .H_data8(H_data8), .Display_Model(Display_Model), .N_data1(N_data1),//闹钟    .N_data2(N_data2),    .N_data3(N_data3),    .N_data4(N_data4), .LED(LED),                ); weixuan U3( .clk(clk),.rst_n(rst_n),.weixuan(weixuan)); duanxuan  U4(.clk(clk),.rst_n(rst_n), .C_data1(C_data1),//实际显示 .C_data2(C_data2), .C_data3(C_data3), .C_data4(C_data4), .C_data5(C_data5), .C_data6(C_data6), .C_data7(C_data7), .C_data8(C_data8), .data(data), .data_db(data_db) ); xianshi     U5(                  .clk(clk),         .rst_n(rst_n),   .mkey(mkey),         .H_data1(H_data1),//时钟      .H_data2(H_data2),      .H_data3(H_data3),      .H_data4(H_data4),      .H_data5(H_data5),      .H_data6(H_data6),      .H_data7(H_data7),      .H_data8(H_data8),         .Display_Model(Display_Model),//显示模式         .N_data1(N_data1),//闹钟      .N_data2(N_data2),      .N_data3(N_data3),      .N_data4(N_data4),      .C_data1(C_data1),//实际显示   .C_data2(C_data2),   .C_data3(C_data3),   .C_data4(C_data4),   .C_data5(C_data5),   .C_data6(C_data6),   .C_data7(C_data7),   .C_data8(C_data8),                  );    beep U6( .clk(clk),.beep_1(beep_1),.beep(beep), .bled(bled),  ); naozhong    U7( .clk(clk), .rst_n(rst_n),                .button(button),      .H_data1(H_data1),//时钟      .H_data2(H_data2),      .H_data3(H_data3),      .H_data4(H_data4),     .N_data1(N_data1),//闹钟      .N_data2(N_data2),      .N_data3(N_data3),      .N_data4(N_data4),        .beep_1(beep_1), .nled(nled),                ); endmodule

模块仿真:

3.2 各底层模块

3.2.1 beep.v(蜂鸣器控制)

module beep(               clk,   beep_1,   beep,   bled); //模块名称beep input clk; //系统时钟50MHz input beep_1; output beep; //蜂鸣器输出端 output bled; reg bled; reg beep_r; //寄存器 reg[27:0]count; assign beep = beep_r; //脉冲输出 always@(posedge clk) if(beep_1==1'b1)   begin count


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3