当前位置:首页 >> 信息与通信 >>

VHDL语言特性分析


算法与语言

VHDL 语言特性分析
叶 巍 沈小丰 马 玲
(湖北大学物电学院 湖北武汉 430062)
摘 要: 简单概述了 VHDL 语言的并行语句和顺序语句, 描述了其种类和特点。给出了一段同步整形电路的代码, 结合用 Quartus II 仿真得到的波形图, 详细地分析了代码的执行过程。 通过分析这段代码, 可以了解用

VHDL 语言设计时序电路的最核 心的语句——进程的用法, 以及利用信号的赋值实现多个进程间通信的方法。 关键词: VHDL; 并行语句; 顺序语句; 进程 中图分类号: TP312 文献标识码: A 文章编号: 1672-7800 2006) ( 01-0043-02

0

前言
“Very high speed integrated VHDL 是

顺序语句的书写顺序之后,编译的结果 可能会产生改变。这种先后执行顺序仅 仅是在仿真过程中才有意义,顺序语句 在经过软件编译综合转化为门电路以及 寄存器之后,就没有先执行或后执行的 概念了。当 CPLD/FPGA 上电之后, 电子 开始运动,所有的门电路都会按照事先设 计好的方案同时工作, 并没有先后之分。 这种以并行的工作方式实现顺序的逻辑 是硬件描述语言的一大特点,硬件本身 的并行性决定了这个特点。 VHDL 的并 行 语 句 主 要有 进程 6 种: 语句、 并行 信 号 赋值 语句、 并行 过 程 调用 语句、 元件 例化语句、 生 成 语句 以 及 块语 句。所 谓 的 “并行” , 并 不 是指 这 6 种语 句 在 内部

执行时一定以并行方式运行,而是指这 6 种语句在同一结构体中执行时没有先 后顺序之分。实际上,并行语句内部运 行可以是并行方式, 如块语句(block 语 句) 也可以是顺序执行的, ; 如进程 (pro。这 些并行语句 之间可以通 cess 语句) 过信号来交换信息,图 1 是并行语句运 行的示意图。

circuit Hardware Description Language” 的缩写, “甚高速集成电路硬件描述语 即 言” 。VHDL 广泛应用于 CPLD/FPGA 的 开发, CPLD/FPGA 的一大优势就是能 而 够实现复杂的时序, 精简电路结构。 以前 一块电路板中的计数、 分频、 译码、 编码、 接口通信等部分可能要用不同的 IC 来实 现, 但是现在只需要一片合适的 CPLD 或 者 FPGA 芯片就可以实现同样的功能, 带 来很大的方便,占用 PCB 板的空间也会 减小很多。 VHDL 语言系统虽然很庞大, 但是实际上只需 30%的基本语句就可以 实现 95%的电路设计, 因此, 掌握核心语 法和语句是学好 VHDL 的关键。

2 进程语句和信号的赋值语句
但是只 VHDL 的语句种类虽然较多,

1

VHDL 的两种重要语句结构
用 VHDL 语言编写程序和普通的 C

语言或者汇编有很大的不同。VHDL 代 码程序主要由并行语句和顺序语句构成, 理解这些并行语句和顺序语句的特点以 及它们之间的关系非常重要。 VHDL 的顺序语句主要包括赋值语 句、 流程控制语句、 空操作语句、 等待语 句、子程序调用语句和返回语句。顺序 语句是与并行语句相对而言的,当改变

并 行 语 句 1

并 行 语 句 2

并 行 语 句 3

作者简介: (1981-) 湖北赤壁人,硕士研究生, 叶巍 男, 主要研究方向: 嵌入式系统。

2006 ? 1 月号?软件导刊 43

算法与语言
有一部分是常用的, 有些只能用于仿真, 不能被软件综合成门电路,也就没有太 多 实际应 用价 值。为 了在 CPLD/FPGA 中实现某些特定的功能,程序必须准确 地转化为门电路、 寄存器或存储器, 因此 在使用 VHDL 的过程中,还需了解使用 的综合软件支持哪些语句。不同的软件 可综合的语句也不尽相同,一般可以在 软件的帮助文件中找到该软件可综合的 语句集合。 进程语句是并行语句中最重要的语 句, 也是 VHDL 语言中最常用的语句。 进 程语句的使用十分灵活, 设计一个时序电 路一定会用到进程语句, 部分组合电路也 需要使用进程语句。当进程的敏感信号 参数中的任意一个或多个发生变化时, 进 程被激活, 开始从上而下按照顺序执行进 程中的语句。 最后一个语句执行完毕, 进 程挂起, 等待下一次敏感信号的变化, 在 这个过程就周而复 CPLD/FPGA 上电后, 始地进行, 不会停止, 就像用 C 为嵌入式 系统编程用到的死循环一样。每启动一 次进程, 该进程里面的所有语句都会被执 行一次, 而不是每次只执行一条语句, 这 一点与计算机软件程序有很大差异。 信号 VHDL 语言还有一点值得注意: 的赋值。在一个进程中信号的赋值代入 不会在执行这条赋值语句的时候发生, 而 是等到进程中所有语句都执行完毕、 进程 挂起了才会发生, 利用信号的相互代入和 控制可以实现进程之间的通信。 句1 if s=’ 1’then signalout<=’ ; 1’ clear<=’ ; 1’ else ――条件语句 2 process(clock) begin if falling_edge(clock) then ――条件语 ――进程 2 architecture slatch of signallatch is signal clear, s : std_logic; begin process(signalin) begin if clear=’ then 1’ s<=’ ; 0’ elsif rising_edge(signalin) then ――条件语句 2 s<=’ ; 1’ end if; end process; ――条件语句 1 ――进程 1 entity signallatch is port ( clock : in std_logic; Signalin : in std_logic; Signalout : out std_logic ); end; 路 (同步整形电路就是要使外部输入的异 步信号变成与系统时钟同步, 同时将输入 信号整形为一个时钟周期长的信号脉冲) : library ieee; use ieee.std_logic_1164.all; signalout<=’ ; 0’ clear<=’ ; 0’ end if; end if; end process; end; 根据前面所述, process 是并行语句, 虽然进程 1 和进程 2 的敏感信号不同, 但 是由于在同一个结构体里面,所以是同 时启动的,即任意一个进程的敏感信号 发生变化都会使进程 1 和进程 2 同时启 动。 为了便于分析, 把上面的程序在 Quar建立一个波形文件, tus II 中进行编译后, 经过时序仿真后得到了如图 2 所示的波 形图。下面将详细分析 signalout 波形是 如何产生的 (Quartus II 会把 clear 和 s 初 始化为 0) : (1) 产生于 clock 的第一个上 Step 1: 升沿, 进程 1 和进程 2 同时启动。 由于都 不满足各自的条件语句, 因此进程 1 和进 程 2 实际上没有改变 clear 和 s 的值, 当进 程 1 和进程 2 结束挂起时, clear=0 , s=0。 (2) 产生于 signalin 的上升沿, Step 2: 进程 1 和进程 2 同时启动。此时进程 1 第二个条件语句满足执行条件,使得 s< 但此时 s 并没有立即发生代入, 因此 =1, 进程 2 中没有条件语句被执行。当进程 都结束挂起时, clear=0 , s=1。 (3) 3: Step 产生于 clock 的第一个下降 沿, 进程 1 和进程 2 同时启动。由于条件 不满足, 因此进程 1 中没有赋值语句被执 行; 进程 2 中有条件语句被执行, 当两个 进程都挂起时, clear=1, signalout=1。 s=1, (4)Step4: 产生于 clock 的第二个上 升沿, 进程 1 和进程 2 同时启动。进程 1

3 进程的执行过程
下面这段程序可以实现同步整形电

图 2 同步整形电路时序图

44 软件导刊? 2006 ? 1 月号

算法与语言

常用内部排序算法的比较与选择
王 莉
(华中师范大学 计算机科学系, 湖北 武汉 430070)
摘 要: 介绍了常用排序方法, 比较了常用排序算法的异同, 针对不同序列选择最佳排序方法, 以提高程序运行的速度。 关键词: 内部排序; 排序算法比较; 排序方法选择 中图分类号: TP312 文献标识码: A 文章编号: 1672-7800 2006) ( 01-0045-02

1
1.1

排序的基本概念
基本概述 排序是计算机内经常进行的一种操

整为 “有序” 的记录序列。 1.2 内部排序方法分类 内部排序的过程是一个逐步扩大记 录的有序序列长度的过程。在排序的过 程中, 参与排序的记录序列中存在两个区

域: 有序区和无序区。 使有序区中记录的数目增加一个或 几个的操作称为一趟排序。逐步扩大记 录有序序列长度的方法大致有下列几类: 插入类、 交换类、 选择类、 归并类。

作, 其目的是将一组 “无序” 的记录序列调

有条件语句被执行, 使得 s<=0, 但此时 s 没有发生立即代入; 进程 2 没有条件语句 被执行。当进程都结束挂起时, clear=1 , s=0。 (5) 产生于 clock 的第二个下降 Step5: 沿, 进程 1 和进程 2 同时启动。进程 1 有 条件语句执行,但是不改变 clear 和 s 的 值; 进程 2 也有条件语句执行, 使得 clear< =0。当进程都结束挂起时, clear=0 , s=0, signalout=0。 (6) 产生于 clock 的第三个上升 Step6: 沿, 进程 1 和进程 2 同时启动。 由于进程 所以当 1 和进程 2 都没有条件语句执行, 进程都结束挂起时, clear=0 , s=0。 (7) 产生于 signal 的下降沿, 进 Step7: 程 1 和进程 2 同时启动。由于进程 1 和 进程 2 都没有条件语句执行, 所以当进程 都结束挂起时, clear=0 , s=0。 此后, 不管 clock 是上升沿还是下降

沿, 都不会改变 clear 和 s 的值, 因此输出 的都是低电平。 除非再有一个 signalin 上 升沿信号, 才会再在时钟下降沿处输出一 个时钟周期长的脉冲信号。 上面分析的一段代码比较典型, 当然 同步整形电路也可以用其它方法编写出 来,该例是为了说明 process 独特的运行 过程以及信号在进程中的作用。

process 执行它里面的程序是两个完全不 同的概念。 信号 clear 和 s 是为了实现同步整型 功能人为创造的, 它们都是实体内真实存 在的节点。 换句话说, 综合后它们都是硬 件内的某个逻辑单元的端口。通过它们 相互控制和正确的赋值, 可以达到人们想 要实现的很多设计。特别是在不方便用 状态机的地方, 用这种方法可以比较容易 地实现想要的功能电路。
参考文献: 1]黄任. VHDL 入门?解惑?经典实例?经验总 结 [M]. 北京: 北京航空航天大学出版社, 2005. [2]侯伯亨, 顾新. VHDL 硬件描述语言与数字 逻辑电路设计[M]. 西安: 西安电子科技大 学出版社, 1999. (责任编辑: 君) 刘

