原创 VHDL学习一

2007-3-1 10:10 3152 5 7 分类: FPGA/CPLD

关键词


l          设计库和标准程序包 



library library_name;


use library_name.package_name.all; 



由于STD_LOGIC数据类型不属于VHDL标准库,所以使用时要予以以下声明。


library IEEE; 



use IEEE.Std_Logic_1164.all; 




 



l          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_logic 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’。



 



l          ARCHITECTURE 称为结构体,结构体负责描述电路内部逻辑功能或电路结构,并行语句。


architecture architecture_name of entity_name is



 



architecture_declarations(说明语句)


                   begin


                            concurrent_statements(功能描述语句)


                   end [ architecture ] [ architecture_name ];



 



说明语句:包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等。并非必须的。


功能描述语句:必须的,给出相应的电路功能描述语句,可以是并行语句、顺序语句或他们的混合。



 



l          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的执行依赖于敏感信号的变化,当某一敏感信号发生跳变,就将启动此进程语句,而在执行一遍整个进程的顺序语句后,便返回进程的启示端,进入等待状态,直到下一次敏感信号中某一信号跳变才再次进入“启动—运行”状态,再执行一遍进程。一个结构体中,可以存在多个进程,它们是并行的,而任意一个进程属于顺序语句。



 




 



l          AND(与)、OR(或)、NOT(非)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或) 逻辑操作符,构成组合电路,他们的操作数有三种类型,分别为BIT  BOOLEAN  STD_LOGIC.



 



l          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;



 



l          SIGNAL 信号定义和数据对象(Data Objects),它规定了信号的行为方式和功能特点。


Simplified Syntax:


signal signal_name : type;


signal signal_name : type := initial_value;


注:signal可作为内部的节点,这就决定它不需要像端口那样定义模式,即数据流动不受方向限制,可用来建立寄存器等。



 




 



l          EVENT 信号跳变检测表示和信号属性函数


signal_name’event[and signal_>


 



l          不完整条件语句与时序电路 



比如在未满足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;

文章评论2条评论)

登录后参与讨论

用户1276322 2007-3-1 13:56

考虑中,以后会打包上传资料的。

用户79959 2007-3-1 11:03

最好是以附件的形式会更好一些   非常感谢

希望以后能多上传有关FPGA的资料等内容!

相关推荐阅读
用户1276322 2007-03-26 16:47
AVR读写外部RAM时出现的问题
AVR读写外部RAM时出现的问题问:1,对AT90S8515来说,外部RAM的地址肯定是从0x0260开始的?2,我用ICE200仿真8515读写外部RAM,RAM大小为32K Bytes,地址映射到...
用户1276322 2007-03-26 15:45
理解#defineSREG(*(volatileunsignedchar*)0x5F
以前看到#define SREG    (*(volatile unsigned char *)0x5F)这样的定义,总是感觉很奇怪,不知道为什么,今天终于有了一点点心得,请大虾们多多批砖~~~   ...
用户1276322 2007-03-26 12:56
AVR复位和中断处理
AVR提供了几种不同的中断源。这些中断和复位向量在程序存储器空间内都有自己单独的程序向量。所有中断都被分配一个私有的使能位,要想使能某一中断,就要向其使能位写入逻辑1,而且要把状态寄存器中的全局中断使...
用户1276322 2007-03-26 00:28
红外线遥控原理
作者:微电  出处:微电通讯  更新时间: 2006年07月14日            红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因...
用户1276322 2007-03-26 00:22
AVR中断应用设计要点
AVR的中断源比较多,尤其是ATmega128,一共有35个外部以及内部中断源。通常情况下,Flash程序存储器空间的最低位置(0x0000-0x0045)定义为复位和中断向量空间。完整的中断向量见第...
用户1276322 2007-03-25 23:59
avr单片机中断使用心得
中断响应后由硬件自动清零全局中断,任何中断都无法响应,在执行完中断程序后,全局中断打开.如果需要中断嵌套,则在中断程序里软件添加打开全局中断.就可以响应任何中断(包括比本中断优先级低的中断).以至可以...
我要评论
2
5
关闭 站长推荐上一条 /2 下一条