数码管的动态显示(三)

1.原理

data_reg寄存,只寄存符号位和数据位不包含小数点位。

动态数码管每个显示1ms,所以计数到5*10^4-1

为了将sel和seg同步,把sel打了一拍。

6位都使用到了可以这么计算,6位都显示的是数据。或者最高位显示的是小数点,低5位是数据,

因为数码管是共阳数码管,低电平才能点亮。

2.代码

2.1 seg_dynamic.v

module seg_dynamic(input wire 			sys_clk		,input wire 			sys_rst_n	,input wire[19:0] 	data		,input wire[5:0]		point		,input wire			sign		,input wire 			seg_en		,output reg[7:0]		seg			,//因为一个数码管包括小数点位有8位output reg[5:0]		sel //因为总共有6个数码管需要显示
);parameter CNT_MAX=16'd499_99;wire [3:0] unit;
wire [3:0] ten;
wire [3:0] hun;
wire [3:0] tho;
wire [3:0] t_tho;
wire [3:0] h_hun; //999_999需要这6个位
reg [23:0] data_reg;  //6个数码管,每个数码管是BCD码表示,一共有4位,因为上面的ten是4位
reg [15:0] cnt_1ms;//因为计数1ms
reg flag_1ms;
reg [2:0] cnt_sel; //因为要计数6个数码管表示一次扫描周期的结束
reg [5:0] sel_reg; //这个是位选信号,控制哪个数码管亮
reg [3:0] data_disp; //这是上面的data_reg的每个位数的拆分,控制它显示十六进制码
reg dot_disp;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)data_reg<=24'd0;else if((h_hun)||(point[5]))data_reg<={h_hun,t_tho,tho,hun,ten,unit};else if(((t_tho)||(point[4]))&&(sign==1'b0)) //sign=0就是要使用符号位的意思data_reg<={4'd11,t_tho,tho,hun,ten,unit};else if(((t_tho)||(point[4]))&&(sign==1'b1))data_reg<={4'd10,t_tho,tho,hun,ten,unit};	else if(((tho)||(point[3]))&&(sign==1'b0))data_reg<={4'd11,4'd11,tho,hun,ten,unit};	else if(((tho)||(point[3]))&&(sign==1'b1))data_reg<={4'd11,4'd10,tho,hun,ten,unit};else if(((hun)||(point[2]))&&(sign==1'b0))data_reg<={4'd11,4'd11,4'd11,hun,ten,unit};else if(((hun)||(point[2]))&&(sign==1'b1))	data_reg<={4'd11,4'd11,4'd10,hun,ten,unit};else if(((ten)||(point[1]))&&(sign==1'b0))data_reg<={4'd11,4'd11,4'd11,4'd11,ten,unit};	else if(((ten)||(point[1]))&&(sign==1'b1))		data_reg<={4'd11,4'd11,4'd11,4'd10,ten,unit};	else if(((unit)||(point[0]))&&(sign==1'b0))data_reg<={4'd11,4'd11,4'd11,4'd11,4'd11,unit};	else 			data_reg<={4'd11,4'd11,4'd11,4'd11,4'd10,unit};	always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)cnt_1ms<=16'd0;else if(cnt_1ms==CNT_MAX)cnt_1ms<=16'd0;elsecnt_1ms<=cnt_1ms+1'b1;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)flag_1ms<=1'b0;else if(cnt_1ms==CNT_MAX-1'b1)flag_1ms<=1'b1;elseflag_1ms<=1'b0;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)cnt_sel<=3'd0;else if((flag_1ms==1'b1)&&(cnt_sel==3'd5))cnt_sel<=3'd0;else if(flag_1ms==1'b1)cnt_sel<=cnt_sel+1'b1;elsecnt_sel<=cnt_sel;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)sel_reg<=6'd0;else if ((cnt_sel==3'd0)&&(flag_1ms==1'b1))sel_reg<=6'b000_001;else if(flag_1ms==1'b1)sel_reg<=sel_reg<<1;elsesel_reg<=sel_reg;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)data_disp<=4'd0;else if((seg_en==1'b1)&&(flag_1ms==1'b1))case(cnt_sel)3'd0: data_disp<=data_reg[3:0];3'd1: data_disp<=data_reg[7:4];3'd2: data_disp<=data_reg[11:8];3'd3: data_disp<=data_reg[15:12];3'd4: data_disp<=data_reg[19:16];3'd5: data_disp<=data_reg[23:20];default: data_disp<=4'b0;endcaseelsedata_disp<=data_disp;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)dot_disp<=1'b1;else if(flag_1ms==1'b1)dot_disp<=~point[cnt_sel];else dot_disp<=dot_disp;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)	seg<=8'd0;else case(data_disp)4'd0: seg<={dot_disp,7'b100_0000};4'd1: seg<={dot_disp,7'b111_1001};4'd2: seg<={dot_disp,7'b010_0100};4'd3: seg<={dot_disp,7'b011_0000};4'd4: seg<={dot_disp,7'b011_1001};4'd5: seg<={dot_disp,7'b001_0010};4'd6: seg<={dot_disp,7'b000_0010};4'd7: seg<={dot_disp,7'b111_1000};4'd8: seg<={dot_disp,7'b000_0000};4'd9: seg<={dot_disp,7'b001_0000};4'd10: seg<=8'b1011_1111;//10就是符号,只显示中间的那条杠,因此是4'd11: seg<=8'b1111_1111;//就是显示0default:seg<=8'b1100_0000;endcasealways@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)	sel<=6'd0;elsesel<=sel_reg;bcd_8421 bcd_8421_inst(.sys_clk	(sys_clk	)		,.sys_rst_n	(sys_rst_n)	,.data		(data		)	,.unit		(unit		)	,.ten		(ten		)		,.hun		(hun		)		,.tho		(tho		)		,.t_tho		(t_tho		)	,.h_hun      (h_hun    )
);endmodule

