FPGA设计时间基准电路和带使能的多周期计数器
2017-12-08 18:12
274 查看
FPGA设计时间基准电路和带使能的多周期计数器
• 设计时间基准电路和带使能的多周期计数器
• 时间基准电路生成同步时间基准信号
• 多周期计数器对时间基准信号进行计数
• 本质上是一个两级计数器级联的的电路结构
——>第一级计数器生成时间基准信号
——>第二级计数器用时间基准信号作为计数使能
整个设计的原理图
前面对系统时钟50Mhz进行分频的时间基准电路,其实就是一个计数器。后面为一个带使能端的多周期计数器,通过开发板的LED灯验证。
RTL电路
七段数码管器件例化代码
module key_smg(count, smg1 ); input count ; output smg1 ; reg[3:0] count; reg[7:0] smg1 ; /************************************ 共阴极数码管 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e ************************************/ always@( count ) begin //个位显示 case( count ) 4'h0 : smg1 = 8'hc0 ; 4'h1 : smg1 = 8'hf9 ; 4'h2 : smg1 = 8'ha4 ; 4'h3 : smg1 = 8'hb0 ; 4'h4 : smg1 = 8'h99 ; 4'h5 : smg1 = 8'h92 ; 4'h6 : smg1 = 8'h82 ; 4'h7 : smg1 = 8'hf8 ; 4'h8 : smg1 = 8'h80 ; 4'h9 : smg1 = 8'h90 ; 4'ha : smg1 = 8'h88 ; 4'hb : smg1 = 8'h83 ; 4'hc : smg1 = 8'hc6 ; 4'hd : smg1 = 8'ha1 ; 4'he : smg1 = 8'h86 ; 4'hf : smg1 = 8'h8e ; endcase endmodule
实验一:把计数器的0-15计数值经过译码,在DE0的HEX LED上显示成0-9-A-F的十六 进制数
实验二:修改时间基准发生器,设计一个使用2个HEXLED,精度为0.1秒,范围为0-9.9秒的计时秒表。并可以通过两个按键对秒表及时进行控制。
module key_smg(clk, key, smg1, smg2 ); input clk, key; output smg1, smg2 ; //可变分频 ,(5M分频=0.1s) parameter timer = 5000_000; //分频时钟,开始/停止标识 reg div_clk, st_flag ; wire[1:0] key; reg[1:0] keyin; reg[22:0] TIM;//计数 reg[8:0] count; reg[7:0] smg1, smg2 ; //分频 always@(posedge clk ) begin if( TIM == timer ) begin TIM <= 0; div_clk <= ~div_clk; end else TIM <= TIM + 1'b1; end //消抖 always@(posedge TIM[20] ) begin keyin <= key ; end //key[0]开始停止标识(低电平有效), key[1]实现复位功能 always@(negedge keyin[0] ) begin st_flag <= ~st_flag ; end //计时功能 always@( posedge div_clk ) begin if( !keyin[1] && !st_flag ) count <= 0; else if( !st_flag ) count <= count; else if( count==100 ) count <= 0; count <= count + 1'b1; end //数码管显示 always@( count ) begin //个位显示 case( count%10 ) 4'h0 : smg1 = 8'hc0 ; 4'h1 : smg1 = 8'hf9 ; 4'h2 : smg1 = 8'ha4 ; 4'h3 : smg1 = 8'hb0 ; 4'h4 : smg1 = 8'h99 ; 4'h5 : smg1 = 8'h92 ; 4'h6 : smg1 = 8'h82 ; 4'h7 : smg1 = 8'hf8 ; 4'h8 : smg1 = 8'h80 ; 4'h9 : smg1 = 8'h90 ; endcase //十位显示 case( count/10) 4'h0 : smg2 = 8'h40 ; 4'h1 : smg2 = 8'h49 ; 4'h2 : smg2 = 8'h24 ; 4'h3 : smg2 = 8'h30 ; 4'h4 : smg2 = 8'h19 ; 4'h5 : smg2 = 8'h12 ; 4'h6 : smg2 = 8'h02 ; 4'h7 : smg2 = 8'h78 ; 4'h8 : smg2 = 8'h00 ; 4'h9 : smg2 = 8'h10 ; endcase end endmodule
程序中对系统时钟50MHz进行5M分频,得到0.1s的计时所用时钟,通过按键输入进行对计时值count的控制,数码管实时显示当前状态的计时值。
相关文章推荐
- FPGA入门实验四:时间基准电路 和 带使能的多周期计数器
- FPGA基础实验:时间基准电路和带使能的多周期计数器
- FPGA实验4: 时间基准电路和带使能的多周期计数器
- Verilog-FPGA硬件电路设计之一——if语句优先级问题
- 计数器 FPGA 电路实验 作业
- 基于VHDL的层次化设计:异步清零和同步使能4位十六进制加法计数器和七段显示译码器的元件例化实现
- FPGA最小系统分析与电路设计
- 计数器 FPGA 电路实验 作业
- FPGA基础实验:计数器设计、波形仿真、SignalTap调试
- CPLD/FPGA/Verilog_高速电路设计/信号完整性的一些基本概念
- FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
- 台湾人写的《CPU/SOC及外围电路应用设计--基于FPGA/CPLD》
- 《FPGA全程进阶---实战演练》第二十一章 细说低速与高速电路设计之电阻 电容 电感 磁珠
- FPGA学习(第9节)-Verilog设计电路大串讲(误区+组合逻辑+时序逻辑+状态机设计)
- 基于VHDL的层次化设计:异步清零和同步使能4位十六进制加法计数器和七段显示译码器的元件例化实现
- CPLD/FPGA/Verilog_高速电路设计/信号完整性的一些基本概念
- 计数器 FPGA 电路实验 作业
- 【转】 影响FPGA设计中时钟因素的探讨(建立与保持时间 写的很好)
- 基于fpga的处理器核心电路设计
- FPGA研发之道(10)架构设计漫谈(五)数字电路的灵魂-流水线