当前位置: 首页 > news >正文

Verilog 学习第八节(数码管段码显示)

共阴极数码管:低电平端接的都是0,高电平端哪里设置为1 ,哪里就亮~
共阳极数码管与之相反~
视觉暂留:
对于三位的共阴极数码管
第0.01s:让数码管0的a段亮,其他数码管全灭
Sel0为高电平,sel1和sel2为低电平
A段为低电平

第0.02s:让数码管1的b、c段亮,其他数码管全灭
Sel1为高电平,sel0和sel2为低电平
B和C段为低电平

第0.03s:让数码管2的e段亮,其他数码管全灭
Sel2为高电平,sel0和sel1为低电平
E段为低电平
数码管动态扫描
所以,通过这种方式,可以节约引脚~
在这里插入图片描述
抽象原理图:
在这里插入图片描述
在fpga设计中尽量使用使能时钟去驱动寄存器,而不是门控时钟,因为门控时钟的质量非常差
在这里插入图片描述
使用门控时钟,将门控时钟直接作为DFF的工作时钟,没有ENA的情况下忽略ENA
在这里插入图片描述

使用使能时钟的情况,DFF的工作时钟继续全局高质量时钟,而将使能时钟作为DFF的使能信号使用

在能使用时序逻辑的情况下,尽量使用时序逻辑
顶层模块:


module hex8_test(input Clk,input Reset,output [7:0]SEL,output [7:0]SEG);wire [31:0]Disp_Data;hex8_2 hex8_2(Clk,Reset,Disp_Data,SEL,SEG);assign Disp_Data=32'h12359bdf;endmodule

主模块

module hex8(input Clk,input Reset,input [31:0]Disp_Data,output reg [7:0]SEL,output reg [7:0]SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);reg clk_1k;reg [14:0]div_cnt;always@(posedge Clk or negedge Reset)beginif(!Reset)div_cnt<=0;else if(div_cnt>=25000-1)div_cnt<=0;elsediv_cnt<=div_cnt+1;endalways@(posedge Clk or negedge Reset)beginif(!Reset)clk_1k<=0;else if(div_cnt>=25000-1)clk_1k<=~clk_1k;endreg[2:0]reg_num;always@(posedge clk_1k or negedge Reset)beginif(!Reset)reg_num<=0;else if(reg_num>=7)reg_num<=0;elsereg_num<=reg_num+1;endalways@(*)begincase(reg_num)0:SEL=8'b0000_0001;1:SEL=8'b0000_0010;2:SEL=8'b0000_0100;3:SEL=8'b0000_1000;4:SEL=8'b0001_0000;5:SEL=8'b0010_0000;6:SEL=8'b0100_0000;7:SEL=8'b1000_0000;endcaseendreg[3:0] disp_temp;always@(*)begincase(reg_num)7:disp_temp=Disp_Data[31:28];6:disp_temp=Disp_Data[27:24];5:disp_temp=Disp_Data[23:20];4:disp_temp=Disp_Data[19:16];3:disp_temp=Disp_Data[15:12];2:disp_temp=Disp_Data[11:8];1:disp_temp=Disp_Data[7:4];0:disp_temp=Disp_Data[3:0];endcaseendalways@(*)begincase(disp_temp)0:SEG=8'hc0;1:SEG=8'hf9;2:SEG=8'ha4;3:SEG=8'hb0;4:SEG=8'h99;5:SEG=8'h92;6:SEG=8'h82;7:SEG=8'hf8;8:SEG=8'h80;9:SEG=8'h90;4'ha:SEG=8'h88;4'hb:SEG=8'h83;4'hc:SEG=8'hc6;4'hd:SEG=8'ha1;4'he:SEG=8'h86;4'hf:SEG=8'h8e;endcaseend 
endmodule

改进后的主模块


