1. 顶层原理图

    /
  2. count.v
module count(input sys_clk,input sys_rst_n,output reg [7:0] data);             //累加数parameter MAX_TIME = 25'd25000_000;     //25M频率1s
parameter MAX_NUM = 99;                 //最大计数到99
reg [25:0] cnt;                         //计数
reg [7:0] data_tmp;
reg [7:0] point_tmp;
reg flag;                               //计数周期标志,1s产生一个脉冲//分频得出1s
always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n) begincnt <= 25'd0;flag <= 1'b0;endelse if(cnt < MAX_TIME) begincnt <= cnt+1'b1;flag <= 1'b0;endelse beginflag <= 1'b1;cnt <= 25'd0;end
end//data 自加
always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n)  begindata_tmp <= 12'd0;point_tmp<= 2'd0;endelse if(flag) beginif(data_tmp < MAX_NUM)data_tmp <= data_tmp + 1;elsedata_tmp <= 12'd0;endelsedata_tmp <= data_tmp;data <= data_tmp;
endendmodule

//
3. seg_led_set.v

module seg_led_set(input sys_clk,input sys_rst_n,input [7:0] data,output reg [1:0] sel,output reg [7:0] led);
//
parameter TIME_1ms = 15_000;        //数码管1ms循环闪烁reg [3:0]   num_dis;                //当前显示的数
reg [1:0]   sel_dis;                //当前显示的位
reg         clk_div;                //1ms 分频
reg [14:0]  clk_cnt;                //1ms 分频 计数器  15000是14位,但是clk_cnt不能定义为reg[13:0],这是为何?wire [3:0] data0;                   //个位
wire [3:0] data1;                   //十位    assign data0 = data%10;
assign data1 = data/10%10;//分频得出1ms翻转一次的clk_div
always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n) beginclk_cnt <= 14'd0;clk_div <= 1'b0;endelse if(clk_cnt < TIME_1ms)clk_cnt <= clk_cnt + 1'b1;else beginclk_cnt <= 14'd0;clk_div <= ~clk_div;end
end //根据clk_div的状态选择点亮十位或者各位的数码管
always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n) beginnum_dis <= 4'd0;sel <= 2'd0;endelse if(clk_div) beginsel <= 2'b10;num_dis <= data1;endelse beginsel <= 2'b01;num_dis <= data0;end
end//译码输出
always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n)led <= 8'hff;else begincase (num_dis)4'h0: led <= 8'b0011_1111;4'h1: led <= 8'b0000_0110;4'h2: led <= 8'b0101_1011;4'h3: led <= 8'b0100_1111;4'h4: led <= 8'b0110_0110;4'h5: led <= 8'b0110_1101;4'h6: led <= 8'b0111_1101;4'h7: led <= 8'b0000_0111;4'h8: led <= 8'b0111_1111;4'h9: led <= 8'b0110_0111;4'ha: led <= 8'b0111_0111;4'hb: led <= 8'b0111_1100;4'hc: led <= 8'b0011_1001;4'hd: led <= 8'b0101_1110;4'he: led <= 8'b0111_1001;4'hf: led <= 8'b0111_0001;default : led <= 8'b0011_1111;endcaseend
end
endmodule

实现两位数码管显示从00累加到99的秒计时器,遗留问题是cnt计1ms时在15M晶振频率下要记到15000,15000是14位,在seg_led_set.v中,cnt如果定义为reg [13:0],则无法计到15000,目前尚未查出原因。

