【FPGA至简设计原理与应用】书籍连载14第三篇FPGA至简设计项目 第五章数码管动态扫描
FPGA设计原理和应用第5 章数字管的动态扫描1 简介数字管,无论它们是常见的阳极还是常见的阴极类型,都是电子显示器中必不可少的组件。常见的阳极数字管需要 +5 V电源,而阴极的低水平表示明亮。
共同阴极相反,阳极的高水平是明亮的。
例如,ABCDEFG代码输入1 001 1 1 1 显示数字1 从0-9 了解二进制或十六进制代码至关重要。
2 动态和静态驱动 LED数字管驱动方法是静态的和动态的。
静态驱动器占据了更多的I/O资源,而动态驱动器通过定时控制降低了硬件的复杂性,这适用于实际应用。
例如,数字管的动态显示是通过由 /O线控制的动态位门电路来实现的,并且每秒逐个切换。
,显示稳定。
3 .设计目标我们的任务是设计一个FPGA项目,允许根据时间模式动态地在板上动态显示8 个常见的正数字管,并从0-7 开始循环。
设计的关键是要彻底了解每个步骤,并确保每个步骤都有明确的目标取向。
4 实现步骤 top级设计:创建my_seg.v文件,定义4 个密钥信号:clk,rst_n,seg_sel,seg_sel,seg_ment,相应的设备引脚,用于控制数字管的位选择和段选择。
代码编写:使用Verilog语言定义MY_SEG模块,以实现每秒显示数字管的顺序,并在Counters CNT0和CNT1 的帮助下确保周期性显示。
计数器设计:CNT0代表房间号和地板数,CNT1 控制地板计数以确保简洁明了的代码结构。
编程示例:根据CNT1 值,SEG_SEL输出与数字管相对应的显示代码,例如“ 2 ”至“ 9 ”时,它是通过移动和反转操作实现的。
5 练习和简化综合和上板:在Quartus中,设计是通过编译,配置引脚和下载.sof文件在开发板上实现的。
图3 .5 -1 1 至2 7 显示了详细的步骤。
扩展和学习:完成项目后,您可以尝试调整参数,以进一步了解动态扫描的原理。
论坛MDY老师Yi和Mingdeyang科学技术教育提供了更多深入的讨论。
摘要 fpga-simple设计项目中数字管的动态扫描不仅练习编程技能,而且通过仔细的计划步骤加深对硬件原理的理解。
每个阶段都清楚地指出了目标,使初学者逐渐掌握并将其应用于实际项目。
数码管显示三位数循环
Verilog语言可以定义计数器和控制信号,以实现数字管显示的三位数周期。在Verilog语言中,可以将三个计数器定义为CNT1 ,CNT2 和CNT3 分别代表数百,十和单件。
还定义一个变量flag_value来表示显示数字。
最初,flag_value 0的值表明没有数字出现。
用verilog语言设计一个六位数码管动态显示从左到右为123456?
下面是一个简单的VerilogHDL代码,可以实现从左到右到1 2 3 4 5 6 的六位数数字管道的动态观看的效果。Modulesix_Digit_display(CLK,reset,digit_out); //输入信号inputclk; //时钟信号输入; //重置信号//输出信号输出[5 :0] digit_out; //数字管输出信号//内部信号注册[2 6 :0]出纳器; // count // reg [5 :0] Digits [0:5 ] = {6 'B0000000.6 'B000001 .6 'B0000001 01 01 01 0.6 'B001 0.6 'B0000001 1 .6 'B0001 00.6 'B0001 00.6 'B0001 01 1 }; 始终@(posedgeeclkornedgereset)开始(reset == 0)begincounter <= 0; digit_out <= 6 'b0000000; 结束构造<=计数器+1 ; digit_out <= digit [counter [2 5 :2 0]]; 在此代码中,我们定义了一个称为six_digit_display的模块,其中包含三个信号:CLK,RESET和DIGIT_OUT。
在哪里,CLK是手表信号,重置是重置信号,而Digit_out是数字管道输出信号。
在始终阻塞Six_digit_display模块中,我们使用计数器计数来控制数字管显示的数字。
每次手表信号的上升边缘出现时,计数器都会增加1 然后,我们使用计数器的上部6 片(即计数[2 5 :2 0])选择要出现的数字。
具体来说,我们使用称为Digits的矩阵来保存要显示的数字,然后在Digit_out Digit信号中发送相应的数字。
当重置信号的下降边缘出现时,我们将计数器和数字管输出信号重置为0,以确保数字管从左数开始出现。
这样,随着时钟信号的不断变化,数字管将动态显示从左到右1 2 3 4 5 6 的数字序列。