原创 VHDL学习1

2006-1-8 14:21 7405 15 13 分类: FPGA/CPLD

 



关键词:
设计库和标准程序包 
library library_name;
use library_name.package_name.all; 
• 由于STD_LOGIC数据类型不属于VHDL标准库,所以使用时要予以以下声明:
          library IEEE; 
         use IEEE.Std_Logic_1164.all; 
 
 ENTITY   称为实体,描述了电路器件外部情况及各信号端口的基本性质。
entity entity_name is
generic (generic_list);
port (p_name:port_m   data_type;

p_name:port_mi   data_type);
end entity entity_name;
• 电路的端口及其端口信号描述语句PORT()
          p_name端口信号名
          port_m 端口模式:IN       单向只读模式,规定数据只能通过此端口被读入实体中。
                                            OUT     单向输出模式,规定数据只能通过此端口从实体向外流出,或者可以将实体中的数据向此端口赋值 。
                                            INOUT   输入输出双向口
                                            BUFFER  与INOUT类似,区别在于输入信号来自于实体内部产生的回读输出的信号,即允许反馈。
         data_type 数据类型:整数数据类型 INTEGER
                                                布尔数据类型 BOOLEAN
                                                标准逻辑位数据类型 STD_LOGIC
                      type std_ulogic is (   'U',      -- Uninitialized
                                             'X',      -- Forcing   Unknown
                                             '0',      -- Forcing   0
                                             '1',      -- Forcing   1
                                             'Z',      -- High Impedance
                                             'W',      -- Weak     Unknown
                                             'L',      -- Weak     0
                                             'H',      -- Weak     1
                                             '-',     -- Don't Care    );
                                  位数据类型   BIT
                                 BIT数据类型的信号规定的取值范围是逻辑位‘1’,‘0’。
 
 ARCHITECTURE 称为结构体,结构体负责描述电路内部逻辑功能或电路结构,并行语句。
architecture architecture_name of entity_name is
architecture_declarations(说明语句)
                   begin
                            concurrent_statements(功能描述语句)
                   end [ architecture ] [ architecture_name ];
 
                   说明语句:包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等。并非必须的。
                   功能描述语句:必须的,给出相应的电路功能描述语句,可以是并行语句、顺序语句或他们的混合。
 
PROCESS_END PROCESS 进程语句和顺序语句,VHDL中,所有合法的顺序描述语句必须放在进程语句中,比如IF_THEN_ELSE_END IF等。
[process_label:] process [ ( sensitivity_list ) ] [ is ]
[process_declarations]?
         begin 
                   sequential_statements?
end process [ process_label ] ;
           sensitivity_list:敏感信号表,通常要求把进程中所有的输入信号都放在敏感信号表中。 
         PROCESS的执行依赖于敏感信号的变化,当某一敏感信号发生跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句后,便返回进程的启示端,进入等待状态,直到下一次敏感信号中某一信号跳变才再次进入“启动—运行”状态,再执行一遍进程。一个结构体中,可以存在多个进程,它们是并行的,而任意一个进程属于顺序语句。
 
AND(与)、OR(或)、NOT(非)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或) 逻辑操作符,构成组合电路,他们的操作数有三种类型,分别为BIT  BOOLEAN  STD_LOGIC.
 
IF_THEN_ELSE_END IF 条件语句
if condition then
sequential_statements
end if; 
if condition then
    sequential_statements
else 
sequential_statements
end if; 
if condition then
    sequential_statements
    elsif condition then
         sequential_statements
    else 
         sequential_statements
end if; 
 赋值语句 
signal_name  <= [delay_mechanism ] waveform ;
 
WHEN_ELSE 条件信号赋值语句
signal_name  <= [delay_mechanism ] waveform1 when condition1 else
                           [delay_mechanism ] waveform2 when condition2 else
                           . . .
                           [delay_mechanism ] waveformn;
with selection select
signal_name  <= [delay_mechanism ] waveform1 when choice1,
               [delay_mechanism ] waveform2 when choice2,
                            . . .
               [delay_mechanism ] waveformn when others;
 
 SIGNAL 信号定义和数据对象(Data Objects),它规定了信号的行为方式和功能特点。
Simplified Syntax:
signal signal_name : type;
signal signal_name : type := initial_value;
注:signal可作为内部的节点,这就决定它不需要像端口那样定义模式,即数据流动不受方向限制,可用来建立寄存器等。
 
EVENT 信号跳变检测表示和信号属性函数
signal_name’event[and signal_>
 
不完整条件语句与时序电路 
比如在未满足if条件,又没有else明确指出其他条件时如何操作时,即在条件语句中没有对所有可能发生的条件给出对应的处理方式,这样就产生了不完整条件语句。此时,VHDL综合器将引进一个时序元件保持当前状态值。利用这种不完全条件语句的描述引进寄存器元件,从而构成时序电路的方式是VHDL描述时序电路最重要的途径。
CLK’LAST_VALUE=‘0’(‘1’)
rising_edge()测定上升沿的函(LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;)
 
l          WAIT 
Simplified Syntax:
wait; 
wait on signal_list;
wait until condition;
wait for time;


 

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户89532 2007-9-3 12:06

好久没见博主高见了

用户1316029 2007-1-30 17:31

可以一起交流吗??我的邮箱laikq@126.com

用户64604 2006-11-24 12:00

我也是刚开始学  不是为了找工作,只是做的硬件电路里要求有加密电路

用户19364 2006-9-29 15:49

我们今年刚刚学这个课程,不知道这个好不好找工作啊
相关推荐阅读
用户1157282 2007-09-28 10:57
电平总结2
要了解逻辑电平的内容,首先要知道以下几个概念的含义: [52RD.com]1:输入高电平(Vih): 保证逻辑门的输入为高电平时所允许的最小输入高电平,当输入电平高于Vih时,则认为输入电平为高电平。...
用户1157282 2007-09-28 10:54
电平总结1
TTL和CMOS电平1,TTL电平:    输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>...
用户1157282 2007-05-07 12:20
好久不见十分想念
最近工作一直很忙,没有了时间纪录和总结,接触了很多东西,不过都没有时间深究,就等着失业了,呵,好有时间把那些自己觉得欠下的债恶补一下。现在对“仿真”很感兴趣,今后可能大肆地写关于仿真的很多东西了,然后...
用户1157282 2006-03-01 08:45
VHDL学习5
三态门三态门的应用 三态门的有很多的实际应用,比如数据和地址BUS的构建,RAM或堆栈的数据端口设计等。三态门的设计 当输入输出状态时,dataout<=datain;而当高阻状态的时候,则da...
用户1157282 2006-01-20 21:00
VHDL学习4
q : bufferr integer rang 15 dwonto 0   -- 定义q为buffer类型的端口,此端口的数据类型为integer,此整数的取值范围是从15到0。注:1.intege...
用户1157282 2006-01-20 20:57
VHDL学习3
CASE语句,属于顺序语句,因此必须放在process中使用,用法如下:case expression iswhen choice => sequential_statements      -...
我要评论
4
15
关闭 站长推荐上一条 /3 下一条