Verilog HDL**两位数码管计数器,关于reg位数的问题相关推荐

  1. 两位数码管秒表c语言,两位数码管显示计时器.doc

    两位数码管显示计时器 一.题目 用定时0的方式1实现数码管两位59S循环计时(计时器) 二.思路方案 本实验利用单片机的定时器/计数器定时和计数的原理,通过proteus 仿真软件来实现模拟实现.模拟 ...

  2. protues用一片74hc595控制两位数码管

    前面的博文中我们介绍了一个arduino中用一片595来控制一位数码管,这里我们介绍一个595来控制两位数码管.两位数码管是应用最广泛的,如交通灯倒计时,计数器等都将用到两位数码管. 两位数码管的动态 ...

  3. 定时器中断实验 编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。

    编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00.01.02--98.99每间隔500ms加1显示. 程序: #include <reg51.h> ...

  4. 定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。

    编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00.01.02--98.99每间隔500ms加1显示. 程序: #include <reg51.h> #defin ...

  5. (32)Verilog HDL按位运算

    (32)Verilog HDL按位运算 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL按位运算 5)结语 1.2 FPGA简介 FPGA(Fiel ...

  6. proteus仿真arduino控制两位数码管

    前面我们用arduino控制一位数码管,知道了控制数码管的原理.这里我们增加了一位,其显示的原理基本一样.只不过本质上不是两位同时点亮,而是轮换点亮.下面是原理图: 我们来看看代码的实现: int P ...

  7. Arduino实验之两位数码管实验报告

    第一种方案 从1-12引脚分别如图所示这样接 下面五个脚从左到右分别是1 2 3 4 5,上面六个脚从右到左分别是7 8 9 10 11 12,13是LED灯 实现方案一:将数码管从1变成99 两位数 ...

  8. FPGA初探(五)之两位数码管显示

    两位数码管显示 目标: 共阳极数码管实现动态显示 实现过程规划(功能分解,分步实现): 取得两位数0~99, 第一步,分成个位十位, 第二步,将个位十位转换为数码管编码, 第三步,数码管显示模块: 1 ...

  9. 【单片机仿真项目】外部中断0和1控制两位数码管进行计数

    目录 1.外部中断0和1控制两位数码管进行计数 keil 代码 2.proteus 原理图 3.gif 动态图

最新文章

  1. java php mysql_系统学习javaweb13----MYSQL学习(使用PHP、SQL)1
  2. JVM(Java虚拟机)优化大全和案例实战
  3. spark rdd map java_如何在spark RDD(JavaRDD)中获取记录的文件名
  4. SpringBoot整合Security安全框架、控制权限
  5. 搜索关键字高亮_Django Haystack 全文检索与关键词高亮
  6. 二柱子2.0编程总结
  7. 稳定高效大型系统架构---集群中间件开发
  8. 优酷的多页画在同一窗口打开效果。
  9. 这两年亚马逊创业都是一个非常火热的话题
  10. 优化理论13----黄金分割法、单峰函数、python实现及验证
  11. PS/PR/AE全套插件一键安装包无需注册码
  12. 这是我看过把Spring Cloud核心组件讲的最明白的一个故事了
  13. 一种提取HTML网页正文的方法
  14. 3名院士被处理,院士改革确实动真格了!
  15. matplotlib 绘图 中文乱码 0.5
  16. U盘安装Linux系统教程
  17. kernel 选项详解(stlinux2.3)
  18. 记录一次 Liferay 7.X 中弹出窗口的简单使用
  19. 电路原理入门书籍推荐
  20. 克鲁斯卡尔算法与普里姆算法详解

热门文章

  1. Windows10下用vim+ctags+cscope搭建属于自己的IDE
  2. Kotlin极简教程(第一章 Kotlin简介)
  3. winform程序中e.Cancel有什么意义
  4. 微信小程序开发之——录音播放及文件上传下载-理论(1)
  5. 技术分享|如何做嵌入式系统的自动化测试
  6. IDEA DEBUG 启动慢,启动卡死,本地IDEA环境,千万千万不要在方法上打断点!太坑了!
  7. 相机分辨率越高,成像效果就一定越好嘛
  8. 数控开料机,板式家具开料机
  9. linux-wifi设置静态IP
  10. 重磅来袭(90街机坦克大战unity制作)