数码管驱动实验Verilog
1、知识点
①数码管动态扫描实现
②In System source and probes editor(ISSP)调试工具的使用
2、设计内容
a.输入查找表
b.分频模块
c.8选1多路器
d.8位循环移位寄存器
模块组合图
3、代码
module HXE8(clk,Rst_n,En,disp_data,sel,seg);input clk;//50Minput Rst_n;input En;input [31:0]disp_data;output [7:0]sel;//数码管位选output reg [6:0]seg;//数码管段选reg [14:0] divider_cnt;reg clk_1K;reg [7:0]sel_r;reg [3:0]data_tmp;//数据缓存//分频计数器always@(posedge clk or negedge Rst_n)if(!Rst_n)divider_cnt <= 15'd0;else if(!En)divider_cnt <= 15'd0;else if(divider_cnt == 24999)divider_cnt <= 15'd0;elsedivider_cnt <= divider_cnt + 1'b1;//1K扫描时钟生成模块always@(posedge clk or negedge Rst_n)if(!Rst_n)clk_1K <= 1'b0;else if(divider_cnt == 24999)clk_1K <= ~clk_1K;elseclk_1K <= clk_1K;//8位循环移位寄存器 always@(posedge clk_1K or negedge Rst_n)if(!Rst_n)sel_r <= 8'b0000_0001;else if(sel_r == 8'b1000_0000)sel_r <= 8'b0000_0001;elsesel_r <= sel_r << 1;//8选1多路器always@(*)case(sel_r)8'b0000_0001:data_tmp = disp_data[3:0];8'b0000_0010:data_tmp = disp_data[7:4];8'b0000_0100:data_tmp = disp_data[11:8];8'b0000_1000:data_tmp = disp_data[15:12];8'b0001_0000:data_tmp = disp_data[19:16];8'b0010_0000:data_tmp = disp_data[23:20];8'b0100_0000:data_tmp = disp_data[27:24];8'b1000_0000:data_tmp = disp_data[31:28];default:data_tmp = 4'b0000;endcase//always@(*)case(data_tmp)4'h0:seg = 7'b1000000;4'h1:seg = 7'b1111001;4'h2:seg = 7'b0100100;4'h3:seg = 7'b0110000;4'h4:seg = 7'b0011001;4'h5:seg = 7'b0010010;4'h6:seg = 7'b0000010;4'h7:seg = 7'b1111000;4'h8:seg = 7'b0000000;4'h9:seg = 7'b0010000;4'ha:seg = 7'b0001000;4'hb:seg = 7'b0000011;4'hc:seg = 7'b1000110;4'hd:seg = 7'b0100001;4'he:seg = 7'b0000011;4'hf:seg = 7'b0001110;endcaseassign sel = (En)? sel_r : 8'b0000_0000;endmodule `timescale 1ns/1ns
`define clk_period 20module HXE8_tb;reg clk;reg Rst_n;reg En;reg [31:0]disp_data;wire [7:0]sel;wire [6:0]seg;HXE8 HXE8(.clk(clk),.Rst_n(Rst_n),.En(En),.disp_data(disp_data),.sel(sel),.seg(seg));initial clk = 1;
always #(`clk_period/2) clk = ~clk;initial beginRst_n = 1'b0;En = 1;disp_data = 32'h12345678;#(`clk_period*20);Rst_n = 1'b1;#(`clk_period*20);#20000000;disp_data = 32'h87654321;#20000000;disp_data = 32'h89abcdef;#20000000;$stop;end
endmodule
数码管驱动实验Verilog相关推荐
- [原创].七段数码管驱动,Verilog版本
我以前在艾米电子写的驱动.贴在博客之目的:一.时常记记,以防忘记:二.分享给大家.也许是工作比较忙之缘故吧,新近的博文啰嗦的话语少了许多,直接贴上代码,大家有什么不明白的,留言即可. 版本1 顶层例化 ...
- (38)FPGA数码管驱动设计(第8天)
(38)FPGA数码管驱动设计(第8天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA数码管驱动设计(第8天) 5)技术交流 6)参考资料 2 FPGA ...
- [记录] 基于STC89C52RC的贪吃蛇三色游戏机设计(内含点阵驱动、数码管驱动详解)
目录 设计目标 需求分析 硬件设计 点阵模块 数码管模块 节拍信号发生电路 蜂鸣器电路 串口驱动电路.按键电路及MCU最小系统 软件设计 重要数据结构 蛇 显存 驱动 LED点阵驱动 74595驱动 ...
- 7段并行数码管显示实验C语言,七段数码管显示十进制数字 (15)
实验报告 实验题目 设有10个开关,编号分别为0,1,--,9. 设计电路实现某开关闭合时对应显示相应的十进制数字.要求:(1)写出设计说明,(2)用 Proteus或Multisim仿真. 实验方案 ...
- c语言实现7段数码管显示,七段数码管显示实验.doc
七段数码管显示实验 单 片 机 实 验 报 告 实验九 七段数码管显示实验 实验目的 学习七段数码管的工作原理: 学习数码管与8051单片机的接口方法: 掌握动态扫描显示技术. 实验原理 如图4.9- ...
- 【正点原子FPGA连载】第三十一章RTC实时时钟数码管显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 共阳数码管段码表_正点原子开拓者FPGA开发板资料连载第十一章 静态数码管显示实验...
1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...
- FPGA 动态数码管显示实验
参考:正点原子开拓者 FPGA 开发指南 一.数码管动态显示简介 由于一般的静态驱动操作虽然方便,但占用的I/0口较多,例如要驱动6位8段数码管,以静态驱动方式让数码管各个位显示不同的数值,如&quo ...
- 国产航顺HK32F030M:TM1624四位数码管驱动显示
1. 什么是数码管? 一位LED数码管的实物外形如图所示,它将a.b.c.d.e.f.g.dp共8个LED排成图示的 "8." 字形,通过让a.b.c.d.e.f.g不同的段发光来 ...
最新文章
- 使用jquery获取radio的值
- JAVA泛型知识(一)
- micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC
- linux /proc/cpuinfo文件分析
- leetcode 888. 公平的糖果棒交换(set)
- 《Python Cookbook 3rd》笔记(1.13):通过某个关键字排序一个字典列表
- 创新小组 实战Git团队企操作手册_精华版本
- java newfile() bug_java初学者小白?遇到BUG就慌了?有关java异常的十大问题详解!...
- linux --常用命令
- matlab搭建的应用层架构逻辑,软件设计的三层架构
- Chapter 5. MPEG-4 Visual
- bash脚本编程之十 函数
- 计算机网络技术基础第5版答案,计算机网络基础 (第5版)课后习题及答案.doc
- 程序性能常用衡量指标
- debian编译内核2.6.16-1
- go的close函数理解
- 阿里云Linux服务器如何安装ClamAV杀毒软件-最全详细教程
- hexo(next)——每日一言、今日诗词
- iphone11看信号强度_iphone11信号强度真的会有提升吗
- 游戏软件寄售官网源码带后台