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=&
FPGA 动态数码管 二进制转8421BCD码
最新推荐文章于 2023-11-28 13:58:01 发布
该博客详细介绍了如何设计一个数字显示模块,包括1毫秒计数器、数码管位选、二进制转BCD码以及数码管段选等关键部分。通过状态机控制数码管的刷新,并根据输入的金额和标志位显示投币或找零金额。代码使用了Verilog进行硬件描述,实现了数字的动态显示功能。
摘要由CSDN通过智能技术生成