2.2 tb_seg_dynamic.v

module tb_seg_dynamic();reg 		sys_clk		;
reg 		sys_rst_n   ;
reg[19:0]  data		;
reg[5:0]	point		;
reg		sign		;
reg 		seg_en		;wire[7:0] 	seg;			
wire[5:0]    sel;initial beginsys_clk=1'b1;sys_rst_n<=1'b0;data<=20'd0;point<=6'b000_000;sign<=1'b0;seg_en<=1'b0;#30sys_rst_n<=1'b1;data<=20'd98_76;point<=6'b000_010;sign<=1'b1;seg_en<=1'b1;endalways #10 sys_clk=~sys_clk;
defparam seg_dynamic_inst.CNT_MAX=20'd5;seg_dynamic seg_dynamic_inst(.sys_clk	(sys_clk	)	,.sys_rst_n	(sys_rst_n),.data		(data		),.point		(point		),.sign		(sign		),.seg_en		(seg_en		),.seg		(seg		)	,.sel        (sel      )
);
endmodule

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

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

相关文章

Yolo系列各代网络结构分析(一)

Yolo系列 Yolo系列算是目标检测领域的常青树了&#xff0c;从v1到最近的v9&#xff0c;一直都在不断迭代&#xff0c;不断改进&#xff0c;但是细看其各代网络的发展&#xff0c;其实还是有很多一脉相承之处以及算法设计偏好的&#xff0c;总结主要为以下几个方面&#xff1a;…

【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

文章目录 一、向量和矩阵的基本运算1、简单变换1. 平移变换2. 缩放变换3. 旋转变换4. 一般线性变换 2、齐次坐标0. 齐次坐标表示1. 2D点的齐次坐标变换2. 投影空间 ( x , y , w ) (x, y, w) (x,y,w)3. 2D直线的齐次坐标表示a. 直线的参数方程表示b. 直线的法向量和原点距离表示…

深度解析Elasticsearch索引数据量过大的优化与部署策略

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 1. 分片和副本策略 1.1分片策略 1.1.1 数据量 1.1.…

sqllab第二十一关通关笔记

知识点&#xff1a; 错误注入 最大长度为32超过需要利用截取函数分段读取cookie注入base64加密会保留符号的原始属性 通过admin admin进行登录发现和第二十关显示的内容一样&#xff0c;猜测应该还是cookie注入&#xff1b; 直接截取带有cookie的数据包&#xff0c;发现uname…

【计算机网络】概述

文章目录 一、Internet 因特网1.1 网络、互联网、因特网1.2 因特网的组成 二、三种交换方式2.1 电路交换 &#xff08;Circuit Switching&#xff09;2.2 *分组交换 &#xff08;Packet Switching&#xff09;2.3 报文交换 &#xff08;Message Switching&#xff09; 三、计算…

100W-150W电阻器-TO-247模压厚膜电阻(1)

EAK封装的TO-247功率电阻器为设计工程师提供稳定的晶体管式封装的大功率电阻器件&#xff0c;功率为100W-150W。这些电阻器专为需要精度和稳定性的应用而设计。该电阻器采用氧化铝陶瓷层设计&#xff0c;可将电阻元件和安装片分开。 EAK模压TO-247厚膜功率电阻器 这种结构提供了…

Redis基本使用

