VHDL从一个例子开始-----锁存器

VHDL的学习从一个例子开始学起-----锁存器的设计。锁存器是一个简单的数字电路,下图是1位锁存器的原理图。

                                                                                  

图1 1位锁存器的原理图

其中,引脚D是锁存器的输入,ENV是锁存器的使能引脚,Q是锁存器的输出引脚。当ENV=1时,Q=D;当ENV=0时,Q为上次D的输入。下面是VHDL的程序:

--IEEE库引用说明
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--实体声明
ENTITY Latch is
Port(D,ENV:IN STD_LOG;
        Q:OUT STD_LOGIC;);
END ENTITY Latch ;
--结构体声明
ARCHITECTURE one OF Latch is
--信号的声明
    signal  sig:STD_LOGIC;
    begin
	--进程的声明
        PROCESS(D,ENV)
            begin
            if(env='1') then
                sig<=D;
             end if;
              Q<=sig;
             end process;
end architecture on;
现在对上面的程序说明下:

(1)IEEE库:
它包含了描述器件的输入、输出端口数据类型,即端口信号的取值类型或范围中将要用到的IEEE 的标准库中的STD_LOGIC_1164 程序包。使用LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL来引用。如果学过C语言,可以很好理解,它类似与C语言中的#include<*******>语句。

(2)实体:

          实体相当于电路中的元器件 , 它是一个独立的完整的模块,它描述的 “元器件”的接口信息。通过PORT来定义元器件的 引脚。IN 引脚定义为输入,OUT定义为输出,INOUT 定义为输入输出。

(3)结构体

结构体是VHDL 程序中不可或缺的三个部分之一,另外两个是IEEE库和实体。结构体描述了程序的逻辑功能,其相当于是元器件的内部电路。结构体中定义了一个signal和Process。signal的功能是存储 外部信号D的数据位。Process后面会详述。在PROCESS中有一个IF判断语句,器逻辑功能与C语言中的if语句相同。当D或ENV其中有一个输入变化时,程序便会执行一次PROCESS中的语句。当ENV=‘1’时sig就被赋值为D。“sig<=D“表示将D赋值给sig。当ENV不等于‘1’时便会退出IF语句,然后执行Q<=sig这样Q就会输出D之前输入的数据位。

 总结:

本文从一个比较简单的例子--锁存器开始介绍了VHD程序的结构。后面会详细介绍VHDL的数据结构以及执行语句,状态机的设计。

你可能感兴趣的:(VHDL)