并行语句是是硬件描述语言的特殊之处,这也是硬件描述语言不可少的一部分。硬件电路例如:总线,它需要多个输入。这个时候,我们必须并发的给出总线上的数据。软件程序设计语言也有并发,但是在性能要求不是苛刻的情形下,无需使用并发。软件的并发由多线程和多进程来实现。

在VHDL中,并发语句是同时执行的。它们的书写顺序和执行顺序没有关系。在结构体中的并行语句主要有一下几种:

  1. 进程语句;

  2. 并行信号赋值语句;

  3. 并行过程调用语句;

  4. 元件例化语句;

  5. 生成语句;

  6. 块语句。

简单信号赋值语句

信号<=表达式;

选择信号赋值语句

WITH 选择表达式 SELECT
信号<=表达式1 WHEN 选择值1,表达式2 WHEN 选择值2,......表达式n WHEN OTHERS;        --最后一行这里是分号。其余行是逗号

WITH——SELECT语句是当“选择表达式”的值等于WHEN后面的选择值时,将WHEN前面的表达式值赋给信号。

  • 选择值必须互斥,不能重复。

  • 该语句不能用于进程(PROCESS)中。

  • 选择信号赋值语句不允许出现范围覆盖不全的情况。

条件信号赋值语句

信号<=表达式1 WHEN 赋值条件1 ELSE表达式2 WHEN 赋值条件2 ELSE......表达式n WHEN 赋值条件n ELSE表达式;       --最后一项可以不跟条件子句,用于表示以上赋值条件都不满足的情形。
  • 条件信号赋值语句允许赋值条件重叠,因为,它赋值条件根据书写顺序来逐项测试。一旦发现某一赋值条件得到满足,即将相应表达式的值赋给信号,并且不在测试后面的赋值条件。也就是说,语句之间有优先级顺序,按照书写的先后顺序从高到低排列优先级。适合实现优先级编码器。

进程语句

进程语句PROCESS是VHDL中最重要的语句之一。它的特点如下:

  • 进程与进程之间是并发,这点和软件程序设计语言是一致的。进程内部是顺序执行的。
  • 进程只有在敏感信号发生变化的时候才会执行。

进程语句的格式如下

进程名:]PROCESS[(敏感信号列表)]   --进程名不是必须的
[声明区];          --定义进程内部使用的变量,不能在此处定义信号,信号在ARCHITECTURE中定义
BEGIN
顺序语句;
END PROCESS[进程名];
  • 当敏感信号列表中的任意一个发生变化的时候,PROCESS将被启动。
  • PROCESS内部执行是顺序的
  • 在进程内对同一个信号的多次赋值只有最后一次生效。
  • 在不同进程之中不能对同一信号进行赋值。
  • 在一个进程中不能同时对时钟上升,下降沿都敏感。

进程与时钟

进程是由敏感信号的变化来启动的,因此可将时钟作为进程启动的敏感信号。时钟信号的上升沿和下降沿是我们最常使用的。当时钟信号clk是STD_LOGIC类型的时候,时钟信号在VHDL中的描述方法如下:

上升沿描述:clk'EVENT AND clk = '1';
下降沿描述:clk'EVENT AND clk = '0';

除此之外,VHDL语言还预定义了两个函数来描述上升沿和下降沿。

上升沿描述:rising_edge(clk);
下降沿描述:falling_edge(clk);

注意下面的错误格式:

--错误格式1
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN        --不能同时对上升沿和下降沿都敏感
......
ELSIF falling_edge(clk) THEN
......
END IF;
END PROCESS;
--错误格式2
PROCESS(clk)
BEGIN
IF rising_edge(clk) THEN
......
ELSE            --不能有ELSE,这相当于除了对上升沿敏感,还对下降沿敏感
......
END IF;
END PROCESS;

硬件描述语言VHDL——并行语句相关推荐

  1. 硬件描述语言VHDL之并行语句基本使用介绍

    硬件描述语言VHDL之并行语句 1. process语句 1.1 基本介绍 1.2 基本格式 1.3 代码示例 2. 简单形式并行信号赋值语句 2.1 简单并行信号赋值语句说明 2.2 代码示例 3. ...

  2. 硬件描述语言VHDL之顺序语句基本使用介绍

    硬件描述语言VHDL之顺序语句 1. 顺序赋值语句 1.1 变量赋值语句 1.1.1 基本说明 1.1.2 使用举例 1.2 信号赋值语句 1.2.1 简单说明 1.2.2 使用举例 1.3 常量赋值 ...

  3. 硬件描述语言VHDL

      数字系统设计分为硬件设计和软件设计, 但是随着计算机技术.超大规模集成电路(CPLD.FPGA)的发展和硬件描述语言(HDL, Hardware Description Language)的出现, ...

  4. EDA硬件描述语言VHDL概述

    1.EDA技术概述 以大规模可编程逻辑器件为设计载体,以硬件描述语言HDL为系统逻辑描述的主要表达方式,以计算机.大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,自动地完成用软件方式描述的电子 ...

  5. EDA硬件描述语言VHDL(一)

    文章目录 1.EDA 2.EDA技术应用对象 3.开发流程 4.常用的描述PLD内部结构的专用电路符号 5.宏单元 6.扩展乘积项 7.I/O控制块 8.CycloneⅢ系列器件的结构原理 1.EDA ...

  6. 硬件描述语言VHDL——运算符

    逻辑运算符 and       or      not    nand    nor        xor        xnor 这7种逻辑运算符.它们分别是与,或,非,与非,或非,异或,同或. 它 ...

  7. 硬件描述语言与c语言函数,计算机硬件描述语言(VHDL)与编程语言(C语言)的区别及关系,...

    计算机硬件描述语言(VHDL)与编程语言(C语言)的区别及关系,以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 计算机硬 ...

  8. 例说Verilog HDL和VHDL区别,助你选择适合自己的硬件描述语言

    如果你搜索Verilog和VHDL的区别,你会看到很多讨论这场HDL语言战争的区别页面,但大多数都很简短,没有很好地举例说明,不方便初学者或学生理解. Verilog和VHDL之间的区别将在本文中通过 ...

  9. (一)硬件描述语言verilog

    问题总结区 1.如何理解 module ..... endmodule ? module 指模块是verilog 的一个基本单元,这个基本单元可以是描述一个简单的求和行为,也可以用来表达一个功能器件( ...

最新文章

  1. 基于微软开源深度学习算法,用 Python 实现图像和视频修复
  2. c#发送http请求
  3. SPI的原理以及Verilog HDL实现
  4. C# 制作开机自动启动程序
  5. Flex+ActionScript
  6. 如何通过标签体系,打造精细化运营?
  7. sonar 匿名内部类写法不推荐
  8. 一句话概括4本管理著作
  9. 【RK3399Pro学习笔记】十、ROS服务端Server的编程实现
  10. xp系统什么梗_老式电脑,装个什么样的系统最好用?
  11. easycode 表配置_EasyCode插件使用及模板参考
  12. java开关语句_Java中嵌套开关语句的替代方法
  13. From UI design to system functions and application layer
  14. 中国象棋棋子及棋盘的绘制
  15. 一刷leetcode——树
  16. 比特币算法——SHA256算法介绍
  17. quartz mysql数据源_Spring之——quartz集群(MySQL数据源)
  18. Zendframework 模块加载事件触发顺序。
  19. QML Logical value dose not depend on actual values(M325)
  20. 如何自动申请京东试用商品、签到获取京豆

热门文章

  1. 虚拟机和服务器如何分辨率,虚拟大师怎么设置分辨率最好 虚拟机分辨率
  2. CA证书的签发与认证
  3. 这样的老板,真想把他拖进WC爆zou一顿.....
  4. springboot文件上床大小设置
  5. 微信小程序的制作方法步骤和流程
  6. 圆/椭圆/抛物线/双曲线等圆锥曲面/二次曲线公式总结
  7. win7激活及问题的解决
  8. 记录几个ubuntu无法开机的问题
  9. 职业规划测试软件,生涯规划工具
  10. 华为android9使用外置存储卡,华为Mate 9支持扩展储存卡吗?支持多大储存卡?