• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > VHDL设计中信号与变量问题的研究

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

录入:edatop.com     点击:

摘 要:在设计过程中,如果信号和变量的定义不合适的话,设计结果完全不一样,因此在设计过程中需要谨慎使用信号和变量。

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

概述

随着集成电路技术的发展,用传统的方法进行芯片或系统设计已不能满足要求,迫切需要提高设计效率,因此能大大降低设计难度的VHDL设计方法被越来越广泛地采用。用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 X"2"=>y<="1101101";

when X"3"=>y<="1111001";

when X"4"=>y<="0110011";

when X"5"=>y<="1011011";

when X"6"=>y<="1011111";

when X"7"=>y<="1110000";

when X"8"=>y<="1111111";

when X"9"=>y<="1111011";

when X"A"=>y<="1110111";

when X"B"=>y<="0011111";

when X"C"=>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;

来源:维库开发网

上一篇:得到的不仅是IP语音
下一篇:高速数据传输接口DDR2 I/F 的特性及测试

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图