您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页计数、译码显示电路的VHDL设计

计数、译码显示电路的VHDL设计

来源:筏尚旅游网


EDA技术与VHDL

姓 名:

班 级 :

学 号 :

日 期 :

实验四 计数、译码显示电路的VHDL设计

一、实验目的:

学习七段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。

二、实验原理:

通常的中规模专用IC,如74或4000系列的七段数码显示译码器只能作BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。

三、实验内容

2:用VHDL语言描述图4.1所示计数、译码显示电路。

要求:在Quartus II上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。然后进行引脚锁定及硬件测试。建议选GW48系统的实验电路模式6,模式图如附录1附图6所示。用数码管8显示译码输出(PIO46-PIO40),用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接接时钟信号clock0。

图4.1 计数器和译码器连接电路的顶层文件原理图

所编写的VHDL程序如下所示:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY WJ IS

PORT(clock0,ret0,ena0:IN STD_LOGIC;

led : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);

cout0: OUT STD_LOGIC);

END ENTITY WJ;

ARCHITECTURE TWO OF WJ IS

COMPONENT CNT4B

PORT(CLK,RST,EN: IN STD_LOGIC;

OUTY: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT: OUT STD_LOGIC);

END COMPONENT;

COMPONENT DECL7S

PORT(A: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END COMPONENT;

SIGNAL tmp: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

u1: CNT4B

PORT MAP(CLK=>clock0,EN=>ena0,RST=>ret0,OUTY=>tmp,COUT=>cout0);

u2: DECL7S PORT MAP(A=>tmp,LED7S=>led);

END ARCHITECTURE TWO;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT4B IS

PORT(CLK,RST,EN : IN STD_LOGIC;

OUTY: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT: OUT STD_LOGIC);

END ENTITY CNT4B;

ARCHITECTURE BHV OF CNT4B IS

BEGIN

PROCESS(CLK,EN,RST)

VARIABLE CQI: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF RST='1' THEN CQI:=(OTHERS=>'0');

ELSIF CLK'EVENT AND CLK='1' THEN

IF EN='1' THEN

IF CQI<\"1111\" THEN CQI:=CQI+1;

ELSE CQI:=(OTHERS=>'0'); END IF;

END IF;

END IF;

IF CQI=\"1111\" THEN COUT<='1';

ELSE COUT<='0'; END IF;

OUTY <= CQI;

END PROCESS;

END ARCHITECTURE BHV;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

ENTITY DECL7S IS

PORT( A :IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LED7S :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END ENTITY DECL7S;

ARCHITECTURE ONE OF DECL7S IS

BEGIN

PROCESS(A)

BEGIN

CASE A IS

WHEN \"0000\"=> LED7S<=\"0111111\";

WHEN \"0001\"=> LED7S<=\"0000110\";

WHEN \"0010\"=> LED7S<=\"1011011\";

WHEN \"0011\"=> LED7S<=\"1001111\";

WHEN \"0100\"=> LED7S<=\"1100110\";

WHEN \"0101\"=> LED7S<=\"1101101\";

WHEN \"0110\"=> LED7S<=\"1111101\";

WHEN \"0111\"=> LED7S<=\"0000111\";

WHEN \"1000\"=> LED7S<=\"1111111\";

WHEN \"1001\"=> LED7S<=\"1101111\";

WHEN \"1010\"=> LED7S<=\"1110111\";

WHEN \"1011\"=> LED7S<=\"1111100\";

WHEN \"1100\"=> LED7S<=\"0111001\";

WHEN \"1101\"=> LED7S<=\"1011110\";

WHEN \"1110\"=> LED7S<=\"1111001\";

WHEN \"1111\"=> LED7S<=\"1110001\";

WHEN OTHERS => NULL;

END CASE;

END PROCESS;

END ARCHITECTURE ONE;

编译仿真后的波形如下所示:

经过硬件测试后,输入与输出满足题目要求和仿真结果,说明该程序能够实现题目所要求的计数、译码显示电路的功能。

四、心得体会

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务