新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > VHDL设计中信号与变量问题的研究

VHDL设计中信号与变量问题的研究

作者:时间:2010-04-17来源:网络收藏

  在程序中,可以充分利用的系统默认值,来灵活实现目标。本文从应用的角度举例说明了的区别,以及正确的使用方法,并介绍了为赋予初始值的技巧。

本文引用地址:http://www.eepw.com.cn/article/151920.htm

  概述

  随着集成电路技术的发展,用传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率,因此能大大降低设计难度的设计方法被越来越广泛地采用。用VHDL语言设计系统的主要方法是:设计者根据VHDL的语法规则,对系统目标的逻辑行为进行描述,然后通过综合工具进行电路结构的综合、编译、优化,通过仿真工具进行逻辑功能仿真和系统时延的仿真,最后把设计的程序下载到芯片中,成功地实现系统功能。

  在VHDL设计中,最常用的数据对象主要有三种:信号(signal)、变量(variable)和常数(constant)。信号是电子电路内部硬件连接的抽象。它除了没有数据流动方向说明以外,其他性质几乎和“端口”一样;信号是一个全局量,它可以用来进行进程之间的通信。变量只能在进程语句、函数语句和过程语句结构中使用,是一个局部量。

  在VHDL语言中,对信号赋值是按仿真时间进行的,到了规定的仿真时间才进行赋值,而变量的赋值是立即发生的。下面的例子是从赋初值的角度说明信号与变量的这种区别的。

  例如用VHDL语言实现初值为A的十六进制的16个数的循环显示。

  对于如此的设计要求,如果用变量实现,则VHDL程序如下。

  library ieee;

  use ieee.std_logic_1164.all;

  use ieee.std_logic_unsigned.all;

  entity sevenauto is

  port(clk:in std_logic;

  y:out std_logic_vector(6 downto 0));

  end sevenauto;

  architecture behave of sevenauto is

  begin

  process(clk)

  variable count:std_logic_vector(3 downto 0);

  variable init:std_logic;

  begin

  if (clk''event) and (clk=''1'') then

  if (init = ''0'') then

  count:= 1001;

  init:=''1'

  end if;

  count:=count+1;

  case count is

  when 0000=>y=1111110;

  when 0001=>y=0110000;

  when X2=>y=1101101;

  when X3=>y=1111001;

  when X4=>y=0110011;

  when X5=>y=1011011;

  when X6=>y=1011111;

  when X7=>y=1110000;

  when X8=>y=1111111;

  when X9=>y=1111011;

  when XA=>y=1110111;

  when XB=>y=0011111;

  when XC=>y=1001110;

  when 1101=>y=0111101;

  when 1110=>y=1001111;

  when 1111=>y=1000111;

  when thers=>y=XXXXXXX;

  end case;

  end if;

  end process;

  end behave;


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