静态数码管显示

news2024/11/25 4:44:43

学习芯片: EP4CE6F17C8
本次学习使用的为共阴极数码管,即用低电平点亮数码管,同样可知,共阳极数码管的阳极连在一起,即用高电平点亮数码管。

八段数码管示意图:
在这里插入图片描述
在这里插入图片描述
a,b,c,d,e,f,g,dg表示八段数码管时,a为最低位,dp为最高位
八段数码管用8位二进制表示,由于本次实验使用共阴极数码管,所以0表示亮,1表示灭,即数码管显示数字0我们可以用8'b1100_0000表示,数字F使用8'b1000_0111表示,同理可知,共阴极数码管和共阳极数码管互为对方的按位取反。

任务描述:
六个数码管同时间隔0.5s显示0-f。要求:使用一个顶层模块,调用计时器模块和数码管静态显示模块。在这里插入图片描述
模块原理图:
在这里插入图片描述
代码设计:

/*
2023.7.13
计时0.5s,计满输出高电平
*/

module time_count(
    input       wire        clk         ,
    input       wire        rst_n       ,

    output      reg         flag

);


parameter MAX_NUM = 26'd24_999_999;//0.5s

reg [24:0]  cnt;

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        cnt <= 26'd0;
        flag <= 1'b0;
    end
    else if(cnt == MAX_NUM) begin
        cnt <= 26'd0;
        flag <= 1'b1;
    end
    else begin
        cnt <= cnt + 1'd1;
        flag <= 1'b0;
    end
end


endmodule 
/*
2023.7.13
数码管显示
*/

module seg_led_static(
    input       wire        clk         ,
    input       wire        rst_n       ,
    input       wire        flag        ,//计满0.5s后,输入的高电平

    output      reg [5:0]   sel         ,//位选信号
    output      reg [7:0]   seg          //段选信号

);


reg [3:0] num;//保存当前数码管显示的数字

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        sel <= 6'b111111;
    end
    else begin
        sel <= 6'b000000;//打开全部数码管
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        num <= 4'h0;
    end
    else if(flag) begin
        num <= num + 1'h1;
    end
    else begin
        num <= num;
    end
end

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)begin
        seg <= 8'b0;
    end
    else begin
        case(num)
            4'h0:    seg <= 8'b1100_0000;//匹配到后参考共阴极真值表
	        4'h1:    seg <= 8'b1111_1001;
	        4'h2:    seg <= 8'b1010_0100;
	        4'h3:    seg <= 8'b1011_0000;
	        4'h4:    seg <= 8'b1001_1001;
	        4'h5:    seg <= 8'b1001_0010;
	        4'h6:    seg <= 8'b1000_0010;
	        4'h7:    seg <= 8'b1111_1000;
	        4'h8:    seg <= 8'b1000_0000;
	        4'h9:    seg <= 8'b1001_0000;
	        4'ha:    seg <= 8'b1000_1000;
	        4'hb:    seg <= 8'b1000_0011;
	        4'hc:    seg <= 8'b1100_0110;
	        4'hd:    seg <= 8'b1010_0001;
	        4'he:    seg <= 8'b1000_0110;
	        4'hf:    seg <= 8'b1000_1110;
	      	default : seg <= 8'b1100_0000;
        endcase 
    end     
end

endmodule
/*
2023.7.13
静态数码管显示,间隔0.5s输出0——F.
*/

module top_seg_led_static(
    input       wire        clk         ,
    input       wire        rst_n       ,

    output      wire [5:0]  sel         ,
    output      wire [7:0]  seg
);

parameter MAX_NUM = 26'd24_999_999;
wire flag_reg;

time_count #(.MAX_NUM (MAX_NUM)) u_time_count(
    .clk    (clk),
    .rst_n  (rst_n),

    .flag   (flag_reg)

);

seg_led_static u_seg_led_static(
    .   clk         (clk),
    .   rst_n       (rst_n),
    .   flag        (flag_reg),

    .   sel         (sel),
    .   seg         (seg)

);


endmodule

测试文件:

`timescale 1ns/1ns
module top_seg_led_static_tb();
    reg        clk;
    reg        rst_n;

    wire [5:0]  sel;//位选信号
    wire [7:0]  seg;//段选信号

    parameter MAX_NUM = 9;//切换一次状态的周期数量
    parameter CYCLE = 20;//周期

    always #(CYCLE/2) clk = ~clk;

    initial begin
        clk = 1'b0;
        rst_n = 1'b0;//开始复位
        #(CYCLE);
        rst_n = 1'b1;//结束复位
        #((MAX_NUM + 1)*CYCLE*16);
        $stop;
    end


    
    top_seg_led_static #(.MAX_NUM (MAX_NUM)) u_top_seg_led_static(
        .clk(clk),
        .rst_n(rst_n),

        .sel(sel),
        .seg(seg)

    );


endmodule

我们通过modelsim仿真结果如下:
在这里插入图片描述
运行结果:
在这里插入图片描述

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

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

相关文章

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测,含混淆矩阵图、分类图)

分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff0c;含混淆矩阵图、分类图) 目录 分类预测 | MATLAB实现基于Attention-LSTM的数据分类预测多特征分类预测(长短期记忆网络融合注意力机制分类预测&#xff…

mybatis例子,以及静态资源过滤问题解决

第一步&#xff1a;编写一个工具类 package com.heerlin.utils;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;imp…

Spring Boot 源码学习之@SpringBootApplication注解

SpringBootApplication 注解 引言主要内容1. 创建 Spring Boot 项目2. Spring Boot 入口类3. SpringBootApplication 介绍 总结 引言 在 Huazie 前面的博文 《Spring Boot 核心运行原理介绍》中&#xff0c;我们初步了解了 Spring Boot 核心运行原理&#xff0c;知道了 Enable…

#挑战Open AI!马斯克宣布成立xAI,你怎么看?# 马斯克的xAI:充满困难与希望

文章目录 1.什么是xAI公司&#xff1f;2.xAI公司的图标3.“反AI斗士”马斯克进军AI&#xff1a;期待与挑战并存3.1 关于马斯克……3.2 这位“反AI斗士”……3.3 我的看法3.4 可能会遇到的困难与优势3.5 蓄谋已久的马斯克……3.6 xAI“全明星阵容”3.7 总结 4.百模大战&#xff…

git第一次拉取远程分支项目(ssh的方式)

一.生成SSH keys,并将生成的key复制到远程库 1.本地用命令生成密钥对。 ssh-keygen -t rsa -C "yourEmailAddress" 或 ssh-keygen -t ed25519 -C "yourEmailAddress" 按三次enter直接生成密钥对。 2.切换至ssh目录下&#xff0c;复制key&#xff08;公…

软件测试值不值得学,2023软件测试行情分析

目录 1、人们的生活离不开软件&#xff0c;有软件的地方就有测试 2、测试工程师特别是自动化测试工程师的需求会越来越大 3、软件测试经验越丰富越受欢迎&#xff0c;不存在35岁限制。 4、所有新兴行业比如chat-gtp&#xff0c;车载系统等都需要测试工程师 薪资 就业 软…

设计模式——桥梁模式

桥梁模式 定义 桥梁模式&#xff08;Bridge Pattern&#xff09;也叫做桥接模式。 将抽象和显示解耦&#xff0c;使得两者可以独立地变化。 优缺点、应用场景 优点 抽象和实现的解耦。 这是桥梁模式的主要特点&#xff0c;它完全是为了解决继承的缺点而提出的设计模式。优…

从C到C++ | C++入门(二)

目录 缺省参数 1.)全缺省 2.)半缺省 函数重载 1.) 参数类型不同 2.) 参数个数不同 3.) 参数顺序不同 函数重载的原理&#xff1a; &#xff01;&#xff01;&#xff01;注意 &#xff01;&#xff01;&#xff01; 引用 1.) 引用做参数 2.) 引用做返回值 引用和…

C#使用DataGridView模拟绘图

接到一个需求&#xff0c;绘制一个水管线的图片&#xff0c;这种管线可以有12种分段方法&#xff0c;最后将这12种分段方法合并后在一条水管线上展示&#xff0c;要求&#xff1a; ⒈支持分段的属性展示&#xff1b; ⒉要求每个分段都能清晰展示&#xff0c;分段数在0&#xff…

一天吃透JVM面试八股文

内容摘自我的学习网站&#xff1a;topjavaer.cn 什么是JVM&#xff1f; JVM&#xff0c;全称Java Virtual Machine&#xff08;Java虚拟机&#xff09;&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回…

C++11(1)——新增用法零碎总结

目录 1. C11简介 2. 统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 2.2 std::initializer_list std::initializer_list是什么类型&#xff1a; std::initializer_list使用场景&#xff1a; 让模拟实现的vector也支持{}初始化和赋值 1. C11简介 在2003年C标准委员会…

【雕爷学编程】Arduino动手做(163)---大尺寸8x8LED方格屏模块2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

学无止境·MySQL⑧(Redis)

Redis和Mongodb练习 Redis1、安装redis2、string类型数据的命令操作&#xff1a;设置键值&#xff1a;读取键值数值类型自增1数值类型自减1查看值的长度 3、list类型数据的命令操作对列表city插入元素&#xff1a;Shanghai Suzhou Hangzhou将列表city里的头部的元素移除将name列…

AI炒股:用Claude来分析A股2023年中报业绩预告

Claude是和ChatGPT类似的AI大模型&#xff0c;据测试 AI 的水平能力接近 GPT-4&#xff0c;支持高达 100K token 的上下文。Claude只需要到官方网站注册账号后就可以直接免费使用。不过&#xff0c;目前智能美国和英国的 IP 可以注册和使用。 Claude支持上传文档功能&#xff…

计算机网络基础第三章

一、数据链路层功能概述 1.1 数据链路层基本概念 结点&#xff1a;主机、路由器 链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路 数据链路&#xff1a;网络中两个结点之间的逻辑通道&#xff0c;…

C++ 异常

文章目录 一. C语言的错误处理二. C的异常三. 异常的抛出与捕获1. 异常的抛出与匹配机制2. 在函数调用链中异常栈展开匹配原则3. 异常安全 四. 多态在异常中的应用五. C标准库的异常体系六. 异常规范七. 异常的优缺点结束语 一. C语言的错误处理 在C语言中&#xff0c;我们常见…

IDEA快捷键及模版配置

一、快捷键 1、常用的快捷键 删除当前行, 默认是 ctrl Y 自己配置 ctrl d (搜delete)复制当前行, 自己配置 ctrl alt 向下光标 (搜duplicate)补全代码 alt /添加注释和取消注释 ctrl / 【第一次是添加注释&#xff0c;第二次是取消注释】导入该行需要的类 先配置 auto …

S3C2440点亮LED(裸机开发)

文章目录 前言一、环境介绍一、GPIO介绍二、点亮开发板的LED1.预备动作2.led代码 总结 前言 本期和大家主要分享的是使用S3C2440开发板点亮一个LED灯&#xff0c;可能大家拿到开发板之后做的第一件事情都是点灯&#xff0c;这是为什么呢&#xff1f;因为点灯这件事情不仅能够检…

TCP三次握手调优

SYN: Synchronize Sequence Numbers。同步序列号 服务端的优化 当服务器收到 SYN 报文后&#xff0c;服务器会立刻回复 SYNACK 报文&#xff0c;既确认了客户端的序列号&#xff0c;也把自己的序列号发给了对方。此时&#xff0c;服务器端出现了新连接&#xff0c;状态是 SYN…

MySQL系列之行转列,列转行

MySQL系列之行转列&#xff0c;列转行 之前业务出现了需要行转列的场景&#xff0c;记录一下 SQL中AVG、COUNT、SUM、MAX等聚合函数对NULL值的处理 Mysql Max、 Where和 Group By 三个关键字同时使用 执行顺序 MySql 行转列的玩法 &#xff0c;实战案例教学&#xff08;MAX…