超过460,000+ 应用技术资源下载
pdf

VHDL语言基础

  • 1星
  • 日期: 2015-08-07
  • 大小: 378.21KB
  • 所需积分:2分
  • 下载次数:3
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 硬件设计语言

用于设计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; c: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 ) 结构体( 说明语句 功能描述语句 块语句(BLOCK) 进程语句(PROCESS) 信号赋值语句 子程序调用语句 元件例化语句 PORT (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 语句那样并发执行。一个结构体中可以有多个并行运行的进程结构, 每一个进程内部是由一系列顺序语句来构成的。 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 过程语句部分
更多简介内容

推荐帖子

要求写一篇关于#VHDL语言程序设计中INOUT端口的使用与实例分析#的论文
论文题目:VHDL语言程序设计中INOUT端口的使用与实例分析论文要求:论文的重点是要讨论如何正确使用INOUT端口,可以结合QuartusⅡ软件的综合、仿真结果,举例分析常见错误用法导致的结果与设计意图的偏离,也可围绕题意自由发挥;    真心不会 网上可参考的论文也有限且看不懂   求大神出几个仿真的程序啊啊啊啊啊   跪求 在线等。 [ 本帖最后由 柚子999 于 2013-6-23 15
柚子999 FPGA/CPLD
【藏书阁】VHDL语言100例详解
  内容简介     本书通过100个实例,详细介绍硬件描述语言VHDL的各种语法现象及其在专用集成电路(ASIC)设计描述中的使用方法。书后附有光盘,其中包括北京理工大学ASIC研究所自行研制的有自主版权的Talent高层次自动设计系统的多媒体演示软件和VHDL模拟器(学习版)及100例的描述与模拟测试向量文件,读者可直接在微机上运行这些模拟题目,借以更深入地掌握VHDL语言及其使用方法。
wzt FPGA/CPLD
请教:vhdl语言的应用,希望高手解答
题目:以余3码设计一模43的可逆计数器,并将结果以十进制输出。(设工作频率为20MHz)   本人编了如下代码,想用QL,QH分别输出计数的高位和低位,可是看仿真波形时,发现是十进制计数的,初始值也不是复位后的0011,变为0000开始计数,这明显不符合要求,不知道自己思路哪地方有问题?希望高人指点一下,谢谢! LIBRARY IEEE; USE IEEE.std_logic_1164.AL
ye12 嵌入式系统编程
VHDL语言实现数据选择器
SIG_DOUT <= SIG_DINS(SIG_IDX);                --多路输入,单路输出  SIG_DOUTS(SIG_IDX) <= SIG_DIN;                --单路输入,多路输出   CASE   State  IS   WHEN  IDLE=>       ---- WHEN  Delya=>   -- WHEN  OTHE
eeleader FPGA/CPLD
VHDL语言100例
不错的资料哦 VHDL语言100例 第1例 带控制端口的加法器 第2例 无控制端口的加法器 第3例 乘法器 第4例 比较器 第5例 二路选择器 第6例 寄存器 第7例 移位寄存器 第8例 综合单元库 第9例 七值逻辑与基本数据类型 第10例 函数 第11例 七值逻辑线或分辨函数 第12例 转换函数 第13例 左移函数 第14例 七值逻辑程序包 第15例 四输入多路器
马子007 FPGA/CPLD
请问从事硬件设计(非电子设计,就是主要不是搞vlsi),应该有什么样的基础,请详细说明
我是一个初学者,我的师兄在大唐电信工作  他本科是学计算机科学与技术的 他研究生学习的是计算机控制技术   他做过汽车电子的项目 他做过嵌入式系统 他很忙 联系不上他 所以问大家 作为硬件工程师  需要那些基础(必要的,比如语文也很重要,您就不必说了) 您说的越详细越好 比如:c 很重要   c++很重要  vhdl很重要  lattice很重要    propcb很重要  p
pipihaoyun 嵌入式系统编程

评论


点评赢奖
+报名

即日起—5月15日,点评资料2次以上,即可参加精彩抽奖!点击查看活动详情

登录/注册

意见反馈

求资源

回顶部
电源设计技术资料
点击获取

TI最新应用解决方案

工业电子 汽车电子 个人电子

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })