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

基于FPGA的任意进制8421BCD计数器VHDL代码Quartus仿真

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

2-2405151T03UE.doc

共1个文件

名称:基于FPGA的任意进制8421BCD计数器VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

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

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

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

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

4、报告要求:

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

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

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

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

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

计数模块仿真图

译码显示模块仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?count_N?IS
???PORT?(
??????clk????????:?IN?STD_LOGIC;--时钟
??????reset??????:?IN?STD_LOGIC;--异步复位
??????set_data???:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--进制设置
??????load???????:?IN?STD_LOGIC;--同步置数
??????load_data??:?IN?STD_LOGIC_VECTOR(15?DOWNTO?0);--置数值
??????count_BCD??:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--计数输出
???);
END?count_N;
ARCHITECTURE?behave?OF?count_N?IS
???
???SIGNAL?data_cnt?:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
BEGIN
???PROCESS?(clk,?reset)
???BEGIN
??????IF?(reset?=?'1')?THEN
?????????data_cnt?<=?"0000000000000000";--异步复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(load?=?'1')?THEN--同步置数
????????????data_cnt?<=?load_data;--置数值
?????????ELSIF?(data_cnt?>=?set_data)?THEN--判断是否进制最大值
????????????data_cnt?<=?"0000000000000000";
?????????ELSIF?(data_cnt(15?DOWNTO?12)?=?"1001"?AND?data_cnt(11?DOWNTO?8)?=?"1001"?AND?data_cnt(7?DOWNTO?4)?=?"1001"?AND?data_cnt(3?DOWNTO?0)?=?"1001")?THEN--计数到9999
????????????data_cnt?<=?"0000000000000000";
?????????ELSIF?(data_cnt(11?DOWNTO?8)?=?"1001"?AND?data_cnt(7?DOWNTO?4)?=?"1001"?AND?data_cnt(3?DOWNTO?0)?=?"1001")?THEN--计数到x999
????????????data_cnt(15?DOWNTO?12)?<=?data_cnt(15?DOWNTO?12)?+?"0001";--千位加1
????????????data_cnt(11?DOWNTO?0)?<=?"000000000000";
?????????ELSIF?(data_cnt(7?DOWNTO?4)?=?"1001"?AND?data_cnt(3?DOWNTO?0)?=?"1001")?THEN--计数到xx99
????????????data_cnt(15?DOWNTO?12)?<=?data_cnt(15?DOWNTO?12);
????????????data_cnt(11?DOWNTO?8)?<=?data_cnt(11?DOWNTO?8)?+?"0001";--百位加1
????????????data_cnt(7?DOWNTO?0)?<=?"00000000";
?????????ELSIF?(data_cnt(3?DOWNTO?0)?=?"1001")?THEN--计数到xxx9
????????????data_cnt(15?DOWNTO?12)?<=?data_cnt(15?DOWNTO?12);
????????????data_cnt(11?DOWNTO?8)?<=?data_cnt(11?DOWNTO?8);
????????????data_cnt(7?DOWNTO?4)?<=?data_cnt(7?DOWNTO?4)?+?"0001";--十位加1
????????????data_cnt(3?DOWNTO?0)?<=?"0000";
?????????ELSE
????????????data_cnt(15?DOWNTO?12)?<=?data_cnt(15?DOWNTO?12);
????????????data_cnt(11?DOWNTO?8)?<=?data_cnt(11?DOWNTO?8);
????????????data_cnt(7?DOWNTO?4)?<=?data_cnt(7?DOWNTO?4);
????????????data_cnt(3?DOWNTO?0)?<=?data_cnt(3?DOWNTO?0)?+?"0001";--个位加1
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???count_BCD?<=?data_cnt;--输出bcd码
???
END?behave;

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

  • 2-2405151T03UE.doc
    下载

相关推荐