FPGA之道(28)VHDL的并行语句 您所在的位置:网站首页 并发和并行的例子有哪些类型 FPGA之道(28)VHDL的并行语句

FPGA之道(28)VHDL的并行语句

2023-11-18 04:50| 来源: 网络整理| 查看: 265

文章目录 前言VHDL的并行语句VHDL直接信号赋值语句VHDL条件式信号设置语句VHDL选择式信号设置语句VHDL进程语句时钟事件表示方法纯组合process纯时序process具有同步复位的process具有异步复位的process具有混合复位的processVHDL块语句VHDL元件例化语句VHDL生成语句条件生成VHDL函数调用语句

前言

VHDL的并行语句类似于Verilog的always块,下面摘自《FPGA之道》的讲解,一起学习。

VHDL的并行语句

在VHDL的基本程序框架一节中,我们了解到,architecture语句部分里面的语句都是并行的。 那么到底VHDL里面有哪些并行语句可以供我们使用呢?请看如下描述: architecture of is begin ; ; ; ; ; ; ; ; end ; 以上这些并行语句,没有哪一类是不可或缺的,但是一个architecture中怎么着也得至少有一条,否则虽然从语法上来讲没什么问题,但是这个architecture就不具有任何功能了。一般来说,只要有元件例化、进程语句和信号赋值语句这三类语句就足够描述FPGA的功能了 ,下面详细介绍一下这些并行语句。

VHDL直接信号赋值语句

直接信号赋值语句语法如下: a and c, -- this is not allowed! d => d );

使用简单的表达式进行映射,有时候能够给我们带来一些便利,不过并不提倡大家这么去做,因为这样写有些不太规范。

VHDL生成语句

VHDL中的生成语句可分为三种,分别是参数生成、循环生成与条件生成,我们这里所说的并行语句主要指后两种。关于这三种生成语句分别介绍如下:

参数生成 参数生成的语法是generic,主要用在entity定义和元件例化时。

循环生成 循环生成也叫for-generate语句,主要用于生成一组信号赋值或元件例化语句。它的语法如下:

: for in to generate begin ; end generate;

关于循环生成语句的语法,有一点需要注意,那就是必须要有,也就是说一定要为循环生成语句定义一个标签,否则会被识别为for语句,而for语句是串行语句,不能单独出现在architecture中。 先看一个循环生成语句在信号赋值方面的例子:

signal a, b : std_logic_vector(99 downto 0); invertVector: for i in 0 to 99 generate begin a(i) arrayA(i), b => arrayB(i), c => arrayC(i)); end generate;

可见,本例的方式也极大的简化了我们的代码编写,并且这种代码节省更加不容易被替代,除非从cellAdd上下功夫,但是这样会复杂基本模块,不可取。

条件生成

条件生成语句也叫if-generate语句,主要用于一些预编译前的代码控制,类似于C语言中的条件选择宏定义,根据一些初始参数来决定载入哪部分代码来进行编译(即,有选择的让部分代码生效)。例如,我们有时候不确定这个地方是需要一个乘法还是一个除法,可是如果同时实现一个乘法器和一个除法器,那么资源的占用会很多,那么这个时候,可以通过条件生成语句,来方便的在乘法器与除法器之间切换,并且只占用一份资源。注意!这种切换不是动态的,它是通过修改设计中的参数来实现的,所以需要重新编译。if-generate语句的语法如下:

: if generate begin ; end generate;

举例如下:

constant sel : integer := 0; signal a, b, c: std_logic_vector(15 downto 0); myMul: if sel = 1 generate begin c


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有