hi3516dv300硬件设计:计时器与数码管显示

需积分: 42 21 下载量 163 浏览量 更新于2024-08-10 收藏 195KB PDF 举报
"该文档是基于hi3516dv300硬件设计的用户指南,涉及了计时、按键消抖处理、数码管动态扫描显示等知识点,以及Verilog编程实现的3-8译码器和1位数码管动态显示的示例。" 在hi3516dv300的硬件设计中,计时是关键部分。通过一个25位计数器`count`,当计数值达到25'd25000000(即0.5秒)时,会触发一个秒标志`sec`的翻转,实现秒的更新。计数器在达到这个阈值后会被清零,以便重新开始计数。这种设计可以用于实现简单的定时或计时功能。 在按键处理部分,采用消抖技术来确保按键输入的稳定性。`key_done`信号用于表示按键稳定无抖动,通过三个dout寄存器(dout1、dout2、dout3)的乒乓操作实现。当检测到`key_done[0]`的下降沿时,会切换`keyen`状态,从而将琴键开关转换为乒乓开关,减少因机械抖动引起的误触发。 数码管动态扫描显示部分,使用了一个计数器`count[17:15]`,其每隔1毫秒改变一次,以控制数码管的扫描显示。根据`count[17:15]`的值,选择不同的数据显示,例如小时的个位、十位等,并通过`disp_dat`进行数据传输。同时,`count[17:15]`也用于选择数码管的显示位,通过设置不同的位选信号`sm_bit_r`,实现8位数码管的逐位点亮,从而达到动态显示的效果。 此外,文档还介绍了如何使用Verilog实现3-8译码器。这个模块`decoder_38`接收3位输入`key_in`(通常由拨码开关提供),并根据输入值驱动8个LED显示不同的状态。每个输入组合对应一个特定的8位输出,使LED灯亮起特定的模式。 最后,1位数码管动态显示的示例`SMG_LED`模块,展示了如何利用分频计数器`count`产生数码管的显示数据。它接收系统时钟`clk_50M`,并根据时钟的上升沿或复位信号更新计数器。通过`count[27:24]`的值,确定当前应显示的数字,并通过`dataout`输出对应的数码管编码。同时,`led_bit`信号用于控制数码管的位选,使得数码管能逐位点亮以实现动态显示。 这些内容涵盖了数字逻辑设计的基础知识,包括计时、消抖处理、译码器和数码管显示,都是嵌入式系统和数字电路设计中的重要概念。对于理解hi3516dv300硬件设计以及进行相关开发有着实际的指导价值。