• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的BCD计数译码显示电路设计VHDL代码Quartus仿真

07/26 13:10
666
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240516154023292.doc

共1个文件

名称:基于FPGA的BCD计数译码显示电路设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

利用VHDL语言,实现0~9901任意进制8421BCD计数译码显示电路,并将计数器输出的8421BCD进行共阳数码管显示,要求:

1、计数器具有同步置数功能、异步清零功能,用VHDL实现计数逻辑,并阐述设计原理,给出关键 block diagram设计框图。

2、8421BCD码7段译码部分可以参见74LS48功能,用ⅥHDL实现译码逻辑,并阐述设计原理,给出关键 blockdiagram设计框图。

3、译码输出后驱动的数码管为共阳极数码管,阐述电路原理,给出相应编码方式。

4、报告要求:

(1)按要求的格式书写,所有内容一律打印、封面要求统一;

(2)报告内容包括设计过程、软件仿真的结果及分析;

(3)报告中要有整体电路原理图、各模块原理图;

(4)软件仿真包括各个模块的仿真和整体电路的仿真。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

BCD计数器模块仿真图

数码管译码模块仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--BCD计数器
ENTITY?cnt?IS
???PORT?(
??????CLK????????:?IN?STD_LOGIC;--时钟
??????CLR??????:?IN?STD_LOGIC;--异步清零
??????LD???????:?IN?STD_LOGIC;--同步置数
??????LD_BCD??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--置数值BCD码
??????tho_BCD??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--千位BCD输出
??hun_BCD??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--百位BCD输出
??ten_BCD??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--十位BCD输出
??one_BCD??:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0)?--个位BCD输出
???);
END?cnt;
ARCHITECTURE?behave?OF?cnt?IS
????SIGNAL?cnt_number???:?STD_LOGIC_VECTOR(15?DOWNTO?0);--常数,控制进制是多少
????SIGNAL??tho_BCD_buf??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--千位BCD输出
SIGNAL??hun_BCD_buf??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--百位BCD输出
SIGNAL??ten_BCD_buf??:?STD_LOGIC_VECTOR(3?DOWNTO?0);--十位BCD输出
SIGNAL??one_BCD_buf??:?STD_LOGIC_VECTOR(3?DOWNTO?0);?--个位BCD输出
BEGIN
cnt_number<=X"1234";--设置进制为1234
???PROCESS?(CLK,?CLR)
???BEGIN
??????IF?(CLR?=?'1')?THEN--异步清零
????????????tho_BCD_buf?<=?"0000";
????????????hun_BCD_buf?<=?"0000";
????????????ten_BCD_buf?<=?"0000";
????????????one_BCD_buf?<=?"0000";
??????ELSIF?(CLK'EVENT?AND?CLK?=?'1')?THEN
?????????IF?(LD?=?'1')?THEN--同步置数
????????????tho_BCD_buf?<=?LD_BCD(15?downto?12);
????????????hun_BCD_buf?<=?LD_BCD(11?downto?8);
????????????ten_BCD_buf?<=?LD_BCD(7?downto?4);
????????????one_BCD_buf?<=?LD_BCD(3?downto?0);
?????????ELSIF?((tho_BCD_buf?&?hun_BCD_buf?&?ten_BCD_buf?&?one_BCD_buf)?>=?cnt_number)?THEN--判断是否计数到最大值
????????????tho_BCD_buf?<=?"0000";
????????????hun_BCD_buf?<=?"0000";
????????????ten_BCD_buf?<=?"0000";
????????????one_BCD_buf?<=?"0000";
?????????ELSIF?(tho_BCD_buf?=?"1001"?AND?hun_BCD_buf?=?"1001"?AND?ten_BCD_buf?=?"0000"?AND?one_BCD_buf?=?"0001")?THEN--计数到9901
????????????tho_BCD_buf?<=?"0000";
????????????hun_BCD_buf?<=?"0000";
????????????ten_BCD_buf?<=?"0000";
????????????one_BCD_buf?<=?"0000";
?????????ELSIF?(hun_BCD_buf?=?"1001"?AND?ten_BCD_buf?=?"1001"?AND?one_BCD_buf?=?"1001")?THEN--计数到999
????????????tho_BCD_buf?<=?tho_BCD_buf?+?"0001";--千位加1
????????????hun_BCD_buf?<=?"0000";
????????????ten_BCD_buf?<=?"0000";
????????????one_BCD_buf?<=?"0000";
?????????ELSIF?(ten_BCD_buf?=?"1001"?AND?one_BCD_buf?=?"1001")?THEN--计数到99
????????????tho_BCD_buf?<=?tho_BCD_buf;
????????????hun_BCD_buf?<=?hun_BCD_buf?+?"0001";--百位加1
????????????ten_BCD_buf?<=?"0000";
????????????one_BCD_buf?<=?"0000";
?????????ELSIF?(one_BCD_buf?=?"1001")?THEN--计数到9
????????????tho_BCD_buf?<=?tho_BCD_buf;
????????????hun_BCD_buf?<=?hun_BCD_buf;
????????????ten_BCD_buf?<=?ten_BCD_buf?+?"0001";--十位加1
????????????one_BCD_buf?<=?"0000";
?????????ELSE
????????????tho_BCD_buf?<=?tho_BCD_buf;
????????????hun_BCD_buf?<=?hun_BCD_buf;
????????????ten_BCD_buf?<=?ten_BCD_buf;
????????????one_BCD_buf?<=?one_BCD_buf?+?"0001";--个位加1
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
??????tho_BCD<=tho_BCD_buf;--千位BCD输出
??hun_BCD<=hun_BCD_buf;--百位BCD输出
??ten_BCD<=ten_BCD_buf;--十位BCD输出
??one_BCD<=one_BCD_buf;--个位BCD输出
???
END?behave;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=756

  • 2-240516154023292.doc
    下载

相关推荐