4 结论
分模 VHDL 设计可以采用自底向下、 块设计的方法。很多代码的敏感信号表 里只有时钟信号,而 process 里的第一个 条件语句的条件就是时钟的上升沿或者 下降沿, 这容易使人产生误解, 以为只有 在条件语句满足的时候 process 才启动。 其实 process 会在时钟跳变时启动,无论 这个跳变是由低电平跳变到高电平还是 由高电平跳变到低电平,process 启动和

Analyze the Characteristic of VHDL
Abstract: Summarized the concurrent statements and sequential statements of VHDL language, described their types and the charand acteristic . Showing a section of code about synchronized shape shifter circuit,unified an image which obtains form the Quartus II simulation, and analgzed code implementation step by step. Key words:VHDL; concurrent statements; sequential statements;process 2006 ? 1 月号?软件导刊 45


相关文章:
VHDL语言入门到精通
PCB 布线,电路模拟,电路分析,逻辑模拟。 70 年代──第一代:CAD 设备 小型...3、与 C 语言相比,VHDL 有什么特点? 4、什么是综合?有那些类型? 5、在 ...
ASIC和VHDL的特点与发展
2.2 VHDL 的主要特点与其他硬件描述语言相比,VHDL 具有以下特点: (1)功能强大...北京:清华大学出版社,1997 [10].徐睿.专用集成电路设计分析[J].微电子技术,...
VHDL作业及答案1
用于描述所设计系统的外部接口特性;即该设计实体对外...答:VHDL 语言数据对象有信号,变量,常量。要回答的...阅读下面的程序,分析其实现的逻辑功能,并说明是时序...
vhdl语言的发展趋势2
例如在飞机制造过程 中,从设计、性能测试及特性分析直到飞行 模拟,都可能涉及到...2.5 其它 EDA 软件 ①VHDL 语言 超高速集成电路硬件描述语 语言: 言(VHSIC ...
VHDL作业及答案2
答:VHDL 语言数据对象有信号,变量,常量。要回答的...各有什么特点? 1.行为描述方式:只需描述输入与输出...6. 下面是三人表决器的 VHDL 描述,分析其实现机制...
VHDL语言编写规范
VHDL语言编写规范_信息与通信_工程科技_专业资料。VHDL...模拟: 是指对一个物理器件的结构、 功能或其他特性...的可靠性极为不利,也大大增加了静态时序分析的复杂...
基于VHDL语言的简易逻辑分析仪设计
基于VHDL语言的简易逻辑分析仪设计_工学_高等教育_教育专区。1 前 言 高校电气...VHDL 主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征 ...
VHDL语句
二、VHDL 并行语句并行语句结构是硬件描述语言的特色。在 VHDL 语言中,并行语句有多 种语句格式。 VHDL 语句的特性: 语句的特性: 1、各种并行语句在结构体中的...
vhdl中的generic
VHDL 语言中 generic(类属)类属 GENERIC 参量是一...或设计实体的 物理特性,或结构体中的总线宽度,或设计...2014教师资格材料分析辅... 2014小学教师资格考试《...
vhdl实验一
2. 了解在 Quartus II 环境下运用 VHDL 语言的编程开发流程,包括源程序的编写...程序(Waveform Editor)可以生成和编辑波形设计文件, 从而设计者可观察和分析模拟...
更多相关标签:
vhdl语言 | vhdl语言100例详解 | vhdl语言入门教程 | vhdl语言教程 | vhdl语言视频教程 | vhdl语言点亮一个灯 | vhdl语言入门视频教程 | vhdl和c语言 |