admin管理员组

文章数量:1531904

2024年4月5日发(作者:)

浅谈VHDL学习

一,检查时钟clk上升沿

有以下三种途径:

1,clk'EVENT AND clk ='1';

2,NOT clk'STABLE AND clk ='1';

3,RISING_EDGE(clk);

发生事件,就是电平发生变化.

The rising_edge and falling_edge functions are defined in the std_logic_1164 package

二,检查时钟clk下降沿

有以下三种途径:

1,clk'EVENT AND clk ='0';

2,NOT clk'STABLE AND clk ='0';

3,FALLING_EDGE (clk);

VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed

Integrated Circuit) Hardware Description Language。 与另外一门硬件描述语言Verilog

HDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和

行为级(寄存器传输级),而且VHDL具有设计重用、大型设计能力、可读性强、易于编译

等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,

特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法

通过。为此本文就其中一些比较典型的问题展开探讨,希望对初学者有所帮助,提高学习进

度。

一. 关于端口

VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会

用到前四种。In和Out 端口的使用相对简单。这里,我们主要讲述关于buffer和inout使

用时的注意事项。

与Out端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,

因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子

模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,

可以通过增加中间信号作为缓冲,由该信号完成回读功能。

双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个

简单程序进行阐述,部分程序如下:

... …

① DataB<=Din when CE=‘1‘ and Rd=‘0‘ else

② (others=>‘Z‘);

③ Dout<=DataB when CE=‘1‘ and Rd=‘1‘ else

④ ( others=>‘1‘ );

… …

程序中DataB为双向端口,编程时应注意的是,当DataB作为输出且空闲时,必须将其设

为高阻态挂起,即有类似第②行的语句,否则实现后会造成端口死锁。而当DataB作为有效

输入时, DataB输出必须处于高阻态,对于该例子中即,当 CE=‘1‘ and Rd=‘1‘时,输出

DataB应处于高阻态。

二.信号和变量

常数、信号和变量是VHDL中最主要的对象,分别代表一定的物理意义。常数对应于数字

电路中的电源或地;信号对应某条硬件连线;变量通常指临时数据的局部存储。信号和变量

功能相近,用法上却有很大不同。

表1 信号与变量主要区别

信号 变量

本文标签: 设计端口信号类型硬件