名称:卡式电话计费器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
卡式电话计费器设计
该计费器在卡插入后,能读出卡中的余额并显示20;在通话中,根据通话种类进行扣费,卡内余额每分钟更新一次;对通话时间计时并显示出来。话务种类分为三种:市话、长途和特话。其中市话按每分钟3角钱计算,长话按每分钟6角钱计算,特话免费,当卡中余额少于当前话务种类对应的一分钟费用,产生告警信号,警告灯亮,当告警时间达到15s时切断当前通话。设定卡内余额最大为20角。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 功能设计
卡式电话计费器设计功能
该计费器在卡插入后,能读出卡中的余额并显示20;在通话中,根据通话种类进行扣费,卡内余额每分钟更新一次;
对通话时间计时并显示出来。
话务种类分为三种:市话、长途和特话。
其中市话按每分钟3角钱计算,
长话按每分钟6角钱计算,特话免费,当卡中余额少于当前话务种类对应的一分钟费用,产生告警信号,警告灯亮,当告警时间达到15s时切断当前通话。
设定卡内余额最大为20角。
2. 工程文件
3. 程序文件
4. 程序编译
5. RTL图
6. Testbench
7. 仿真图
部分代码展示:
//顶层 module telephone( input clk_1KHz, input rst, input card_key,//插卡按键,1表示插入 input [1:0]oncall_key,//拨号--00表示不拨号,01表示市话,10表示长途,11表示特话 output card_led,//插卡指示灯 output [2:0]call_led,//通话指示灯 output reminder_led,//告警信号,警告灯亮 // 利用数码管显示卡内余额和通话时间 output [7:0] SEG1,//段选显示 output [3:0] SEL1, //位选显示 output [7:0] SEG2,//段选显示 output [3:0] SEL2 //位选显示 ); wire [7:0] money_left;//卡内余额 wire [7:0] minute;//通话时间 wire [7:0] second;//通话时间 wire [7:0] cost_money; telephone_ctrl i_telephone_ctrl( . clk_1KHz(clk_1KHz), . rst(rst), . card_key(card_key),//插卡按键,1表示插入 . oncall_key(oncall_key),//拨号--00表示不拨号,01表示市话,10表示长途,11表示特话 . card_led(card_led),//插卡指示灯 . call_led(call_led),//通话指示灯 . reminder_led(reminder_led),//告警信号,警告灯亮 // 利用数码管显示卡内余额和通话时间 . cost_money(cost_money),//花费金额 . money_left(money_left),//卡内余额 . minute(minute),//通话时间 . second(second)//通话时间 );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=884
499