module hex8_2(input Clk,input Reset,input [31:0]Disp_Data,output reg [7:0]SEL,output reg [7:0]SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);reg clk_1k;reg [15:0]div_cnt;always@(posedge Clk or negedge Reset)beginif(!Reset)div_cnt<=0;else if(div_cnt>=50000-1)div_cnt<=0;elsediv_cnt<=div_cnt+1;endalways@(posedge Clk or negedge Reset)beginif(!Reset)clk_1k<=0;else if(div_cnt>=50000-1)clk_1k<=1;elseclk_1k<=0;endreg[2:0]reg_num;always@(posedge Clk or negedge Reset)beginif(!Reset)reg_num<=0;else if(clk_1k)reg_num<=reg_num+1;elsereg_num<=reg_num;endalways@(posedge Clk)begincase(reg_num)7:SEL=8'b0000_0001;6:SEL=8'b0000_0010;5:SEL=8'b0000_0100;4:SEL=8'b0000_1000;3:SEL=8'b0001_0000;2:SEL=8'b0010_0000;1:SEL=8'b0100_0000;0:SEL=8'b1000_0000;endcaseendreg[3:0] disp_temp;always@(posedge Clk)begincase(reg_num)0:disp_temp=Disp_Data[31:28];1:disp_temp=Disp_Data[27:24];2:disp_temp=Disp_Data[23:20];3:disp_temp=Disp_Data[19:16];4:disp_temp=Disp_Data[15:12];5:disp_temp=Disp_Data[11:8];6:disp_temp=Disp_Data[7:4];7:disp_temp=Disp_Data[3:0];endcaseendalways@(posedge Clk)begincase(disp_temp)0:SEG=8'hc0;1:SEG=8'hf9;2:SEG=8'ha4;3:SEG=8'hb0;4:SEG=8'h99;5:SEG=8'h92;6:SEG=8'h82;7:SEG=8'hf8;8:SEG=8'h80;9:SEG=8'h90;4'ha:SEG=8'h88;4'hb:SEG=8'h83;4'hc:SEG=8'hc6;4'hd:SEG=8'ha1;4'he:SEG=8'h86;4'hf:SEG=8'h8e;endcaseend 
endmodule

测试模块

