热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

VHDL语言基础

  • 1星
  • 2015-08-07
  • 378.21KB
  • 需要2积分
  • 5次下载
标签: 硬件设计语言

硬件设计语言

用于设计FPGA必不可少的硬件设计语言

文档内容节选

EDA 技术技术技术技术 VHDL 语言基础 语言基础 语言基础语言基础 概述 1 常见英文缩写解释按字母顺序排列: ASIC Application Specific Integrated Circuit 专用 IC CPLD Complex Programmable Logic Device 复杂可编程逻辑器件 EDA Electronic Design Automation 电子设计自动化 FPGA Field Programmable Gate Array 现场可编程门阵列 GAL Generic Array Logic 通用阵列逻辑 HDL Hardware Description Language 硬件描述语言 IP Intelligent Property 智能模块 PAL Programmable Array Logic 可编程阵列逻辑 RTL Register Transfer Lev......

EDA
技术
――VHDL 语言基础
――
概述
1.
常见英文缩写解释(按字母顺序排列)
ASIC: Application Specific Integrated Circuit.
专用
IC
CPLD: Complex Programmable Logic Device.
复杂可编程逻辑器件
EDA:
Electronic Design Automation.
电子设计自动化
FPGA: Field Programmable Gate Array.
现场可编程门阵列
GAL:
Generic Array Logic.
通用阵列逻辑
HDL:
Hardware Description Language.
硬件描述语言
IP:
Intelligent Property.
智½模块
PAL:
Programmable Array Logic.
可编程阵列逻辑
寄存器传输级(描述)
RTL:
Register Transfer Level.
SOC:
System On a Chip.
片上系统
SLIC:
System Level IC.
系统级
IC
VHDL: Very high speed integrated circuit Hardware Description Language.
超高速集成电路硬件描述语言
第一章
VHDL
基本结构
内容:1.1
实½
1.2
结构½
1.3
块、子程序和进程
1.4
库和程序包
1.5
配½
一个完整的
VHDL
程序,通常要求最½½为
VHDL
综合器所支持,并½½
为一个独立的设计单元,
即以元件的½式存在的
VHDL
程序。
VHDL
程序中,
通 常 包 含 实 ½ (
ENTITY
)、 结 构 ½ (
ARCHITECTURE
)、 配 ½
(CONFIGURATION)
、包集合(PACKAGE)和库(LIBRARY)5 个部分。其
中实½和结构½这两个基本结构是必需的,他们可以构成最简单的
VHDL
程序。
1.1
实½
实½是
VHDL
语言源代码的基本单元,
实½说明是对所设计电路与外部电路
进行接口的描述,
它规定了设计单元的输入输出接口信号或引脚,
是设计实½对
外的一个通信界面。
实½语句结构如下:
ENTITY
实½名
IS
[GENERIC(类属表)
;]
[PORT(端口表)
;]
END ENTITY
实½名;
例:
ENTITY or2
IS
PORT(a,b:IN STD_LOGIC;
½:OUT
STD_LOGIC);
END ENTITY or2;
1.1.1
类属参量(GENERIC)
类属参量是实½说明中的可选项,½½在端口说明之前,其一般格式为:
GENERIC [CONSTANT]
名字表:[IN] 子类型标识
[:=
静态表达式],…]
类属参量是一种端口界面常数,常用来规定端口的大小、
实½中子元件的数
目及实½的定时特性等。
设计者可以从外面通过类属参量的重新设定而容易的改
变一个设计实½或一个元件的内部电路结构和规模。
例:
GENERIC
(trise,tfall:TIME:=1ns;
Addrwidth:INTEGER:=16);
PORT(a0, a1 : IN STD_LOGIC;
Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0);
这里类属参量中参数
trise
为上升沿½度,
tfall
为下降沿½度,
用于仿真模块的设
计;定义地址总线的½度为
Addrwidth
½,类属值
Addrwidth
的改变将½结构½
中所有相关的总线定义同时改变,由此½整个设计实½的硬件结构发生变化。
1.1.2
端口说明(PORT)
端口为所设计电路与外部电路连接通道的说明,
是对设计单元与外部接口的
描述,其功½相½电路图符号的外部引脚。端口可以被赋值,也可以½做逻辑变
量用在逻辑表达式中。
其一般书写格式为:
PORT
(端口名 :端口模式 数据类型;
……
端口名 :端口模式 数据类型)
其中端口名是设计者为实½的每一个对外通道所取的名字,
通常为英文字母加数
字。端口模式是指这些通道上的数据流动的方式,如输入或输出等。
端口模式有以下几种类型:
输入(IN) 输出(OUT) 双向模式(INOUT)
;缓冲(BUFFER)
。端口
模式可用图下说明,图中方框代表一个设计实½或模块。
IN
OUT
INOUT
BUFFER
从端口的名称、模式就½一目了然地指导信号的用途、性质、来源和去向。
1.2
结构½
结构½也叫构造½,结构½描述了所设计电路的结构、行为、元件及内部连
接关系,
也就是说它定义了电路的逻辑功½。结构½对其逻辑功½的描述可用以
下三种方式,即行为描述(设计单元的数学模型描述)
、寄存器传输描述(数据
流描述)和结构描述(逻辑元件连接描述)
结构½一般由两大部分组成:
1.对数据类型、常数、信号、子程序和元件等因素进行说明、定义的部分;
2.描述实½的逻辑行为、以各种不同的描述风格表达的功½描述语句,包括各
种顺序语句和并行语句。
结构½的语句格式为:
ARCHITECTURE
结构½名
OF
实½名
IS
[定义语句]
BEGIN
[功½描述语句]
END
结构½名;
1.2.1
结构½名
结构½名由设计者自行定义,通常用
dataflow(数据流)
、behave(行为)
structural(结构)½名。这 3
个名称½现了
3
种不同结构½的描述方式,½得阅
VHDL
语言程序时,½直接了解设计者采用的描述方式。
1.2.2
结构½信号定义语句
结构½信号定义语句必须放在关键词
ARCHITECTURE
BEGIN
之间,用
常数、
数据类型、
元件、
½数和过程加以说明。
于对结构½内部将要½用的信号、
需要注意的是结构½定义的信号为该结构½的内部信号,
它只½用于这个结
构½中。
例:结构½的信号定义实例。
ARCHITECTURE rtl OF muj IS
SIGNAL s1:BIT;
SIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3);
……
BEGIN
……
END rtl;
1.2.3
结构½功½描述语句
结构½功½描述语句½于
BEGIN
END
之间,具½地描述了电路的行为、
功½或连接关系。
结构½的功½描述语句可以含有
5
种不同类型的并行语句,
下图所示。
图中
5
种功½描述语句的基本组成和功½分
别是:
ARCHITECTURE
块语句是由一系列并行语句构成的组合
½,它的功½是将结构½中的并行语句组成
一个或多个子模块,增加程序的可读性。
进程语句定义顺序语句模块,用以将从
外部获得的信号值或内部运算数据向其他信
号进行赋值。
信号赋值语句将设计实½内的处理结果
向定义的信号或界面端口进行赋值。
子程序调用语句可以调用进程或参数,
并将获得的结果赋值于信号。
元件例化语句对其他的设计成果做元件
调用说明,并将此元件的端口与其他元件、
信号或高层实½的界面端口进行连接。
各语句后面将介绍
例:
2
1
数据选择器
ENTTITY mux2 IS
句语化例件元
句语用调序程子
句语值赋号信
)SSECORP(句语程进
)KCOLB(句语块
句语述描½功
句语明说
½构结
(d0,d1:IN
BIT;
sel:IN BIT;
s:OUT BIT)
END mux2;
ARCHITECTURE dataflow OF mux2 IS
SIGNAL sig:BIT;
BEGIN
Sig <= (d0 AND sel) OR (NOT sel AND d1);
S<=sig;
END dataflow;
1.3
块、子程序和进程
1.3.1
块语句(BLOCK)
在较大规模的电子系统设计中,
传统的硬件电路设计通常包括一张系统总电
路原理图和若干张子原理图。在
VHDL
程序设计中,结构½是由多个
BLOCK
块构成的,如果将结构½比做总电路原理图,那么,每个
BLOCK
块则相½于一
张子原理图。
BLOCK
块语句的结构:
块标号:BLOCK
接口说明
类属说明
BEGIN
并行块语句
END BLOCK(块标号)
例:
B1: BLOCK
SIGNAL s1:BIT;
BEGIN
s1 <= a AND b;
B2: BLOCK
SIGNAL s2:BIT;
BEGIN
s2<= c AND d;
B3: BLOCK
BEGIN
Z <= s2;
END BLOCK B3;
END BLOCK
B2;
y<= s1;
END BLOCK
B1;
1.3.2
进程(PROCESS)
PROCESS
结构是最½½现
VHDL
语言特色的语句。与
BLOCK
语句一样,
利用
PROCESS
语句结构可以描述一个功½独立的电路。与
BLOCK
语句不同之
处是,在系统仿真时,PROCESS
结构中的语句是按顺序逐条向下执行的,而不
BLOCK
语句那样并发执行。一个结构½中可以有多个并行运行的进程结构,
每一个进程内部是由一系列顺序语句来构成的。
PORT
PROCESS
语句的结构
[进程标号] PROCESS [(敏感信号表)] [IS]
[进程说明语句]
BEGIN
顺序描述语句
END PROCESS [进程标号];
注意:在多个进程的结构½描述中,进程标号是区分各个进程的标志。½是进程
标号并不是必需的。单进程以
PROCESS
开始,以
END PROCESS
结束。
例:两输入或非门
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY nor2_v2 IS
PORT(a,b: IN STD_LOGIC;
y: OUT STD_LOGIC);
END nor2_v2;
ARCHITECTURE behave OF nor2_v2 IS
BEGIN
PROCESS (a,b)
VARIABLE comb : STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
comb := a & b;
CASE comb IS
WHEN "00"=> y <='1';
WHEN "01"=> y <='0';
WHEN "10"=> y <='0';
WHEN "11"=> y <='0';
WHEN OTHERS => y <='X';
END CASE;
END PROCESS;
END behave;
1.3.3
子程序(SUBPROGRAM)
VHDL
程序与其他½件语言程序中应用子程序的目的是相似的,
即½够更有
效地完成重复性的工½。子程序模块是利用顺序语句定义和完成算法的,
½子程
序不½像进程那样可以从本结构½的其他块或进程结构中读取信号值或向信号
赋值,只½通过子程序调用与子程序的界面端口进行通信。
子程序被调用时,首先要初始化,执行处理功½后,将处理结果传递给主程
序。子程序内部的值不½保持,子程序返回后才½被再次调用并初始化。
子程序有两种类型:过程(PROCEDURE)和½数(FUNCTION)
1.过程(PROCEDURE)
过程语句的书写格式为:
PROCEDURE
过程名(参数表)IS
[说明部分]
BEGIN
过程语句部分
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×