数码管的动态显示(二)

1.原理

这个十六进制是右边的dp为高位。

数码管的动态显示,在第一个计数周期显示个位,在第二个周期显示十位,在第三个周期显示百位由于人眼的视觉和数码管的特性,感觉就是显示了234,每个数码管的显示需要从输入的数据里提取出个十百位,所以需要BCD码。

8,原来输入的数据有多少位宽就要移位多少次。

增加一个BCD转码模块。

修改系统框图

2.代码

2.1 bcd_8421.v

module bcd_8421(input wire 			sys_clk			,input wire 			sys_rst_n		,input wire[19:0]	data			,output reg[3:0]		unit			,output reg[3:0]		ten				,output reg[3:0]		hun				,output reg[3:0]		tho				,output reg[3:0]		t_tho			,output reg[3:0]		h_hun
);reg [4:0]cnt_shift;  //输入是20位,第0次补0,要计数到20,就是0-20,第21次进行输出的赋值
reg [43:0]data_shift;//20位的data输入,和4*6=24位的8421BCD
reg shift_flag;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)cnt_shift<=5'd0;else if((cnt_shift==5'd21)&&(shift_flag==1'b1))cnt_shift<=5'd0;else if(shift_flag==1'b1)cnt_shift<=cnt_shift+1'b1;elsecnt_shift<=cnt_shift;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)shift_flag<=1'b0;elseshift_flag<=~shift_flag;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)data_shift<=44'd0;else if(cnt_shift==5'd0)data_shift<={24'b0,data};else if((cnt_shift<21)&&(shift_flag==1'b0))begindata_shift[23:20]<=(data_shift[23:20]>4) ? (data_shift[23:20]+2'd3) : (data_shift[23:20]);data_shift[27:24]<=(data_shift[27:24]>4) ? (data_shift[27:24]+2'd3) : (data_shift[27:24]);data_shift[31:28]<=(data_shift[31:28]>4) ? (data_shift[31:28]+2'd3) : (data_shift[31:28]);data_shift[35:32]<=(data_shift[35:32]>4) ? (data_shift[35:32]+2'd3) : (data_shift[35:32]);data_shift[39:36]<=(data_shift[39:36]>4) ? (data_shift[39:36]+2'd3) : (data_shift[39:36]);data_shift[43:40]<=(data_shift[43:40]>4) ? (data_shift[43:40]+2'd3) : (data_shift[43:40]);endelse if((cnt_shift<5'd21)&&(shift_flag==1'b1))data_shift<=data_shift<<1;else data_shift<=data_shift;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)beginunit	<=4'b0;ten	    <=4'b0;hun	    <=4'b0;tho	    <=4'b0;t_tho   <=4'b0;h_hun   <=4'b0;endelse if(cnt_shift==5'd21)beginunit	<=data_shift[23:20];ten	    <=data_shift[27:24];hun	    <=data_shift[31:28];tho	    <=data_shift[35:32];t_tho   <=data_shift[39:36];h_hun   <=data_shift[43:40];endendmodule

2.2 tb_bcd_8421.v

`timescale 1ns/1ns
module tb_bcd_8421();reg sys_clk	;
reg sys_rst_n;
reg [19:0] data;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   ;initial beginsys_clk=1'b1;sys_rst_n<=1'b0;data<=20'd0;#30sys_rst_n<=1'b1;data<=20'd123_456;#3000data<=20'd654_321;#3000data<=20'd987_654;#3000data<=20'd999_999;endalways #10 sys_clk=~sys_clk;bcd_8421 tb_bcd_8421(.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

shift_reg高电平时,cnt_shift开始计数

(最后一位999_999显示有误,不知道怎么改)

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

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

相关文章

Go语言必知必会100问题-23 判断空切片最佳方法

前言 在Go语言必知必会100问题-22 空切片与nil切片有区别吗&#xff1f;中分析了空切片和nil切片是有区别的&#xff0c;那如何正确的判断一个切片是否为空切片呢&#xff1f; 案例引入 下面通过一个具体的例子进行说明&#xff0c;getOperations 函数返回一个float32类型的…

Flutter第四弹:Flutter图形渲染性能

目标&#xff1a; 1&#xff09;Flutter图形渲染性能能够媲美原生&#xff1f; 2&#xff09;Flutter性能优于React Native? 一、Flutter图形渲染原理 1.1 Flutter图形渲染原理 Flutter直接调用Skia。 Flutter不使用WebView&#xff0c;也不使用操作系统的原生控件,而是…

Java学习笔记14——常量与变量

曾和儿子分享过所谓计算机程序&#xff0c;都是编写代码进行“数据处理和处理数据”而已。任何编程语言编写何种应用&#xff0c;数据都必须以某种方式表示。掌握变量和常量的用法&#xff0c;可以使代码的可维护性、可读性大大提高。 一、常量 常量就是在程序中固定不变的量…

C语言scandir函数获取文件夹内容

scandir 函数用于列举指定目录下的文件列表&#xff0c;并将结果存储在一个动态分配的数组中。 函数原型&#xff1a; int scandir(const char *dirpath, struct dirent ***namelist,int (*filter)(const struct dirent *),int (*compar)(const struct dirent **, const stru…

labview中6种机械动作的区别

1.单击时转换&#xff1a;单击时转换&#xff0c;需要手动转换或者赋值回复原来状态&#xff1b; 2.释放时转换&#xff1a;释放时时转换&#xff0c;需要手动转换或者赋值回复原来状态&#xff1b; 3.单击时转换保持到鼠标释放&#xff1a;触发两次&#xff0c;自动恢复原来状…

Python互斥锁实例(包含超时解锁)

Python互斥锁实例&#xff08;包含超时解锁&#xff09; 文章目录 前言正文1 锁被占用直接返回2 拿不到锁则一直等待3 拿不到锁等待直到超时 总结 前言 最近遇到一个小需求&#xff0c;大概是请求机器人&自动化设备执行某些功能&#xff0c;这些功能之间有共同操作资源或在…

Linux:导出环境变量命令export

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的内建命令export命令用于创建一个环境变量&#xff0c;或将一个普通变量导出为环境变量&#xff0c;并且在这个过程中&#xff0c;可以给该环境变量赋值。 下面…

多数问题求解之蒙特卡洛与分治法

多数问题&#xff08;Majority Problem&#xff09;是一个有多种求解方法的经典问题&#xff0c;其问题定义如下&#xff1a; 给定一个大小为 n n n的数组&#xff0c;找出其中出现次数超过 n / 2 n/2 n/2的元素 例如&#xff1a;当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] […

【WPS】压缩图片

第一步&#xff1a; 点击插入&#xff0c;点击图片 第二步&#xff1a; 点击图片工具&#xff0c;点击压缩图片 第三步&#xff1a;

Vue3 前端生成随机id( 生成 UUID )

效果展示 封装工具&#xff08;代码展示&#xff09; 重新创建一个文件**/utils/someTools.js**&#xff0c;并在里面写入如下代码。 function Tools() {}Tools.prototype.guid function () {return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replace(/[xy]/g, function (c) {v…

jQuery模态框弹窗提示代码

jQuery模态框弹窗提示代码 下载地址 jQuery模态框弹窗提示代码

GPT每日面试题—Vue中style的scoped是如何实现样式隔离的

充分利用ChatGPT的优势&#xff0c;帮助我们快速准备前端面试。今日问题&#xff1a;Vue中style的scoped是如何实现样式隔离的。 Q&#xff1a;在前端面试中&#xff0c;如果被问到&#xff0c;vue文件中的scoped是如何实现样式格式的&#xff0c;什么回答比较好&#xff0c;全…

Requests教程-17-请求代理设置

上一小节我们学习了requests解决乱码的方法&#xff0c;本小节我们讲解一下requests设置代理的方法。 代理基本原理 代理实际上指的就是代理服务器&#xff0c; 英文叫作proxy server &#xff0c;它的功能是代理网络用户去取得网络信息。形象地说&#xff0c;它是网络信息的中…

【阿里云系列】-基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…

【数据结构】双向链表及LRU缓存的实现

目录 前言 1. 在原有的自定义链表类 Linked 的基础上&#xff0c;添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上&#xff0c;使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础上…

突破编程_C++_面试(STL 编程 list)

面试题 1 &#xff1a;描述 std::list 的内部数据结构是什么&#xff0c;以及它如何影响性能&#xff1f; std::list 的内部数据结构是一个双向链表。这意味着它是由一系列节点组成的&#xff0c;每个节点都包含两部分&#xff1a;一部分是存储实际数据的数据域&#xff0c;另…

每日OJ题_哈希表⑤_力扣49. 字母异位词分组

目录 力扣49. 字母异位词分组 解析代码 力扣49. 字母异位词分组 49. 字母异位词分组 难度 中等 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入…

基于opencv的手势识别

当然可以&#xff0c;下面是一个使用OpenCV实现简单手势识别&#xff0c;并在摄像头捕捉的视频中描绘出手部轮廓为线条的示例。该代码会读取摄像头流&#xff0c;然后检测出手部&#xff0c;并用线条描绘出手的轮廓。 首先&#xff0c;你需要安装OpenCV库。如果你还没有安装&am…

Vulnhub靶机:Kioptrix_Level1.1

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Kioptrix_Level1.1&#xff08;192.168.56.104&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vul…

C语言例2-3:从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数

回文数是将自然数n的各位数字反向排列得到自然数n1&#xff0c;若n1与n相等&#xff0c;则称为回文数&#xff0c;例如12321 //从键盘输入一个正整数&#xff08;位数小于或等于10&#xff09;&#xff0c;判断其是否是回文数 //回文数是将自然数n的各位数字反向排列得到自然数…