`timescale 1ns / 1psmodule hex8_tb();reg Clk;reg Reset;reg [31:0]Disp_Data;wire [7:0]SEL;wire [7:0]SEG;hex8 hex8(Clk,Reset,Disp_Data,SEL,SEG//seg[0]对应a,seg[1]对应b~~~~seg[7]对应h);initial Clk=0;always#10 Clk=!Clk;initial beginReset=0;Disp_Data=32'h0000_0000;#201Reset=1;#2000Disp_Data=32'h1234_5678;#10000000Disp_Data=32'h9abc_def0;#10000000$stop;end
endmodule

时钟质量在FPGA设计中重要的原因

1:时钟延迟不确定,而且比较大
2:使得时钟的波形变差
3:驱动能力
在这里插入图片描述

相关文章:

Verilog 学习第八节(数码管段码显示)

共阴极数码管&#xff1a;低电平端接的都是0&#xff0c;高电平端哪里设置为1 &#xff0c;哪里就亮~ 共阳极数码管与之相反~ 视觉暂留&#xff1a; 对于三位的共阴极数码管 第0.01s&#xff1a;让数码管0的a段亮&#xff0c;其他数码管全灭 Sel0为高电平&#xff0c;sel1和sel…...

方案开发|快递吊钩电子秤方案

物流的发展为我们提供了生活的便利&#xff0c;足不出户仍可以感受天南地北的美食的特产&#xff0c;在现在这个时代已经是现实并发展成为常态的事情了。在物流发展的每一个环节中&#xff0c;吊钩电子秤也是它必不可缺的一环。人们在寄出物品前需要通过吊钩电子秤称量过重量&a…...

Spring-IOC容器初始化过程

Spring IOC容器的初始化过程:Resource定位,BeanDefinition载入,向IOC容器注册BeanDefinition。整个过程由refresh()方法触发,三个过程由不同的模块完成,使用户更加灵活的对这三个过程剪裁和扩展。 BeanDefinition 就是POJO对象在IOC容器中的抽象。通过BeanDefinition 这个…...

AspCms标签手册

网站通用标签{aspcms:sitepath} 网站终极目录(可放在二级目录,其它语言则在三级目录){aspcms:languagepath} 语言目录{aspcms:siteurl} 网站地址{aspcms:sitelogo} LOGO地址{aspcms:sitetitle} 网站标题{aspcms:additiontitle} 网站附加标题{aspcms:sitekeywords} 网站关键词{a…...

什么是Netty

一&#xff0e;Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架&#xff0c;用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架&#xff0c;Netty 在互联网领域、大数据分布式计算…...

SpringCloud:统一网关Gateway

目录 1、网关介绍 2、搭建网关服务 3、路由断言工厂 4、路由过滤器 5、全局过滤器GlobalFilter 6、过滤器执行顺序 7、跨域问题处理 1、网关介绍 网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连&#xff0c;是复杂的网络互 连设备&#xff0…...

【独家】华为OD机试 - 最差产品奖(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

​力扣解法汇总1599. 经营摩天轮的最大利润

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱…...

MySQL-常见的五种索引

什么是索引&#xff1f; 百度百科&#xff1a;在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于…...

Linux学习第二十三节-压缩和解压缩和tar打包工具

1.压缩与解压缩&#xff08;不常用&#xff09;①Linux独有压缩格式及命令工具: gzip---> .gz bzip2---> .bz2 xz---> .xz②压缩命令格式&#xff1a; 压缩命令&#xff1a;gzip [选项] 文件名 常用选项&#xff1a;-d 解压缩 压缩命令&#xff1a;bzip2 [选项] 文件名…...

没有钱怎么创业?一分钱没有如何能创业成功?

限制人创业成功的从来都不是资金&#xff0c;而是能力&#xff0c;这个道理很多人都可能不懂&#xff0c;多数人习惯了庸庸碌碌、日复一日地打工行为&#xff0c;却不知如何创业&#xff0c;那么&#xff0c;没有钱怎么创业&#xff1f;一分钱没有如何能创业成功呢&#xff1f;…...

【操作系统原理实验】银行家算法模拟实现

选择一种高级语言如C/C等&#xff0c;编写一个银行家算法的模拟实现程序。1) 设计相关数据结构&#xff1b;2) 实现系统资源状态查看、资源请求的输入等模块&#xff1b;3) 实现资源的预分配及确认或回滚程序&#xff1b;4) 实现系统状态安全检查程序&#xff1b;5) 组装各模块…...

java医院云HIS系统:融合B/S版电子病历系统 能与公卫、PACS等各类外部系统融合

医院HIS系统源码 云HIS系统源码&#xff1a;SaaS运维平台完整文档 有源码&#xff0c;有演示 java基层医院云his系统 融合B/S版电子病历系统&#xff0c;支持电子病历4级 拥有自主知识产权。 看演示及源码可私信我哦&#xff01; 一、系统概述 一款满足二甲医院、基层医疗机构…...

单线激光雷达(SICK)驱动安装及时空标定

一、引言 1、AGV需要同时具备定位、避障与导航的功能&#xff0c;其中避障对于雷达本身的分辨率、精度要求并不是很高&#xff0c;只需要能够根据预设定的雷达扫描范围准确避开障碍物即可&#xff0c;故本文以TIM240&#xff08;SICK激光类雷达&#xff09;为例介绍实现多雷达…...

Java IO流

Java IO流 文章目录Java IO流什么是IO流InputStreamFlieInputStream示例OutputStream示例字符的读取与写入READER方法WRITER方法利用Scanner和PrintWriter简化字符的读写ScannerPrintWriter什么是IO流 前面我们介绍了Java中对文件的操作以及file类的了解&#xff0c;但是file类…...

LeetCode - 1653 使字符串平衡的最少删除次数

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1653. 使字符串平衡的最少删除次数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。 你可以删除 s 中任意数目的字符&#xff0c;使得 …...

【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…...

《超导电子技术及其应用》学习日志(二)

约瑟夫森效应 约瑟夫森理论 约瑟夫森方程 &#xff08;1&#xff09;每一个库柏对都可视为质量为2m、电量为2e的复合载流子&#xff0c;定向运动速度v就是库柏相对质心的速度。处于超导态的库柏对凝聚于同一量子态&#xff0c;运载电流时具有完全相同的动量P。用微观波函数来…...

微信小程序this指向问题

前言 最近在开发微信小程序时不时会遇到一个很奇怪的问题&#xff0c;有些情况下用 this.setData 可以改变视图显示&#xff0c;有些情况下使用 this.setData 无效&#xff0c;这又是为什么呢&#xff1f; 问题描述 在解释这个问题前&#xff0c;我们先来看两段代码&#xff1…...

【报错】paddle相关报错和处理方法

1 报错 😱😱😱 ModuleNotFoundError: No module named paddle 2 解决方法 💉💉💉 pip --default-timeout=100 install paddlepaddle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 🎉🎉🎉🎉🎉🎉 1 报错 😱😱😱 from paddl…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...