Redis基本使用 1.通用命令2.基本数据类型2.1 String2.2 Hash2.3 List2.4 Set2.5 SortedSet 3. SpringDataRedis3.1 简介3.2 快速代码示例3.3 序列化 1.通用命令 针对所有数据类型的操作可以在Redis官方文档查看。以下是通用的命令。 KEYS&#xff1a;查看符合模板的所有key D…

React——react 的基本使用

前提&#xff1a;安装全局的脚手架&#xff0c;通过create-creat-app 项目名&#xff0c;我们创建好一个新项目&#xff0c;cd进去&#xff0c;通过npm start去运行该项目 注意&#xff1a;简单看下demo的配置&#xff0c;在根目录我们可以看到&#xff0c;没有任何webpack的…

rviz上不显示机器人模型(模型只有白色)

文档中的是base_footprint&#xff0c;需要根据自己所设的坐标系更改&#xff0c;我的改为base_link 如何查看自己设的坐标系&#xff1a; 这些parent父坐标系就是 同时打开rviz后需要更改成base_link

20232831 2023-2024-2 《网络攻防实践》第2次作业

目录 20232831 2023-2024-2 《网络攻防实践》第2次作业1.实验内容2.实验过程3.学习中遇到的问题及解决4.学习感悟、思考等参考资料 20232831 2023-2024-2 《网络攻防实践》第2次作业 1.实验内容 &#xff08;1&#xff09;从www.csdn.net、www.163.com等中选择一个DNS域名进行…

结构设计模式 - 组合设计模式 - JAVA

组合设计模式 一. 介绍二.代码示例2.1 定义Component2.2 定义Leaf2.3 定义Composite 三. 参考案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一. 介绍 由不同的对象组合成一个…

OSI(Open Systems Interconnection)模型和TCP/IP模型

OSI模型 OSI模型是一个概念模型&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;在1984年提出&#xff0c;用于促进不同系统间的通信互联。OSI模型将网络通信的过程分为七层&#xff0c;每一层都有其特定的功能&#xff0c;从下至上依次是&#xff1a; 物理层&#x…

【机器学习智能硬件开发全解】(四)—— 政安晨:嵌入式系统基本素养【后摩尔时代】

随着物联网、大数据、人工智能时代的到来&#xff0c;海量的数据分析、大量复杂的运算对CPU的算力要求越来越高。 CPU内部的大部分资源用于缓存和逻辑控制&#xff0c;适合运行具有分支跳转、逻辑复杂、数据结构不规则、递归等特点的串行程序。 在集成电路工艺制程将要达到极…

一个H5页面中直接使用React的示例与说明

示例 如题&#xff0c;下面的个简单代码示例—在H5页面中直接使用React <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

Pytorch从零开始实战21

Pytorch从零开始实战——Pix2Pix理论与实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——Pix2Pix理论与实战内容介绍数据集加载模型实现开始训练总结 内容介绍 Pix2Pix是一种用于用于图像翻译的通用框架&#xff0c;即图像到图像的转换。…

【数学】【计算几何】1453. 圆形靶内的最大飞镖数量

作者推荐 视频算法专题 本文涉及知识点 数学 计算几何 LeetCoce:1453. 圆形靶内的最大飞镖数量 Alice 向一面非常大的墙上掷出 n 支飞镖。给你一个数组 darts &#xff0c;其中 darts[i] [xi, yi] 表示 Alice 掷出的第 i 支飞镖落在墙上的位置。 Bob 知道墙上所有 n 支飞…

分布式之网关Gateway

Spring Cloud Gateway 1、网关简介 网关作为流量的入口&#xff0c;常用的功能包括路由转发&#xff0c;权限校验&#xff0c;限流等。 2、Gateway简介 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架&#xff0c;定位于取代 Netflix Zuul。相比 Zuul 来说&…

抖音在线点赞任务发布接单运营平台PHP网站源码

源码简介 抖音在线点赞任务发布接单运营平台PHP网站源码 多个支付通道分级会员制度 介绍&#xff1a; 1、三级代理裂变&#xff0c;静态返佣/动态返佣均可设置。&#xff08;烧伤制度&#xff09;。 2、邀请二维码接入防红跳转。 3、自动机器人做任务&#xff0c;任务时间…

软考高级:信息系统分类-业务处理系统(TPS)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

创新发展,探索智慧园区平台架构设计与实现

随着信息技术的快速发展&#xff0c;智慧园区平台作为集成物联网、大数据、人工智能等技术的综合性服务平台&#xff0c;正逐步成为推动企业数字化转型的重要驱动力。本文将深入探讨智慧园区平台的架构设计思路、关键技术和应用场景&#xff0c;助力读者了解如何打造智慧化、协…