FPGA 动态数码管 二进制转8421BCD码

该博客详细介绍了如何设计一个数字显示模块,包括1毫秒计数器、数码管位选、二进制转BCD码以及数码管段选等关键部分。通过状态机控制数码管的刷新,并根据输入的金额和标志位显示投币或找零金额。代码使用了Verilog进行硬件描述,实现了数字的动态显示功能。
摘要由CSDN通过智能技术生成
module SHUMAGUAN(
      input rst,
	  input clk,
	  input [6:0] price_all,
	  input [6:0] charge_money,
	  input flag,//0,投的;1,找的;
	  output reg [7:0] num,//段选
	  output reg [3:0] position//位选
	  
    );
	 reg [15:0]ms_count;//1毫秒计数器
	 reg [1:0] po_state;//位选状态
	 reg [3:0] num_1,num_2,num_3,num_4;//num_2,num_3,num_4为2进制对应成BCD码的3个数(num_1让它一直为0)
	 reg [3:0] num_;//要显示的数字状态?
	 reg [18:0]temp;//投的钱的二进制到bcd所需的位宽
	 reg [18:0]temp1;//找的钱的二进制到bcd所需的位宽

    always@(posedge clk or negedge rst)//1毫秒计数器
	begin
		if(!rst)
		ms_count<=0;
		else if(ms_count==49_999)
		ms_count<=0;
		else
		ms_count<=ms_count+1;
	end
	
	always@(posedge clk or negedge rst)//数码管1ms刷新
	begin
		if(!rst)
		po_state<=0;
		else if(ms_count==49_999)
			begin
				if(po_state==3)
					po_state<=0;
				else
					po_state<=po_state+1;
			end
	end
	
	always@(po_state)//数码管位选
	begin
		if(po_state=&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值