EDA 数字时钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、数字时钟是什么?
  • 二、EDA里面数码管的显示
    • 1.元件模型
    • 2.参考程序
    • 3. 实验仿真波形
    • 4.实验现象
    • 5. 仿真问题
  • 三、显示时钟
    • 1. 时钟电路模块
    • 2.参考程序
    • 3.仿真波形
    • 4.实验效果
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

前面学习了基本的数字芯片逻辑编程,学会了计数器等,这次来一个做一个综合应用。数字时钟,采用数码管显示时分秒。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数字时钟是什么?

数字时钟是一种以数字显示取代模拟表盘的钟表,它能够以数字的形式显示当前的时间,并且可以同时显示时、分、秒。此外,它通常具有对时、分、秒进行准确校准的功能。
示例:能用数码管显示 时分秒的时钟
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、EDA里面数码管的显示

目标:动态数码管显示: 12345678
时间显示的状态效:”12.20.30 12-20.30 12-20-30

1.元件模型

代码如下(示例):

在这里插入图片描述

2.参考程序

代码如下(示例):

module seg(clk,seg7,ledcom); 
input clk; // 假设系统提供的时钟 50Mhz
output[7:0] seg7; //段
output[7:0] ledcom; //位选
reg[7:0] seg7;  //alway 里面赋值要用reg数据
reg[20:0] cnt; 
reg[7:0] ledcom;
always@(posedge clk) 
begin if(cnt==21'b1 1111 1111 1111 1111 1111) // 2的22减一cnt<=0; else cnt<=cnt+1; 
end 
always@(cnt) //给位选
begin case(cnt[16:14])    // 14  15  16   000 ->111   前面13为 满进位3'b000:ledcom<=8'b00000001;//0   只有一个位选为1 只有第一位数码管选中并显示3'b001:ledcom<=8'b00000010;//1 3'b010:ledcom<=8'b00000100;//2 3'b011:ledcom<=8'b00001000;//3 3'b100:ledcom<=8'b00010000;//0 3'b101:ledcom<=8'b00100000;//1 3'b110:ledcom<=8'b01000000;//2 3'b111:ledcom<=8'b10000000;//3 endcase 
end 
always@(cnt) //段码
begin case(cnt[16:14]) 3'b000:seg7<=8'b00000111;//0  同时给到段码 ,保证只有 第一个数码管亮 3'b001:seg7<=8'b11011011;//1 3'b010:seg7<=8'b11001111;//23'b011:seg7<=8'b10100111;//3 3'b100:seg7<=8'b11101101;//0 3'b101:seg7<=8'b11111101;//1 3'b110:seg7<=8'b01000111;//2 3'b111:seg7<=8'b11111111;//3 endcase 
end 
endmodule

为了仿真改小了参数

module seg(clk,seg7,ledcom,cnt,en); 
input en;
input clk; // 假设系统提供的时钟 50Mhz
output[7:0] seg7; //段
output[7:0] ledcom; //位选
reg[7:0] seg7;  //alway 里面赋值要用reg数据
output reg[8:0] cnt; 
reg[7:0] ledcom;
always@(posedge clk) 
begin if(!en)cnt<=0;elseif(cnt==8'b111111111) // 2的22减一cnt<=0; else cnt<=cnt+1; 
end 
always@(cnt) //给位选
begin case(cnt[7:5])    // 14  15  16   000 ->111   前面13为 满进位3'b000:ledcom<=8'b00000001;//0   只有一个位选为1 只有第一位数码管选中并显示3'b001:ledcom<=8'b00000010;//1 3'b010:ledcom<=8'b00000100;//2 3'b011:ledcom<=8'b00001000;//3 3'b100:ledcom<=8'b00010000;//0 3'b101:ledcom<=8'b00100000;//1 3'b110:ledcom<=8'b01000000;//2 3'b111:ledcom<=8'b10000000;//3 default:ledcom<=8'b10000000;endcase 
end 
always@(cnt) //段码
begin case(cnt[7:5]) 3'b000:seg7<=8'b00000111;//0  同时给到段码 ,保证只有 第一个数码管亮 3'b001:seg7<=8'b11011011;//1 3'b010:seg7<=8'b11001111;//23'b011:seg7<=8'b10100111;//3 3'b100:seg7<=8'b11101101;//0 3'b101:seg7<=8'b11111101;//1 3'b110:seg7<=8'b01000111;//2 3'b111:seg7<=8'b11111111;//3 default:seg7<=8'b11111111;endcase 
end 
endmodule

测试文件


`timescale 1 ps/ 1 ps
module seg_tb3();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg en;
// wires                                               
wire [8:0]  cnt;
wire [7:0]  ledcom;
wire [7:0]  seg7;// assign statements (if any)                          
seg i1 (
// port map - connection between master ports and signals/registers   .clk(clk),.cnt(cnt),.en(en),.ledcom(ledcom),.seg7(seg7)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          // --> end 
#10 clk= 0;
#100 en=0;
#10 en=1;                                           
$display("Running testbench");                       
end always #10 clk=~clk;                                                   
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          @eachvec;                                              
// --> end                                             
end                                                    
endmodule

实际仿真测试元件图

在这里插入图片描述

3. 实验仿真波形

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.实验现象

5. 仿真问题

在这里插入图片描述
在这里插入图片描述

三、显示时钟

1. 时钟电路模块

在这里插入图片描述

2.参考程序

module watch(clk,reset,seg_r,dig_r); 
input clk; 
input reset; 
output[7:0] seg_r; 
output[7:0] dig_r; 
reg[25:0] count; 
reg[15:0] hour; 
reg sec; 
reg[4:0] disp_dat; 
reg[7:0] seg_r; 
reg[7:0] dig_r; 
always @(posedge clk) 
begin count = count + 1'b1; if(count == 26'd25000000)begin count = 26'd0; sec = ~sec; end 
end 
always @(posedge sec) 
begin 
if(reset==0) hour[15:0]=0; else begin hour[3:0] = hour[3:0]+1'b1; if(hour[3:0] == 4'ha) begin hour[3:0] = 4'h0; hour[7:4] = hour[7:4]+1'b1; if(hour[7:4] == 4'h6) begin hour[7:4] = 4'h0; hour[11:8] = hour[11:8] + 1'b1; if(hour[11:8] ==4'ha) begin hour[11:8] = 4'h0; hour[15:12] = hour[15:12] + 1'b1; if(hour[15:12] == 4'h6) hour[15:12] =4'h0; end end end endend 
always @(posedge clk) 
begin case(count[17:15]) 3'd0:disp_dat = hour[3:0]; 3'd1:disp_dat = hour[7:4]; 3'd3:disp_dat = hour[11:8]; 3'd4:disp_dat = hour[15:12]; endcase case(count[17:15]) 3'd0:dig_r = 8'b10000000; 3'd1:dig_r = 8'b01000000; 3'd2:dig_r = 8'b00000000; 3'd3:dig_r = 8'b00010000; 3'd4:dig_r = 8'b00001000; 3'd5:dig_r = 8'b00000000; 3'd6:dig_r = 8'b00000000; 3'd7:dig_r = 8'b00000000; endcase 
end 
always @(posedge clk) 
begin case(disp_dat) 
0:seg_r=8'b01111111; 1:seg_r=8'b00000111; 2:seg_r=8'b11011011; 3:seg_r=8'b11001111; 4:seg_r=8'b10100111; 5:seg_r=8'b11101101;6:seg_r=8'b11111101; 7:seg_r=8'b01000111; 8:seg_r=8'b11111111; 9:seg_r=8'b11101111; 
default:seg_r = 8'hff; endcase 
end 
endmodule

3.仿真波形

4.实验效果

总结

提示:这里对文章进行总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267050.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式

在 R中&#xff0c;要统计dataframe数据框中每个元素出现的频数&#xff0c;可以使用table()函数。以下是一个示例&#xff1a; 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框&#xff0c;并改列名 一…

深入理解模板引擎:解锁 Web 开发的新境界(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【PyTorch】现代卷积神经网络

文章目录 1. 理论介绍1.1. 深度卷积神经网络&#xff08;AlexNet&#xff09;1.1.1. 概述1.1.2. 模型设计 1.2. 使用块的网络&#xff08;VGG&#xff09;1.3. 网络中的网络&#xff08;NiN&#xff09;1.4. 含并行连结的网络&#xff08;GoogLeNet&#xff09; 2. 实例解析2.1…

鸿蒙原生应用/元服务开发-Stage模型能力接口(二)

ohos.app.ability.AbilityConstant (AbilityConstant)一、说明 AbilityConstant提供Ability相关的枚举&#xff0c;包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。本模块首批接口从API version 9开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理1&#xff09;爬取功能2&#xff09;下载功能 2. 创建模型并编译1&#xff09;定义模型结构2&#xff09;优化…

我的网站服务器被入侵了该怎么办?

最近有用户咨询到德迅云安全&#xff0c;说自己再用的网站服务器遇到了入侵情况&#xff0c;询问该怎么处理入侵问题&#xff0c;有什么安全方案可以解决服务器被入侵的问题。下面&#xff0c;我们就来简单讲下服务器遇到入侵了&#xff0c;该从哪方面入手处理&#xff0c;在预…

计算机网络(三)

&#xff08;十一&#xff09;路由算法 A、路由算法分类 动态路由和静态路由 静态路由&#xff1a;人工配制&#xff0c;路由信息更新慢&#xff0c;优先级高。这种在实际网络中要投入成本大&#xff0c;准确但是可行性弱。 动态路由&#xff1a;路由更新快&#xff0c;自动…

【华为数据之道学习笔记】3-10元数据管理架构及策略

元数据管理架构包括产生元数据、采集元数据、注册元数据和运 维元数据。 产生元数据&#xff1a; 制定元数据管理相关流程与规范的落地方案&#xff0c;在IT产品开发过程中实现业务元数据与技术元数据的连接。 采集元数据&#xff1a; 通过统一的元模型从各类IT系统中自动采集元…

2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题

2023 年山东省职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题 目录 任务 1 网络平台搭建&#xff08;50 分&#xff09; 任务 2 网络安全设备配置与防护&#xff08;250 分&#xff09; 模块二 网络安全事件响应、数字取证调查、应用程序安…

实现安装“自由化”!在Windows 11中如何绕过“您尝试安装的应用程序未通过微软验证”

这篇文章描述了如果你不能安装应用程序,而是当你在Windows 11中看到消息“您尝试安装的应用程序未通过微软验证”时该怎么办。完成这些步骤将取消你安装的应用程序必须经过Microsoft验证的要求。 使用设置应用程序 “设置”应用程序提供了绕过此警告消息的最简单方法,以便你…

​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案

随着“第四次工业革命”的爆炸式发展&#xff0c;众多企业都将自己的业务与迅速发展的应用开发和网站建设领域高度绑定。而对于众多有上云需求的企业和个人用户来说&#xff0c;选择一款自己的服务器配置就成为了一项至关重要的任务。而随着需求端的不断扩大&#xff0c;云服务…

GoWeb开发框架gin-基础路由使用

文章目录 1.安装并写一个demo2.配置GoLang热加载脚手架3.配合net/http使用完整示例4.返回值4.1String返回值4.2Json返回值4.3struct结构体返回值4.4jsonp返回值4.5XML返回值 5.接收前端传过来的参数5.1get请求传值5.2form表单传值5.3接收结构体5.4路由地址传参 6.完整代码 1.安…