一.原理图




通过第一张数码管的原理图可知,6根位选的信号线与PNP三极管相连然后再控制数码管的位选。当位选的I/O口为低电平时,三极管导通,数码管对应的位被点亮。如果了解数码管的结构原理便可通过位选的电路结构知道,此数码管为共阳极,因此段选的I/O口为低电平时,数码管对应的段会被点亮
注:此开发板连接方式是位选的低位在左,高位在右

二.代码和注释

此代码用于实现数码管的静态显示,即六个位显示的数字相同。每经过0.5s数码管显示加1(0~F)。
顶层结构图

1.time_count.

定时器模块。

module time_count
(input      sys_clk,input      sys_rst_n,output reg change_flag //数码管改变信号,每0.5秒给出一个信号
);parameter max_count = 25'd25_000_000;   //定时0.5sreg[24:0] count;    //计数器always @(posedge sys_clk or negedge sys_rst_n)
beginif(sys_rst_n==0)beginchange_flag <= 1'b0;count <= 24'b0;end    else if(count<max_count-1'b1)begincount <= count + 1'b1;change_flag <= 1'b0; end elsebegincount <= 24'b0;change_flag <= 1'b1;  //0.5s给出高电平的数码管改变信号end
end
endmodule

2.smg_display.v

数码管显示模块:默认情况下6个位全部打开,并显示相同的数字

module smg_display
(input           sys_clk,input           sys_rst_n,input             change_flag,   //由定时器模块输出的数码管改变信号output reg [5:0] smg_wei, //数码管位选输出 output reg [7:0] smg_duan //数码管段选输出
);reg [4:0] num;    //数码管显示的数(0~F)always @(posedge sys_clk or negedge sys_rst_n)
beginif(sys_rst_n==0)smg_wei <= 6'b111111;elsesmg_wei <= 6'b000000; //数码管6个位全部打开
endalways @(posedge sys_clk or negedge sys_rst_n)
beginif(sys_rst_n==0)num <= 4'h0;else if(change_flag)beginif(num < 4'hf)num <= num + 1'b1; //每个数码管改变信号到来显示数值加1elsenum <= 4'h0;    //大于F后从0重新开始endelsenum <= num;
endalways @(posedge sys_clk or negedge sys_rst_n)
beginif(sys_rst_n==0)smg_duan <= 8'b0;else begincase(num)    //数字所对应的段码4'h0 :    smg_duan <= 8'b1100_0000;4'h1 :    smg_duan <= 8'b1111_1001;4'h2 :    smg_duan <= 8'b1010_0100;4'h3 :    smg_duan <= 8'b1011_0000;4'h4 :    smg_duan <= 8'b1001_1001;4'h5 :    smg_duan <= 8'b1001_0010;4'h6 :    smg_duan <= 8'b1000_0010;4'h7 :    smg_duan <= 8'b1111_1000;4'h8 :    smg_duan <= 8'b1000_0000;4'h9 :    smg_duan <= 8'b1001_0000;4'ha :    smg_duan <= 8'b1000_1000;4'hb :    smg_duan <= 8'b1000_0011;4'hc :    smg_duan <= 8'b1100_0110;4'hd :    smg_duan <= 8'b1010_0001;4'he :    smg_duan <= 8'b1000_0110;4'hf :    smg_duan <= 8'b1000_1110;default : smg_duan <= 8'b1100_0000;endcaseend
end
endmodule

3.smg_test.v

主模块

module smg_test
(input       sys_clk,input       sys_rst_n,output [5:0] smg_wei,    //位选输出output [7:0] smg_duan //段选输出
);parameter MAX_TIME = 25'd25_000_000;    //定时器定时时间:25_000_000*0.02us=0.5s
wire change_flag;   //数码管显示改变标记//实例化
time_count
#(.max_count    (MAX_TIME)
)
u_time_count
(.sys_clk       (sys_clk),.sys_rst_n    (sys_rst_n),.change_flag    (change_flag)
);smg_display u_smg_display
(.sys_clk       (sys_clk),.sys_rst_n    (sys_rst_n),.change_flag    (change_flag),.smg_wei      (smg_wei),.smg_duan     (smg_duan)
);endmodule

引脚配置:

【FPGA——Cyclone Ⅳ学习笔记】五.数码管静态显示(EP4CE6F17C8)相关推荐

  1. 【FPGA——Cyclone Ⅳ学习笔记】一.LED流水灯(EP4CE6F17C8)

    一.原理图 此黑金开发板的LED灯为共阴级连接,即I/O口输出高电平为亮. 二.Verilog HDL代码及讲解 Verilog的语法和C语言有些相似,如果有C的基础则更容易理解. `timescal ...

  2. 达芬奇PRO板的FPGA功能学习笔记(一)

    达芬奇PRO板的FPGA功能学习笔记(一) 从编译到实现需要五个步骤: 1.写代码(verilog语言) 2.综合分析 3.写约束文件 约束文件主要是定义接口,命令第一个关键字代表命令的名称,其后的每 ...

  3. 数字设计FPGA应用学习笔记

    转载https://blog.csdn.net/chinkwoyu/article/details/80259064 数字设计FPGA应用学习笔记 数字设计FPGA应用学习笔记 第一章 FPGA基础及 ...

  4. AC620FPGA学习笔记——BCD数码管

    AC620FPGA学习笔记--BCD数码管 BCD数码管 硬件结构 整体框架 BCDDisplay模块 device_74hc595模块 代码部分 device_74hc595 BCDdecoder ...

  5. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  6. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  7. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  8. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  9. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

最新文章

  1. 大数据的“平民化”、“流动化”、“商业化”推动企业升级与转型
  2. 刘未鹏谈如何学习算法
  3. python flask服务_在python中Flask配置服务
  4. 北斗导航 | GPS原理与接收机设计——青冥剑(金码、C/A码、P码)
  5. 内置函数(面向对象)
  6. C++ 自定义调试信息的输出
  7. 10分钟带你逆袭kafka之路
  8. 互联网晚报 | 9月13日 星期一 | 美赞臣中国易主春华资本;美团外卖首次公开骑手配送时间算法;北京教培行业开展同业互助...
  9. CSDN中巧用< >符号显示
  10. codevs3732==洛谷 解方程P2312 解方程
  11. Numpy系列(二)对数组按索引查询
  12. 如何制作频数折线图(详细)
  13. 机器学习算法应用_机器学习:定义,类型,算法,应用
  14. Linux文件打包成不同后缀的压缩文件
  15. kettle 简介及入门
  16. 读懂K线,就能理解期货股票交易中人性的期望、猜疑、幻想、贪婪、恐惧...
  17. 完美幻灯片设计的黄金法则
  18. JVM:JVM常见参数配置
  19. ubuntu命令行 播放音乐
  20. 练习------复仇者联盟(设置一个立体盒子)

热门文章

  1. iOS DLNA Cyberlink,PlatinumKit库完成DLNA功能
  2. 【涨知识】4大名妓、4大美女、4大才子、4大才女,太齐全了!
  3. Skipper自动获取gds里的pad坐标和label
  4. Linux IOCTL
  5. 【深度首发】畅圣科技毛骏:寻找打通银行和保险业数据的完美入口丨Xtecher 封面
  6. 剑指 Offer(专项突击版)Java 持续更新....
  7. deep nostalgia怎么用?Deep nostalgia操作方法步骤(图文教程)
  8. hyperledger fabric 1.0.5 分布式部署 (一)
  9. [DLX重复覆盖] hdu 3498 whosyourdaddy
  10. LeeCode LCP.13 寻宝【python】