FPGA数码管动态显示Verilog_第1页
FPGA数码管动态显示Verilog_第2页
FPGA数码管动态显示Verilog_第3页
FPGA数码管动态显示Verilog_第4页
FPGA数码管动态显示Verilog_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FPGA数字码管动态显示(BCD )/smg_top.V模块SMG _ top (PRrst_nsm_cssm_dbnum,/模拟用dis_data_in /用于模拟);输入时钟; /50MHz输入rst _ n; /复位信号、低激活输入 9:0 dis _ data _ in; /模拟用/reg 9:0 dis_data_in; /显示数据wire 11:0 dis_data_out; /显示数据输出 2:0 sm _ cs; /数字码芯片选择信号,低有效输出 3:0 编号; /用于模拟输出 6:0 sm _ db; /7段数字码管(小数点除外)smg_display smg_display

2、 (. clk(clk ). rst_n(rst_n ). dis_data(dis_data_out ). sm_cs(sm_cs ). num(num ). sm_db(sm_db );bin_BCD bin_BCD (. clk(clk ). rst_n(rst_n ). bin(dis_data_in ). BCD_out(dis_data_out );结束模块。/bin_BCD.Vtimescale 1ns/1psmodule bin_BCD(clk )槟榔rst_nBCD_out);输入 9:0 宾;输入clk,rst_n;output 11:0BCD_out; /十进制BCD代码

3、reg 3:0 计数;reg 11:0BCD_out;reg 21:0shift_reg=22d0;/always (posedgeclkornegedgerst _ n )beginPK (! rst_n )计数=4d 0;else if (计数=11 )计数=4d 0;else计数=计数1 B1;结束从二进制转换为十进制BCD代码/always (posedgeclkornegedgerst _ n )beginPK (! rst_n )shift_reg=22d0;else if (计数=0)shift_reg=12d0,bin;实现else if (count=10) /次移位操作be

4、gin判定if(shift_reg13:10=5) /比特是否为5,如果是,则为3begin判断if(shift_reg17:14=5) /十位是否为5,如果是,则为3beginshift _ reg 173365014 =shift _ reg 1733365014 2b 11;shift _ reg 133365010 =shift _ reg 133365010 2b 11;shift_reg=shift_reg1d1; /个位和十位的操作结束后,整体向左移动结束elsebeginshift _ reg 17336014 =shift _ reg 17:14 ;shift _ reg 1

5、33365010 =shift _ reg 133365010 2b 11;shift_reg=shift_reg1d1;结束结束elsebeginif(shift_reg17:14=5)beginshift _ reg 173365014 =shift _ reg 1733365014 2b 11;shift _ reg 133365010 =shift _ reg 133365010 ;shift_reg=shift_reg1d1;结束elsebeginshift _ reg 17336014 =shift _ reg 17:14 ;shift _ reg 133365010 =shift

6、 _ reg 133365010 ;shift_reg=shift_reg1d1;结束结束结束结束/always (posedgeclkornegedgerst _ n )beginPK (! rst_n )BCD_out=12d0;else if (count=11) /此时8个移位全部完成,将对应的值分别分配给个、十、百个比特BCD_out=shift_reg21:18、shift_reg17:14、shift_reg13:10;结束结束模块。/smg_display.Vtimescale 1ns/1psmodule smg_display (PRrst_ndis_data,/要显示的数字

7、sm_cssm_dbnum/用于模拟,选择要显示的数字);输入时钟; /50MHz输入rst _ n; /复位信号、低激活input11:0 dis_data; /显示数据输出 3:0 编号; /模拟用输出 2:0 sm _ cs; /数字码芯片选择信号,低有效输出 6:0 sm _ db; /7段数字码管(小数点除外)reg 2:0sm_cs; /数字管选择信号、低有效(共阴)reg15:0 cnt; /1毫秒计数=65536*20nsreg1:0 cnt_dis; /每毫秒更新一次显示always (posedgeclkornegedgerst _ n )PK (! rst_n )begi

8、ncnt=16d0;cnt_dis=2d1;结束elsebegincnt=cnt 1b1;PS (Ant=16 h Pfffff )cnt_dis=cnt_dis 1d1;结束/-参数eg0=7h3fseg1=7h06seg2=7h5bseg3=7h4fseg4=7h66seg5=7h6dseg6=7h7dseg7=7h07seg8=7h7fseg9=7h6fsega=7h77segb=7h7csegc=7h39segd=7h5esege=7h79segf=7h71;reg6:0 sm_dbr; /7段数字码管(小数点除外)reg 3:0 编号; /显示数据always (posedge cl

9、k )case (cnt_dis )2d1:beginnum=dis_data11:8;sm_cs=3b011;结束2d2:beginnum=dis_data7:4;sm_cs=3b101;结束2d3:beginnum=dis_data3:0;sm_cs=3b110;结束default:sm_cs=3b111;endcasealways (posedge clk )case (num)/NUM的值显示在两个数字管上4h0: sm_dbr=seg0;4h1: sm_dbr=seg1;4h2: sm_dbr=seg2;4h3: sm_dbr=seg3;4h4: sm_dbr=seg4;4h5: s

10、m_dbr=seg5;4h6: sm_dbr=seg6;4h7: sm_dbr=seg7;4h8: sm_dbr=seg8;4h9: sm_dbr=seg9;4ha: sm_dbr=sega;4hb: sm_dbr=segb;4hc: sm_dbr=segc;4hd: sm_dbr=segd;4he: sm_dbr=sege;4hf: sm_dbr=segf;默认:endcaseassign sm_db=sm_dbr;结束模块。/smg_top.vt时间比例1 ns/1 PSmodule smg_top_vlg_tst ();reg clk;reg rst_n;reg 9:0 dis_data_in; /模拟用wire 2:0 sm_cs;wire 3:0 编号; /用于模拟wire 6:0 sm_db;smg_top i1(. clk(clk ). rst_n(rst_n ). n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论