新闻  |   论坛  |   博客  |   在线研讨会
VHDL设计
白云碎了 | 2008-12-01 12:36:08    阅读:2609   发布文章

在实行VHSIC计划(美国国防部于70年代末至80年代初实行的研制高速、大规模集成电路的开发计划)中,发现传统的设计方法无法满足开发这类非常复杂集成电路的要求。

       81   提出标准

       87   成为IEEE1076标准

       93   更新为IEEE1164标准

       96    IEEE1076.3成为综合标准

以一个半加器为例

a                c        

b                s

                                  

半加器真值表

a   b

c   s

0   0

0   1

1   0

1   1

0   0

0   1

0   1

1   0

VHDL基本结构

75个关键字,(大写)

VHDL中,所有部件都用实体(Design Entity)来描述。

实体可以小至一个门,大至一个CPU芯片。

实体由两部分构成:实体说明和结构体

实体说明用来定义实体与外部连接关系以及需传给实体的参数。一般格式为

ENTITY 实体名 IS

 [GENERIC(类属表);]

 [PORT(端口表);]

END[ENTITY] [实体名];

例:ENTITY add IS

      GENERIC(tpd:Time:=2ns);

      PORT(a,b:IN Bit;s,c:OUT Bit);

    END add

结构体

通过若干并行语句来描述设计实体的逻辑功能或内部结构,从而建立设计实体输入与输出之间的关系。

ARCHITECTURE 结构体名 OF 实体名 IS

[说明语句;]

[BEGIN 并行语句;]

END [ARCHITECTURE] [结构体];

(1) 算法描述

(2) 数据流描述

(3) 结构描述

ARCHITECTURE ha OF add IS

BEGIN

cl:PROCESS(a,b)

   BEGIN

        IF a=‘1’AND b=‘1’ THEN

              c<=‘1’;

        ELSE

              c<=‘0’;

        END IF

   END PROCESS cl;

 c2:PROCESS(a,b)

   BEGIN

        IF a=‘0’AND b=‘0’ THEN

              s<=‘0’;

        ELSEIF a=‘1’AND b=‘1’THEN

              s<=‘0’;

        ELSE 

              s<=‘1’;

        END IF

   END PROCESS c2;

 END ha;

s=a XOR b  c=ab  基于此布尔方程描述为:

ARCHITECTURE dataflow OF add IS

  BEGIN
      s<=a XOR b AFTER tpd;

      c<= a AND b AFTER tpd;

  END dataflow;

强调并行性

半加器可表示为如下逻辑电路

a         c

            s

 b

ARCHITECTURE struct_ha OF add IS

  COMPONENT and_gate PORT (a1, a2: in bit; a3: OUT Bit); 元件说明

  END COMPONENT;

  COMPONENT xor_gate PORT (x1, x2: IN Bit; x3: OUT Bit); 

  END COMPONENT;

BEGIN

g1: and_gate PORT MAP (a, b, c);     端口映射

g2: xor_gate PORT MAP (a, b, s);

END struct_ha;

基本知识:

四种对象:SIGNAL(信号),VARIABLE(变量),CONSTANT(常量) FILE(文件)

每一个对象只能有一种类型:

整形(Integer),实型(Real),枚举型(如Bit,Boolean等),物理型(Time等)

在此基础上可以通过TYPE语句自定义复合类型(数组、记录),子类型以及枚举类型。

例:TYPE  bit3  IS (‘0’,’1’,’z’);   枚举类型

TYPE word IS ARRAY (15 DOWNTO 0) OF Bit;    一维数组

TYPE matrix IS ARRAY(1 TO8,1TO 8)  OF Real;    二维数组

TYPE voltage IS RANGE 0.0 TO 5.0;              实数子类型

运算符

逻辑运算符   移位运算符    算术运算符  

关系运算符   其他运算符

顺序语句

变量与信号赋值语句

l IF语句

l CASE语句

   CASE 选择表达式 IS

      WHEN选择值1=>顺序语句1;

WHEN选择值2=>顺序语句2;

……………………………………

WHEN OTHERS=>顺序语句n;

   END CASE;

 例:CASE cnt IS

         WHEN 7=>cnt<=0;

         WHEN OTHERS=>cnt<=cnt+1;

     END CASE;

l LOOP语句

[LOOP标号:][重复模式] LOOP

        顺序语句;

        END LOOP[LOOP 标号];

loop1: WHILE start/=’1’ LOOP

      done<=’1’;

      END LOOP loop1

loop3: FOR cnt IN 1 TO 3 LOOP

     NEXT WHEN cnt=2;

     Var:=var+cnt;

     END LOOP  loop3;

   

并行语句

并行信号赋值语句

进程语句

断言语句

元件例化语句

生成语句

例3-8译码器   选择信号赋值语句

ENTITY decoder38 IS

  PORT(en : IN Bit; 

input : IN Bit_Vector(2 DOWNTO 0);

        output : OUT Bit_Vector(7 DOWNTO 0));

   END decoder38;

ARCHITECTURE assign OF decoder38 IS

 BEGIN

WITH(en & input) SELECT     ―――&是拼接运算符

  Output<=“11111110”WHEN “0000”,

  Output<=“11111101”WHEN “0001”,

Output<=“11111011”WHEN “0010”,

Output<=“11110111”WHEN “0011”,

Output<=“11101111”WHEN “0100”,

Output<=“11011111”WHEN “0101”,

Output<=“10111111”WHEN “0110”,

Output<=“01111111”WHEN “0111”,

Output<=“11111111”WHEN OTHERS;

 END assign;

常用分频器的VHDL实现

entity clock_10 IS

port(main_clock : in std_logic;

    clock_out : out std_logic);

end entity clock_10;

architecture behavior of clock_10 is

signal counter : integer range 0 to 4;

signal clk : std_logic;

begin

process(main_clock)

begin

  if main_clock'event and main_clock = '1' then

    clock_out <= clk;

    if counter = 4 then

      clk <= not clk ;

      counter <= 0;

    else

      counter <= counter + 1;

    end if;

  end if;

end process;

END  behavior;

函数的定义与引用

过程的定义与引用

程序包与设计库

练习题目

1. 用门电路搭建一个三分频器,要求占空比1:1。

2. 设计一个对串行输入序列信号中含“1”个数统计的电路,序列长度15位。

3. 用VHDL编写程序实现题目2的功能。

4. 用VHDL编写程序实现接口方式转换:

将8位SPI串行接口转并口输出。

关于软件的学习:建议使用XILINX公司的ISE

              或者ATERA公司的QUARTUS2

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
电子设计,创新之路
最近文章
倍压整流电路的设计
2008-12-03 11:55:32
VHDL设计
2008-12-01 12:36:08
推荐文章
最近访客