10.26数字钟设计,数电第二次实验总结

news2025/1/13 3:13:05

实验七 数字钟设计(*****)

    实现一个六十进制数字时钟,秒到 60 则归零重加,同时让分加1,分加到60归零重加,并让小时加 1,小时加到24归零重加。要求用数码管1,0显示秒值,数码管3,2显示分值,小时以十六进制形式显示在led灯上。

文件结构

顶层文件 

`timescale 1ns / 1ps
module total(
input clk,//开关,开时复位
input reset,
output[6:0]show,//表示怎么亮
output[3:0]dn0,//表示4个数码管哪个亮
output[7:0] hour//表示下面LED的情况
    );//最后输出就是这三个信号
    wire[3:0]minh;
    wire[3:0]minl;
    wire[3:0]sech;
    wire[3:0]secl;
    pclock pc(clk,reset,minh,minl,sech,secl,hour);
    show ps(clk,reset,minh,minl,sech,secl,show,dn0);//将out0~3信号处理为数码管信号
endmodule

产生时钟信号

`timescale 1ns / 1ps
module pclock(
input clk,
input reset,
output reg[3:0]minh,
output reg[3:0]minl,
output reg[3:0]sech,
output reg[3:0]secl,
output reg[7:0]hour
    );//产生时分秒信号
    wire hzone;
    hz1 u(clk,hzone);
    //产生秒的低位
    always@(posedge hzone,negedge reset)begin
    if(!reset)begin
    secl=0;
    end
    else begin
    if(secl==9)
    secl<=0;
    else 
    secl<=secl+1'b1;
    end
    end
    //秒的高位
    always@(negedge secl[3],negedge reset)begin
    if(!reset)
    sech=0;
    else begin
    if(sech==5)
    sech<=0;
    else 
    sech<=sech+1'b1;
    end
    end
    //分的低位
    always@(negedge sech[2],negedge reset)begin
    if(!reset)
    minl=0;
    else begin
    if(minl==9)
    minl<=0;
    else 
    minl<=minl+1'b1;
    end
    end
    //分的高位
    always@(negedge minl[3],negedge reset)begin
    if(!reset)
    minh=0;
    else begin
    if(minh==5)
    minh<=0;
    else 
    minh<=minh+1'b1;
    end
    end
    //小时
    always@(negedge minh[2],negedge reset)begin
    if(!reset)
    hour=0;
    else 
    hour<=hour+1'b1;
    end
endmodule

分频器1

`timescale 1ns / 1ps
module hz1(
input clk,
output reg clk_o
    );//将系统时钟处理为1HZ信号
    reg[31:0]cnt;
    parameter n=99999999;
    always@(posedge clk)begin
     if(cnt==9999999)
    cnt=0;
    else begin
    cnt=cnt+1'b1;
    if(cnt<=49999999)
    clk_o=1'b1;
    else
    clk_o=1'b0;
    end
    end
endmodule

显示分秒

`timescale 1ns / 1ps
module show(    
    input clk,
    input reset,
    input[3:0]minh,
    input[3:0]minl,
    input[3:0]sech,
    input[3:0]secl,
    output reg[6:0]show,
    output reg [3:0] en
    );//显示时分秒信号,选择出一个信号
    //将最终选择出的要显示信号转化为数码管信号
    wire hzshow;
    showhz v(clk,hzshow);
   //四位数码管,高位分(6进制,3位)低位分(10进制,4位)高位秒低位秒,共要14位,统一都成四位
    reg[3:0]digit;
    //确定数码管显示的第几位
    reg[1:0]dn;
    always@(posedge hzshow,negedge reset)begin
    if(!reset)
    dn<=0;
    else begin
    if(dn==3)
    dn<=0;
    else
    dn<=dn+1'b1;
    end
    end
    //确定位上的数字
    always@(dn, reset)begin
    if(!reset)begin
    digit<=0;
    en<=4'b0000;
    end
    else begin
    case(dn)
    0: begin en <= 4'b1110; digit<=secl; end
    1: begin en <= 4'b1101; digit<=sech; end
    2: begin en <= 4'b1011; digit<=minl; end
    3: begin en <= 4'b0111; digit<=minh; end
    endcase
    end
    end
    //将其转化为数码管信号
     always@(digit, reset) begin
     if(!reset)
     show = 7'b0000001;
     else begin
     case(digit)
     4'h0: show <= 7'b0000001;
     4'h1: show <= 7'b1001111;
     4'h2: show <= 7'b0010010;
     4'h3: show <= 7'b0000110;
     4'h4: show <= 7'b1001100;
     4'h5: show <= 7'b0100100;
     4'h6: show <= 7'b0100000;
     4'h7: show <= 7'b0001111;
     4'h8: show <= 7'b0000000;   
     4'h9: show <= 7'b0000100;
     endcase
     end
     end
endmodule

分频器2 

