您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>数码管>

vhdl语言编写 9秒倒计时器

2018年01月29日 13:50 电子发烧友整理 作者: 用户评论(0

VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。

本文为大家分享用vhdl语言编写的9秒倒计时器程序。

VHDL语言优势

(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个开发组共同并行工作才能实现。

(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

完整程序

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

--------------------------------------------------------------------------------------------

ENTITY CNT9 IS

PORT

( CLK,en: IN STD_LOGIC;

PLD,ENB : IN STD_LOGIC; -------PLD表示复位信号

WARN: OUT STD_LOGIC;

S0 : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));------------译码输出,S0为个位

END CNT9;

--------------------------------------------------------------------------------------------

ARCHITECTURE A OF CNT9 IS

SIGNAL SS : STD_LOGIC_VECTOR (3 DOWNTO 0) ; -------------SS表示个位

BEGIN

PRO1: PROCESS (CLK,en,ENB)

VARIABLE TMPA: STD_LOGIC_VECTOR (3 DOWNTO 0);

VARIABLE TMPWARN: STD_LOGIC;

BEGIN

IF en=‘1’ THEN TMPA:=“1001”;TMPWARN:=‘0’;

ELSIF CLK‘EVENT AND CLK=’1‘ THEN

TMPA:=TMPA-1;

if tmpa=’0‘ then TMPWARN:=’1‘;

END IF;

END IF;

SS<=TMPA;WARN<=TMPWARN;

PROCESS(SS)

BEGIN

CASE SS IS --------------------------个位显示部分

WHEN “0000” => S0 <=“0111111”;--显示0

WHEN “0001” => S0 <=“0000110”;--显示1

WHEN “0010” => S0 <=“1011011”;--显示2

WHEN “0011” => S0 <=“1001111”;--显示3

WHEN “0100” => S0<=“1100110”;--显示4

WHEN “0101” => S0 <=“1101101”;--显示5

WHEN “0110” => S0 <=“1111101”;--显示6

WHEN “0111” => S0 <=“0000111”;--显示7

WHEN “1000” => S0 <=“1111111”;--显示8

WHEN “1001” => S0 <=“1101111”;--显示9

WHEN OTHERS =>S0<=“0000000”;

END CASE ;

END PROCESS;

END A;

非常好我支持^.^

(4) 16%

不好我反对

(21) 84%

( 发表人:李建兵 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!