其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
VHDL笔记(2)--并行语句

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

VHDL并行语句

1、进程语句(Process

特点:

进程结构内部所有语句顺序执行。

多进程间是并行执行的,并可访问构造体(Architecture)和实体(Entity)中的信号。

进程的启动由信号敏感表中的信号来触发,也可用WAIT语句等待一个触发事件的成立。(不同时使用)

 

 [进程名]PROCESS[敏感信号表]

变量说明语句:

       ……

       BEGIN

       …...

       顺序说明语句

       …...

END PROCESS [进程名];

 

e.g(PROCESS)

ARCHITECTURE behav OF half_adder IS

BEGIN

Padder: PROCESS (a,b)

BEGIN

       Sum <= a XOR b AFTER 5 ns;

       Carry <= a AND b AFTER 5 ns;

END PROCESS Padder;

END behav;

 

WAIT                                  --无限等待

WAIT ON                            --敏感信号变化

WAIT UNTIL 表达式          --表达式成立是进程启动

WAIT FOR 时间表达式      --时间到,进程启动

 

e.g(WAIT)

ARCHITECTURE example OF xor_gate IS

BEGIN

PROCESS

       BEGIN

              OUT_q <= ind1 xor ind2 AFTER 10ns;

              WAIT ON ind1, ind2;

       END PROCESS;

END example;

 

2Block语句

块(BLOCK)是结构体中的子模块,Block可以把许多并行语句包装在一起,可嵌套。

块名:BLOCK[(保护表达式)]

[类属子句                           --用于信号的映射及参数的定义,常用GENERIC语句、

类属接口表;]                    --GENERIC_MAP语句、PORT语句、PORT_MAP语句实现

[端口子句                           --主要对改块用到的客体加以说明。可说明的项目有USE子句、

类属接口表;]                    --子程序说明及子程序体,类型说明及常数说明、信号说明和元--件说明

块说明部分

BEGIN

并行语句A

并行语句B

......

END BLOCK [块标号]

LIBRARY IEEE

USE WORK.math.ALL;

USE IEEE.STD_LOGIC_1164.ALL;

PACKAGE math IS

       TYPE TW32 IS ARRAY(31 DOWNTO 0) OF STD_LOGIC;

       FUNCTION TW_add (a, b; tw32) RETURN TW32;

       FUNCTION TW_sub (a,b; tw32) RETURN TW32;

END math;

ENTITY cpu IS

       PORT (clk, interrupt: IN STD_LOGIC;

                     ADD: OUT TW32;

                     Comt: IN INTEGER;

                     data: INOUT TW32);

END cpu;

ARCHITECTURE cpu_blk OF cpu IS

       SIGNAL addr_bus, data_bus: TW32;

BEGIN

       ALU: BLOCK                                                          --模块标号

       PORT(a_bus, b_bus: IN TW32;                         --模块端口说明

                     d_out: OUT TW32;

                     c_bus: IN INTEGER);

       PORT(a_bus => addr_bus,                                --模块信号端口映射

                     b_bus => data_bus,

                     d_out => data,

                     c_bus => comt);

SIGNAL AD_BUS: TW32;

BEGIN

       d_out <= tw_add(a_bus, b_bus) WHEN c_bus = 0 ELSE   --函数调用

                     tw_sub(a_bus, b_bus) WHEN c_bus = 1 ELSE   --函数调用

                     a_bus;

END BLOCK ALU;

END cpu_blk;

3、过程和过程调用语句(concurrent procedure call

register_proc(ck => clock, d => reg_in, q => reg_out);                    --procedure调用

 

4、信号代入语句(SIGNAL ASSIGNMENT

并发信号代入语句(Concurrent Signal Assignment

q<= a + b;

b<= a + q;                 --结果同一般编程语言不同。

条件信号代入语言(Conditional Signal Assignment

目标信号 <= 表达式1 WHEN 条件1 ELSE

                     表达式2 WHEN 条件2 ELSE

                     表达式3 WHEN 条件3 ELSE

                     ......

                     表达式n WHEN 条件n ELSE

                     表达式n+1;

选择信号代入语言(Selective Signal Assignment

WITH 表达式 SELECT

目标信号 <= 表达式1 WHEN 条件1

                     表达式2 WHEN 条件 2

                     表达式3 WHEN 条件 3

                     ......

                     表达式n WHEN 条件 n

                     表达式n+1 WHEN OTHERS;

 

5、参数传递语句(GENERIC

GENERIC用于不同层次设计模块之间信息的传递和参数的传递,令器件模块化和通用化。可用于位矢量的长度、数组的位长、器件的延时时间等参数的传递,必须是整数型,其它类型无法综合。

 

6、通用模块、元件调用语句(COMPONENT

COMPONENT语句指定了本结构中所调用的是哪一个模块,这些模块在元件库中。

格式:

COMPONENT       元件名                         --指定调用元件

GENERIC             说明;                         --被调用元件参数映射

PORT                   说明;                         --被调用元件端口映射

END COMPONENT

 

7、端口映射语句(PORT MAP

端口映射语句将现成元件的端口信号映射成高层次设计电路中的信号。

标号名: 元件名 PORT MAP (信号,...);

e.g

U1: and2 PORT MAP(d0, d1, U0);

 

8、生成语句(GENERATE

用来产生多个相同的结构和描述规则结构,如块矩阵,元件例化和进程。

标号: FOR 变量 IN 区间 GENERATE

       并行处理的生成语句

END GENERATE [标号名]

 

标号: IF 条件 GENERATE

       并行处理的生成语句

END GENERATE [标号名]

 




相关文章

相关软件