FPGA数码管动态显示Verilog.docx

FPGA数码管动态显示Verilog.docx

ID:50811686

大小:37.35 KB

页数:7页

时间:2020-03-14

FPGA数码管动态显示Verilog.docx_第1页
FPGA数码管动态显示Verilog.docx_第2页
FPGA数码管动态显示Verilog.docx_第3页
FPGA数码管动态显示Verilog.docx_第4页
FPGA数码管动态显示Verilog.docx_第5页
资源描述:

《FPGA数码管动态显示Verilog.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、FPGA数码管动态显示(BCD)//smg_top.Vmodulesmg_top(clk,rst_n,sm_cs,sm_db,num,//用于仿真dis_data_in//用于仿真);inputclk;//50MHzinputrst_n;//复位信号,低有效input[9:0]dis_data_in;//用于仿真//reg[9:0]dis_data_in;//显示数据wire[11:0]dis_data_out;//显示数据output[2:0]sm_cs;//数码管片选信号,低有效output[3:0]num;//用于仿真output[6:0]sm_db;//7段数码管(不包括小数点)sm

2、g_displaysmg_display(.clk(clk),.rst_n(rst_n),.dis_data(dis_data_out),.sm_cs(sm_cs),.num(num),.sm_db(sm_db));bin_BCDbin_BCD(.clk(clk),.rst_n(rst_n),.bin(dis_data_in),.BCD_out(dis_data_out));endmodule7//bin_BCD.V`timescale1ns/1psmodulebin_BCD(clk,bin,rst_n,BCD_out);input[9:0]bin;inputclk,rst_n;output

3、[11:0]BCD_out;//十进制BCD码reg[3:0]count;reg[11:0]BCD_out;reg[21:0]shift_reg=22'd0;//////////////////////计数部分////////////////////////always@(posedgeclkornegedgerst_n)beginif(!rst_n)count<=4'd0;elseif(count==11)count<=4'd0;elsecount<=count+1'b1;end//////////////////////二进制转换为十进制BCD码/////////////////alwa

4、ys@(posedgeclkornegedgerst_n)beginif(!rst_n)shift_reg=22'd0;elseif(count==0)shift_reg={12'd0,bin};elseif(count<=10)//实现8次移位操作beginif(shift_reg[13:10]>=5)//判断个位是否>5,如果是则+3beginif(shift_reg[17:14]>=5)//判断十位是否>5,如果是则+3beginshift_reg[17:14]=shift_reg[17:14]+2'b11;shift_reg[13:10]=shift_reg[13:10]+2'b11

5、;shift_reg=shift_reg<<1'd1;//对个位和十位操作结束后,整体左移end7elsebeginshift_reg[17:14]=shift_reg[17:14];shift_reg[13:10]=shift_reg[13:10]+2'b11;shift_reg=shift_reg<<1'd1;endendelsebeginif(shift_reg[17:14]>=5)beginshift_reg[17:14]=shift_reg[17:14]+2'b11;shift_reg[13:10]=shift_reg[13:10];shift_reg=shift_reg<<1'd

6、1;endelsebeginshift_reg[17:14]=shift_reg[17:14];shift_reg[13:10]=shift_reg[13:10];shift_reg=shift_reg<<1'd1;endendendend/////////////////输出赋值//////////////////////////always@(posedgeclkornegedgerst_n)beginif(!rst_n)BCD_out=12'd0;elseif(count==11)//此时8次移位全部完成,将对应的值分别赋给个,十,百位BCD_out<={shift_reg[21:18

7、],shift_reg[17:14],shift_reg[13:10]};endendmodule7//smg_display.V`timescale1ns/1psmodulesmg_display(clk,rst_n,dis_data,//需要显示的数字sm_cs,sm_db,num//用于仿真,选择需要显示的数字);inputclk;//50MHzinputrst_n;//复位信号,低有效input[11

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。