基于CPLD的数字钟设计(二)

基于CPLD的数字钟设计(一) 在“夏宇闻老师之verilog学习站”(http://verilog.113.tofor.com)中,有这样一道题目。设计要求如下:基于CPLD的数字钟设计设计任务:1、        设计一个具有时、分、秒计时,6位数字显示的时钟电路;2、        具有快速校时功能;3、        具有整点音响自动报时;4、        以时钟电路为基础,设计如下表所示的作息时间自动打铃器; 阅读详情

把代码改了一下,编译通过了,接下来得做仿真,除错了。呵呵,新手,自己鼓励一下自己!

/*+FHDR--------------------------------------------------------
  file name: clock.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  Clock:     1hz
  Reset:     Synchronous,Low
  include:   counter60.v
             counter24.v
  --------------------------------------
  Keywords:  Counter, Digital Clock
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns
`include "counter60.v"
`include "counter24.v"
`include "sel.v"

module clock(clk,
             fm_key,
             fh_key,
             reset,
             h,
             m,
             s);
            
          
            
input clk;
input fm_key;
input fh_key;
input reset;
output [4:0] h;
output [6:0] m;
output [6:0] s;

 

counter60 counters (.clk(clk),
                    .reset(reset),
                    .cout(cout_s),
                    .out(s));
                   
counter60 counterm (.clk(clkm),
                    .reset(reset),
                    .cout(cout_m),
                    .out(m));
                   
counter24 counterh (.clk(clkh),
                    .reset(reset),
                    .cout(cout_h),
                    .out(h));
                        
sel selm (.a(clk),
          .b(cout_s),
          .f(clkm),
          .sel(fm_key));
         
sel selh (.a(clk),
          .b(cout_m),
          .f(clkh),
          .sel(fh_key));  

endmodule

/*+FHDR--------------------------------------------------------
  file name: counter60.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  include:   counter6.v
             counter10.v
  --------------------------------------
  Keywords:  Counter
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns
`include "counter6.v"
`include "counter10.v"

module counter60(clk,
                 reset,
                 cout,
                 out);

input  clk;
input  reset;
output cout;
output [6:0] out;

wire cout_6;
wire cout_10;
wire [2:0] out_6;
wire [3:0] out_10;
 
counter6  counter6_1 (.clk(clk),
                    .reset(reset),
                    .cout(cout_6),
                    .out(out_6));
counter10 counter10(.clk(cout_6),
                    .reset(reset),
                    .cout(cout),
                    .out(out_10));

assign out = {out_6,out_10};

endmodule

//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns
`include "counter6.v"
`include "counter4.v"

module counter24(clk,
                 reset,
                 cout,
                 out);

input  clk;
input  reset;
output cout;
output [4:0] out;

wire cout_6;
wire cout_4;
wire [2:0] out_6;
wire [1:0] out_4;
 
counter6  counter6_0 (.clk(clk),
                    .reset(reset),
                    .cout(cout_6),
                    .out(out_6));
counter4  counter4  (.clk(cout_6),
                    .reset(reset),
                    .cout(cout),
                    .out(out_4));

assign out = {out_6,out_4};

endmodule

/*+FHDR--------------------------------------------------------
  file name: counter6.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  Keywords:  Counter
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns

module counter6(clk,
                reset,
                cout,
                out);
            
input  clk;
input  reset;
output cout;
output [2:0] out;

reg cout;
reg [2:0] out;

reg [2:0] counter;

always@(posedge clk)
    if(!reset)
        out <= 0;
    else
        for(counter=1;counter<6;counter=counter+1)
            out <= counter;
           
endmodule
               
/*+FHDR--------------------------------------------------------
  file name: counter10.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  Keywords:  Counter
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns

module counter10(clk,
                reset,
                cout,
                out);
            
input  clk;
input  reset;
output cout;
output [3:0] out;

reg cout;
reg [3:0] out;

reg [3:0] counter;

always@(posedge clk)
    if(!reset)
        out <= 0;
    else
        for(counter=1;counter<10;counter=counter+1)
            out <= counter;
           
endmodule

/*+FHDR--------------------------------------------------------
  file name: counter4.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  Keywords:  Counter
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns

module counter4(clk,
                reset,
                cout,
                out);
            
input  clk;
input  reset;
output cout;
output [1:0] out;

reg cout;
reg [1:0] out;

reg [1:0] counter;

always@(posedge clk)
    if(!reset)
        out <= 0;
    else
        for(counter=1;counter<4;counter=counter+1)
            out <= counter;
           
endmodule

/*+FHDR--------------------------------------------------------
  file name: sel.v
  Author:    Clarke.Lee
  E-mail:    clarke.lee@163.com
  --------------------------------------
  Keywords:  select devise
//-FHDR---------------------------------------------------------*/ 

`timescale 1ns/1ns

module sel(a,
           b,
           f,
           sel);
input a;
input b;
input sel;
output f;

assign f = (a||sel)&(!sel||b);

endmodule                        
               

 

 

基于CPLD的数字钟设计:从VHDL模块化到硬件调试全流程解析 可编程逻辑器件(PLD)是现代数字系统设计的核心,它允许工程师通过硬件描述语言(如VHDL)在芯片内部实现复杂的组合与时序逻辑。其工作原理是将逻辑功能映射到可配置的逻辑单元,通过EDA工具综合、布局布线生成硬件电路。这种技术价值在于大幅缩短开发周期、提高系统可靠性,并支持硬件功能的在线重构。在应用场景上,PLD广泛用于接口扩展、时序控制、协议转换等领域。本文以数字钟设计为例,详细展示了如何利用VHDL实现分频、计数、译码、动态扫描等核心模块,并深入探讨了CPLD在并行控制与实时响应方面的优势。通过模块化设计 阅读详情

相关推荐

基于VHDL的多功能电子钟设计

这个模块是整个数字时钟的核心,首先我们先说明各个端口,1hz时钟信号输入,复位键输入,按键输入,蜂鸣器控制,数码管位选信号输出,数码管段选信号输出,LED灯输出。然后就进行各个模块的调用声明:调用秒钟计数模块声明,调用分钟计数模块声明,调用小时计数模块声明,调用译码显示模块声明(扫描时钟输入,闪烁数码管位选择,时间数据输入,位选信号输出,段选信号输出),调用分频模块声明,因为黑金AX301的EP4CE6F17C8芯片的原始频率并不是时钟信号所需要的频率,所以要对它的原始信号进行分频。校准时分秒清零的功能;

qq_26335381的博客 7882

基于CPLD的数字时钟设计

由于此课程设计主要以CPLD--EPM570T100C5N芯片为主,通过Quartus II编程软件进行编程,能实现以了时间24小时为一个周期的计时和显示(时,分,秒共6个数码管显示);本设计还拓展了闹钟模块和秒表模块。有校时功能,可以分别对时,分,秒的值单独校时,使其校正到标准时间(即可以对时间进行预值);计时过程具有报时功能,当时间到达整点进行5S蜂鸣或指示灯亮报时。在各种模块中的操作不会影响其他两个模块。

小梁同学的博客 2524

【IoT】嵌入式设计:基于CPLD设计的可调数字时钟

电子时钟设计

产品线负责人 816

eda多功能数字钟课程设计_适用多功能数字钟(EDA技术课程设计)

适用多功能数字钟(EDA技术课程设计) 课课 程程 设设 计计 说说 明明 书书 课程设计名称课程设计名称 EDA 技术课程设计 题题 目目 适用多功能数字钟 日期2010 年 6 月 18 日 成绩 适用多功能数字钟适用多功能数字钟 摘摘 要要Verilog 是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和 模拟等多个阶段。随着硬件设计规模的不断扩大,应用硬件描述语言进行描述的 CP...

weixin_39845221的博客 1255

VHDL数字钟的设计与制作

本文介绍了使用VHDL语言设计和制作数字钟的过程。我们从设计思路开始,定义了一个VHDL模块,并逐步实现了时钟信号处理、数码管显示和按钮控制等功能。希望这个示例能帮助您理解数字钟的设计原理,并在您的嵌入式系统应用中发挥作用。数字钟是一种常见的嵌入式系统应用,它能够准确地显示时间,并提供一系列的功能和特性。至此,我们完成了VHDL数字钟的设计和制作。请注意,以上代码仅为示例,根据您的具体要求和硬件平台,可能需要进行适当的修改。这是一个简单的VHDL数字钟设计示例,您可以根据需要进行修改和扩展。

CyberSphinx的博客 1622

Verilog HDL设计实践:多功能数字钟项目

Verilog HDL是一种用于电子系统设计和硬件描述的语言,广泛应用于数字电路的建模、仿真及综合。它允许设计师以文本形式描述复杂的数字电路,并且可被EDA(Electronic Design Automation)工具直接处理。在数字钟的设计与开发过程中,系统集成是关键一步,它确保了各个模块能够相互协作,以实现最终的产品功能。系统集成不仅仅是在物理层面上将各个部分连接起来,更重要的是在逻辑和功能上实现无缝对接。

weixin_33308579的博客 992

eda多功能数字钟课程设计_eda多功能数字钟设计_相关文章专题_写写帮文库

时间:2019-05-12 06:44:14 作者:admin数字钟 一、实验目的 1、掌握多位计数器相连的设计方法。 2、掌握十进制,六进制,二十四进制计数器的设计方法。 3、掌握扬声器的驱动及报时的设计。 4、LED灯的花样显示。 5、时间:2019-05-14 21:02:29 作者:admin课 程 设 计 报 告 设计题目:用VHDL语言实现数字钟的设计 班 级:电子1002班 学 号:...

weixin_29469949的博客 975

FPGA实现的数字钟设计项目

在现代电子技术领域中,FPGA(现场可编程门阵列)因其独特的灵活性和高性能成为了实现各种复杂数字逻辑电路设计的理想选择。本章旨在介绍FPGA在数字钟设计中的应用背景、设计动机以及它的基本设计思路。FPGA(Field-Programmable Gate Array)是一种可以通过编程来配置的半导体器件,能够实现硬件级别的并行处理能力。与传统的CPU相比,FPGA在数据处理速度和能效方面具有显著优势。

weixin_30798867的博客 912

【亲测免费】 基于Quartus II的VHDL数字钟设计

本资源提供了一个完整的基于Quartus II开发环境下的VHDL数字钟设计实例。此项目旨在实现一个具备多项实用功能的数字时钟系统,完全用VHDL语言编写,适合FPGA/CPLD的学习者和电子爱好者参考与实践。 ## 功能特点 1. **标准计时功能**:采用二十四小时制,精准地进行时钟计时,确保时间显示准确无误。 2. **动态显示**:通过数码管显示当前的24小时时间和60分钟,提供直观的

gitblog_09805的博客 466

基于CPLD的数字时钟设计VHDL代码

课程设计中的基于CPLD的数字时钟VHDL代码:由于此课程设计主要以CPLD--EPM570T100C5N芯片为主,通过Quartus II编程软件进行编程,能实现以了时间24小时为一个周期的计时和显示(时,分,秒共6个数码管显示);本设计还拓展了闹钟模块和秒表模块。有校时功能,可以分别对时,分,秒的值单独校时,使其校正到标准时间(即可以对时间进行预值);计时过程具有报时功能,当时间到达整点进行5S蜂鸣或指示灯亮报时。在各种模块中的操作不会影响其他两个模块。

基于FPGA\CPLD的多功能数字钟程序

基于FPGA\CPLD的多功能数字钟程序,内含三个功能从少到多的多功能数字钟程序,请自行分配引脚测试

CPLD 电子钟设计全套程序

用CPLD设计电子时钟 具有 1、时、分、秒六位数码管显示(标准时间); 2、具有小时、分钟校准和清零暂停功能; 3.具有定时闹钟功能; 4.具有跑秒功能; 5.整点报时:55,56,57,58,59低音响,正点高音,间断振铃。

课题设计可调时数字钟 设计报告+原理图+实习课件

本资源是用利用CPLD设计可调时数字钟,实现数字钟的一些基本功能,文件包含和设计报告,原理图,实习课件,采用verilog语言编程,主要用于提交期末实习的课设报告,该课设包含目录、原理、程序、实验心得等内容,供大家参考

利用CPLD MAX3000系列EPM3064ALC44-10设计数字钟

//实现二分频 module div2(cin,cout); input cin; output cout; reg cout; always@(posedge cin) begin cout<=~cout; end endmodule //十进制计数器 module counter10(rst,clk,dout,cout); input clk,rst...

weixin_30335575的博客 734

基于quartus的可调时数字钟

本程序功能包括时钟计数、可调时、整点报时等。对初学FPGA的同鞋十分有用。程序本人亲自编写、测试,没问题。芯片用的是cyclone3。

cpld电子钟原理及制作

河北大学电信学院教程 cpld电子钟原理及制作 是广大编程爱好者的的训练平台

VDHL之基于层次化设计的数字钟(一)【原创】

<br />首先,要声明一下,这个设计的代码完全是自己在设计这个数字钟的时候一步一步摸索出来的,只是参考了一下相关资料,别人的代码我我一行也没有看过用过。由于时间仓促再加上自己水平有限,就有没有对代码进行优化了,只是完成了相关内容功能就不了了事。不过,这个设计实验的确让我学到很多东西,比如说,很多东西在软件编程上是可行的,当在EDA设计中是不行的。废话就不说了,下面我会一步一步的讲述我是如何设计他们的,可能要连载好几个哦。   这次设计的主要特点是使用了层次化设计,第一次接触,蛮有趣的,但同时也遇到过让人

845

CPLD实现电子时钟

用cpld实现数字时钟,可扩展校时,闹钟功能。

上一篇: 基于CPLD的数字钟设计(一)
下一篇: 状态机中的非阻塞赋值
springone
博客等级 码龄21年 9粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值