数码管的静态显示(二)

这篇具有很好参考价值的文章主要介绍了数码管的静态显示(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.原理

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

要按照上图的顺序传递位选和段选的数据。

数码管的静态显示(二),FPGA,fpga开发

因为q0是最高位,共阳极数码管结构是dp....a,所以应该先传入低位a,而a在上图中的8段2进制编码中是seg[7],所以段选信号的顺序是seg[0],...seg[7]。

因为输出信号是两个时钟,所以要进行分频,因为不能太高。因为是4分频,所以计数的最大值是3。

(FPGA使用的晶振太高了, 74hc595 在50MHz的频率下没法正常工作, 所以选一个较为低一点的时钟频率作为触发)

为了让时钟信号能正确采集到数据,所以时钟信号的上升沿应该对准数据的稳定状态,也就是数据的中间。

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

2.代码

2.1 hc595_ctrl.v

module hc595_ctrl(
	input wire			sys_clk		,
	input wire			sys_rst_n		,
	input wire [5:0]	sel			,
	input wire [7:0]	seg			,
	
	output reg 			ds			,
	output reg 			shcp		,
	output reg 			stcp		,
	output wire 		oe		
);

wire [13:0] data;
reg [1:0] cnt;
reg [3:0] cnt_bit;

assign oe=1'b0;
assign data={seg[0],seg[1],seg[2],seg[3],seg[4],seg[5],seg[6],seg[7],sel[5],sel[4],sel[3],sel[2],sel[1],sel[0]};
	
	
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		cnt<=2'd0;
	else if(cnt==2'd3)
		cnt<=2'd0;
	else
		cnt<=cnt+1'b1;
	
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		cnt_bit<=4'd0;
	else if((cnt==2'd3)&&(cnt_bit==4'd13))
		cnt_bit<=4'd0;
	else if(cnt==2'd3)
		cnt_bit<=cnt_bit+1'b1;
	else
		cnt_bit<=cnt_bit;
		
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		ds<=1'd0;
	else if(cnt==2'd0)
		ds<=data[cnt_bit];
	else
		ds<=ds;
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		shcp<=1'b0;
	else if(cnt==2'd2)
		shcp<=1'b1;
	else if(cnt==2'd0)
		shcp<=1'b0;
	else
		shcp<=shcp;
		
always@(posedge sys_clk or negedge sys_rst_n)
	if(sys_rst_n==1'b0)
		stcp<=1'b0;
	else if((cnt==2'b0)&&(cnt_bit<=4'b0))
		stcp<=1'b1;
	else if((cnt==2'd2)&&(cnt_bit==4'b0))
		stcp<=1'b0;
	else
		stcp<=stcp;
		
endmodule
		
		

2.2 seg_595_static.v

module seg_595_static
(
	input wire 		sys_clk			,
	input wire 		sys_rst_n		,
	
	output reg 		ds				,
	output reg 		shcp			,
	output reg		stcp			,
	output reg 		oe		
);

wire [5:0]sel;
wire [7:0]seg;

seg_static #(
	.CNT_MAX  (25'd24)
)
seg_static_inst(
	.sys_clk	(sys_clk)		,
	.sys_rst_n	(sys_rst_n)	,
				
	.sel		(sel)		,
	.seg		(seg)		
);


hc595_ctrl hc595_ctrl_inst(
	.sys_clk	(sys_clk	)	,
	.sys_rst_n	(sys_rst_n	),
	.sel		(sel		)	,
	.seg		(seg		)	,
	
	.ds			(ds			),
	.shcp		(shcp		),
	.stcp		(stcp		),
	.oe		    (oe		   )
);

endmodule

2.3 tb_seg_595_ctrl.v

`timescale 1ns/1ns
module tb_seg_595_ctrl();

reg sys_clk;
reg sys_rst_n;

wire ds	  ;
wire shcp  ;
wire stcp  ;
wire oe	  ;
initial
	begin
		sys_clk=1'b1;
		sys_rst_n<=1'b0;
		#20
		sys_rst_n<=1'b1;
	end
	
always#10 sys_clk=~sys_clk;

seg_595_static seg_595_static_inst
(
	.sys_clk	(sys_clk	)		,
	.sys_rst_n	(sys_rst_n)	,
				 
	.ds			(ds			)	,
	.shcp		(shcp		)	,
	.stcp		(stcp		)	,
	.oe		    (oe		  )
);

endmodule

2.4 tb_seg_595_static.v

`timescale 1ns/1ns
module tb_seg_595_static();

reg sys_clk;
reg sys_rst_n;

initial
	begin
		sys_clk=1'b1;
		sys_rst_n<=1'b0;
		#20
		sys_rst_n<=1'b1;
	end
	
always#10 sys_clk=~sys_clk;

seg_static #(
	.CNT_MAX  (25'd24)
)
seg_static_inst(
	.sys_clk	(sys_clk)		,
	.sys_rst_n	(sys_rst_n)	,
				
	.sel		(sel)		,
	.seg		(seg)		
);



endmodule

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发

数码管的静态显示(二),FPGA,fpga开发文章来源地址https://www.toymoban.com/news/detail-841034.html

到了这里,关于数码管的静态显示(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA极易入门教程----数码管篇(1)静态显示

            数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显 示)。当然也还有一些其他类型的数码管如“N”形管、“米”字管以及工业科研领域用 的

    2024年02月05日
    浏览(43)
  • FPGA学习日志——74hc595驱动的数码管静态显示seg_595_static

    数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数一般分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管(多一个小数点显示)。 八段数码管是一个八字型数码管,分为八段:a、b、c、d、e、f、g、dp,其中dp为小数点,每一段即

    2024年02月08日
    浏览(115)
  • 静态数码管——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 六位数码管全选,每间隔0.5s轮流显示0~F。 静态与动态数码管: 静态数码管 : 在静态显示中,只考虑段选信号。在不同的时刻,各个位选信号保持不变,并根据真值表,选择要显示的数字或者字母。 动态数码管 :

    2024年02月16日
    浏览(43)
  • FPGA——静态数码管

    quartus 18.1 modelsim vscode Cyclone IV开发板 我们使用的数码管是8段数码管,每段是由led组成。通过控制每段led的亮灭,来控制数码管显示不同的数字和字母。 数码管分为共阴极和共阳极,共阳极数码管如图所示,a—dp为输入端,全部在二极管的负极,二极管的正极极共同接+5v(高电

    2024年02月16日
    浏览(37)
  • FPGA_数码管显示

    一位数码管: 数码管等效电路(共阴极 和 共阳极) 数码管显示的值: 假设我们需要b,c亮,我们只需要给b,c接高电平,其他接低电平就可。 seg[7:0]  = 8\\\'b0000_0110 对于数码管显示的值,seg值如下图: 多位数码管-----如下图(以3位为例) 假设现在需要LED1亮,那么就让sel0为1,

    2024年01月23日
    浏览(47)
  • FPGA学习—数码管显示

    数码管动态显示采用了人眼暂存的原理,即时分复用,在数码管实现动态显示。 整个实验设计流程框架如下图所示: 开发板采用共阳极数码管,即低电平点亮。 本实验准备设计一个定时器,6为数码管显示24小时制的时间,所以编写一个计数模块。 改变变量COUNT的数值,可实

    2024年02月09日
    浏览(42)
  • Intel FPGA:数码管显示

    个人说明: 限于时间紧迫以及作者水平有限,本文错误、疏漏之处恐不在少数,恳请读者批评指正。意见请留言或者发送邮件至:“Email:noahpanzzz@gmail.com” 。 本博客的工程文件均存放在:GitHub:https://github.com/panziping。 本博客的地址:CSDN:https://blog.csdn.net/ZipingPan 。 参考: 芯

    2024年04月15日
    浏览(37)
  • [FPGA 学习记录] 数码管动态显示

    数码管动态显示 在上一小节当中,我们对数码管的静态显示做了一个详细的讲解;但是如果单单只掌握数码管的静态显示这种显示方式是远远不够的,因为数码管的静态显示当中,被选中的数码位它们显示的内容都是相同的,这种显示方式在我们的实际应用当中显然是不合适

    2024年02月04日
    浏览(50)
  • FPGA基础设计之数码管显示

    数码管是一种半导体发光器件,其基本单元是发光二极管。一般分为七段数码管和八段数码管,多的一段是小数点。也有其他如N型、米型数码管以及16段、24段管等。本次设计的是八段数码管 公阴极数码管高电平亮,公阳极数码管低电平亮。AC620上搭载的是公阳极数码管。 数

    2023年04月26日
    浏览(46)
  • FPGA项目(5)--FPGA控制数码管动态显示的原理

            数码管是现在电子产品上常用的显示器件,它有驱动简单、显示清晰、价格低廉等优势。数码管的实物图:          数码管的内部结构图如下所示:          从图中可以看出,它由八个段组成,即A B C D E F G DP(小数点),只要将这八个段按规律组合点亮,就

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包