`timescale 1ns / 1ps
module showhz(
input clk,
output reg clk_o
    );//将系统时钟处理为1HZ信号
    reg[31:0]cnt;
    always@(posedge clk)begin
     if(cnt==99999)
    cnt=0;
    else begin
    cnt=cnt+1'b1;
    if(cnt<=49999)
    clk_o=1'b1;
    else
    clk_o=1'b0;
    end
    end
endmodule

 引脚文件

 set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF] 
 set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets reset_IBUF]
set_property PACKAGE_PIN R2 [get_ports reset]
set_property IOSTANDARD LVCMOS33 [get_ports reset]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports {show[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {show[0]}]
set_property PACKAGE_PIN U7 [get_ports {show[0]}]
set_property PACKAGE_PIN V5 [get_ports {show[1]}]
set_property PACKAGE_PIN U5 [get_ports {show[2]}]
set_property PACKAGE_PIN V8 [get_ports {show[3]}]
set_property PACKAGE_PIN U8 [get_ports {show[4]}]
set_property PACKAGE_PIN W6 [get_ports {show[5]}]
set_property PACKAGE_PIN W7 [get_ports {show[6]}]
set_property PACKAGE_PIN U2 [get_ports {dn0[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {dn0[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {dn0[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {dn0[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {dn0[0]}]
set_property PACKAGE_PIN U4 [get_ports {dn0[1]}]
set_property PACKAGE_PIN V4 [get_ports {dn0[2]}]
set_property PACKAGE_PIN W4 [get_ports {dn0[3]}]
set_property PACKAGE_PIN W15 [get_ports {hour[7]}]
set_property PACKAGE_PIN W13 [get_ports {hour[6]}]
set_property PACKAGE_PIN W14 [get_ports {hour[5]}]
set_property PACKAGE_PIN U15 [get_ports {hour[4]}]
set_property PACKAGE_PIN U16 [get_ports {hour[3]}]
set_property PACKAGE_PIN V13 [get_ports {hour[2]}]
set_property PACKAGE_PIN V14 [get_ports {hour[1]}]
set_property PACKAGE_PIN U14 [get_ports {hour[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {hour[0]}]
set_property PACKAGE_PIN W5 [get_ports clk]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决MyBatisPlus自动生成的主键值过长的问题?

解决MyBatisPlus自动生成的主键值过长的问题&#xff1f; 执行alter table 你的表名 auto_increment 你想要自增开始的值&#xff1b; 如下图&#xff1a; 看一下数据库插入代码&#xff0c;如下图&#xff1a; 最后连续插入两次&#xff0c;看下数据库表插入的实际值&…

OpenCV学习(一)——图像读取

1. 图像入门 读取图像显示图像写入图像 import cv2# 读取图像 img cv2.imread(lena.jpg) print(img.shape)# 显示图像 cv2.imshow(image, img) cv2.waitKey(0) cv2.destroyAllWindows()# 写入图像 cv2.imwrite(image.jpg, img)1.1 读取图像 读取图像cv.imread(filename, fl…

程序员们平时都喜欢逛什么论坛呢?

网站不在多&#xff0c;好用就行&#xff1b;技术不求精&#xff0c;好摸鱼就行。是时候祭出我收藏夹里的这15个网站了&#xff01; 求职必备&#xff1a;牛客网 https://www.nowcoder.com/ 年少不知牛客好&#xff0c;等到要面试的时候才发现是神器。 你可以在牛客上搜索到一…

C++内存管理:其七、标准库中的allocator

首先明确一点&#xff0c;绝大多数情况下&#xff0c;是标准库中的容器使用allocator。因为容器需要频繁的申请和释放内存。 一、容器使用allocator 典型的例子&#xff1a; vector<int , allocator<int>> a;但是为什么我们通常的定义vector变量的方法是&#x…

OpenCV学习(二)——OpenCV中绘图功能

2. OpenCV中绘图功能2.1 画线2.2 画矩形2.3 画圆2.4 画多边形2.5 添加文本 2. OpenCV中绘图功能 绘图可以实现画线、画矩形、画圆、画多边形和添加文本等操作。 import cv2 import numpy as np# 读取图像 img cv2.imread(lena.jpg)# 画直线 cv2.line(img, (0, 0), (512, 512…

【Javascript】函数声明的方式

方式一&#xff1a; function c(a,b){return ab;}var sumc(3,4);console.log(sum); 方式二&#xff1a; var afunction (a,b){return ab;}; console.log(a(1,3)); 方式三&#xff1a; 构造声明 var cnew Function (a,b,return ab); console.log(c(1,2));声明函数过程中&…

【机器学习合集】人脸表情分类任务Pytorch实现TensorBoardX的使用 ->(个人学习记录笔记)

人脸表情分类任务 注意&#xff1a;整个项目来自阿里云天池&#xff0c;下面是开发人员的联系方式&#xff0c;本人仅作为学习记录&#xff01;&#xff01;&#xff01;该文章原因&#xff0c;学习该项目&#xff0c;完善注释内容&#xff0c;针对新版本的Pytorch进行部分代码…

王道p40 1.设计一个递归算法,删除不带头结点的单链表L中的所有值为x的结点(c语言代码实现)图解递归

视频讲解(献丑了)&#xff1a;p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Xa4y1Q7ui/?spm_id_from333.999.0.0 首先它是一个不带头结点的单链表 我们就得特殊处理 我们先让*LNULL&#xff1b; 然后为s开辟一个新…

vue3-admin-element框架登录如何修改?

1、找到vite.config.js文件 配置反向代理 2、找到src文件下的user.js文件 3、找到views文件下的login文件 打开找到comp文件夹找到LoginFrom.vue页面进去 把这个改成自己的账户数据&#xff08;密码不一致自行更改&#xff09; 4、找到store文件下的modules下的user.js 5、找到…

Java工具库——FastJson的40个常用方法

那些想看却没看的书&#xff0c;在心里摆满一个图书馆… 工具库介绍 阿里巴巴的 FastJSON&#xff0c;也被称为 Alibaba FastJSON 或阿里巴巴 JSON&#xff0c;是一个高性能的 Java JSON 处理库&#xff0c;用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性…

企业电脑监控软件三大盘点

信息技术的不断发展&#xff0c;企业对于员工电脑监控的需求越来越强烈。监控员工电脑可以有效地提高工作效率&#xff0c;防止员工泄露公司机密&#xff0c;同时也可以保护公司的信息安全。 其中给大家推荐三款实用的企业电脑监控软件&#xff1a; 一、域之盾软件 该软件可实…

VS2015 搭建wxWidgets-3.2.3测试环境及运行samples

此方法免去繁琐的环境配置,直接运行及写自己的代码。 1:我们到wxWidgets的官网下载 Release wxWidgets 3.2.3 wxWidgets/wxWidgets GitHub 下载完成后如下: 2:解压上面下载的wxWidgets-3.2.3.zip 解压后如下: 之后到如下目录,运行wx_vc14.sln 3:生成结果 D:\camer…

2023年以就业为目的学习Java还有必要吗?

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

操作系统【OS】调度算法对比图

FCFS SJF 高响应比 时间片轮转 多级反馈队列 可抢占&#xff1f; √ √ √ 队列内算法不一定 不可抢占&#xff1f; √ √ √ 队列内算法不一定 特点&优点 公平实现简单有利于长作业不利于短作业有利于CPU繁忙作业不利于IO繁忙作业 因为CPU繁忙型进程即…

Kafka入门05——基础知识

目录 副本数据同步原理 HW和LEO的更新流程 第一种情况 第二种情况 数据丢失的情况 解决方案 Leader副本的选举过程 日志清除策略和压缩策略 日志清除策略 日志压缩策略 Kafka存储手段 零拷贝&#xff08;Zero-Copy&#xff09; 页缓存&#xff08;Page Cache&…

AGENS算法c++实现

cluster二维数组存放数据的编号&#xff0c;每次计算两个簇的距离&#xff0c;找出距离最近的&#xff0c;将其中一个簇的编号加入另一个编号的一维序列中&#xff0c;再将这个编号清除&#xff0c;之后再循环cluster。 #include<vector> #include <iostream> #in…

Linux小程序——进度条

1.前置知识说明 ①回车换行 首先我们需要知道&#xff0c;回车与换行是两个概念&#xff0c;在C语言中使用"\n"时&#xff0c;默认使用的是回车换行&#xff0c;举一个简单的例子&#xff0c;在以前写作文时&#xff0c;我们在某一行写到最后一个字时&#xff0c;我…

Linux C语言开发-D9输入输出

C语言无I/O语句&#xff0c;I/O操作由函数实现 #include <stdio.h> 字符输出函数:putchar(c) 参数&#xff1a;c为字符常量、变量或表达式 功能&#xff1a;把字符c输出到显示屏上 返回值&#xff1a;正常&#xff0c;为显示的代码值 格式输出函数:printf("格式控…

10.25verilog复习,代码规范复盘,触发器复习

verliog复习 1.模块的输入输出(reg与wire) 输入是线性&#xff0c;wire, 输出较复杂需要之前的状态&#xff0c;不仅仅是由当下输入来的信号的与或非组合而成的&#xff0c;需要保存之前状态的&#xff0c;输出类型是reg。 比如计数器&#xff0c;需要在之前计数的基础上再…

排列数字(深度优先搜索) C++实现

题目 代码 #include<iostream> using namespace std; const int N1010; int path[N],n; bool flag[N];void dfs(int u){if(un){for(int i0;i<n;i) printf("%d ",path[i]);puts("");return ;}for(int i1;i<n;i){if(!flag[i]){path[u]i;flag[i…