1、 本文由 fybysys 贡献pdf 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。VLSI 电路设计VHDL 语言基础2011.3主要内容硬件描述语言简介 VHDL 基本结构 VHDL 数据和表达式 VHDL 描述语句 系统仿真 综合硬件描述语言 HDLHardware Description Language广义地说,描述电子实体的语言:逻辑图,电路 图。硬件描述语言能在高层设计阶段描述硬件。起源:大规模电路的出现,使得逻辑图、布尔方程不太适用, 需要在更高层次上描述系统; 出现多种 HDL 语言,为便于信息交换和维护,出 现工业标准。 ? 分类:VH
2、DL、Verilog HDL 等。硬件描述语言 HDLHDL 语言的特点用 HDL 语言设计电路能够获得非常抽象的描述 用 HDL 描述电路设计,在设计的前期就可以完成 电路功能级的验证 用 HDL 设计电路类似于计算机编程。带有注解的 文字描述更有利于电路的开发与调试 能提供 HDL 模拟器的公司:Cadence、 Altera、 Mentor Graphics、Synopsys 等大型 EDA 公司和专 门公司学习 HDL 的几点重要提示了解 HDL 的可综合性问题 HDL 有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语 法和编程方法都可以使用。 但如果我们的程序是用
3、于硬件实现(例如:用于 FPGA 设计) ,那么我们就必须保证程序“可综合” (程序的功能可以用硬件电路实现) 。 不可综合的 HDL 语句在软件综合时将被忽略或者报错。 我们应当牢记一点:“所有的 HDL 描述都可以用于仿真,但不是所有的 HDL 描述都能用硬件实现。 ” 用硬件电路设计思想来编写 HDL 学好 HDL 的关键是充分理解 HDL 语句和硬件电路的关系。 编写 HDL,就是在描述一个 电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解, 而不能用纯软件 的设计思路来编写硬件描述语言。 要做到这一点,需要我们多实践,多思考,多总结。 语法掌握贵在精,不在多 30%的基
4、本 HDL 语句就可以完成 95%以上的电路设计,很多生僻的语句并不能被所有的 综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他 人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新 语法要有用的多。VHDL vs. Verilog HDL VHDL 和 Verilog HDL 都是用于逻辑设计的硬件描述语言并且都已 成为 IEEE 标准。VHDL 是在 1987 年成为 IEEE 标准,Verilog HDL 则 在 1995 年才正式成为 IEEE 标准。 VHDL 和Verilog HDL 共同的特点:能形式化地抽象表示电路的行为和
5、结构 支持逻辑设计中层次与范围的描述,可借用高级语言的精巧结构 来简化电路行为的描述 具有电路仿真与验证机制以保证设计的正确性 支持电路描述由高层次到低层次的综合转换 硬件描述与实现工艺无关,有关工艺参数可通过语言提供的属性 包括进去便于文档管理,易于理解和设计重用。VHDL vs. Verilog HDLVerilog HDL 和 VHDL 又各有其自己的特点: Verilog HDL 拥有更广泛的设计群体,成熟的资源也远比 VHDL 丰富 Verilog HDL 是一种非常容易掌握的硬件描述语言(类 C 语 言) ,而掌握 VHDL 设计技术就相对比较困难(语法要求严格) 一般认为 Ver
6、ilog HDL 在系统级抽象方面比 VHDL 略差一些 而在门级开关电路描述方面比 VHDL 强得多 大学、研究机构更多使用 VHDL,而工业界更多使用 Verilog HDLVHDL vs. Verilog HDL五年前,设计者使用 Verilog 和 VHDL 的情况 美国:Verilog: 60%, VHDL: 40% 台湾:Verilog: 50%, VHDL: 50%目前,设计者使用 Verilog 和 VHDL 的情况 美国、台湾:Verilog: 80%, VHDL: 20%两者的区别 VHDL 侧重于系统级描述,从而更多的为系统级设计人员所采用 Verilog 侧重于电路级描
7、述,从而更多的为电路级设计人员所采用VHDL vs. Verilog HDLVHDL 简介1980 由美国国防部(DOD)推动作为 VHSIC 计划的一部分; 1983 IBM、Ti 和Intermetrics 公司的工程师开发一种新的基于语言 的设计方法的规范; 1985 VHDL 的第一个公开 Version 7.2; 1987 VHDL 成为标准,IEEE 1076-1987; VHDL 标准程序包,IEEE 1164; 美国国防部要求所有的电子设计使用 VHDL 描述,并决定在 F-22 战斗 机项目中使用VHDL。 1994 发布 VHDL 增强标准,IEEE 1076-1993;
8、1996 完全符合 IEEE 107693 的VHDL 商业仿真器和综合器发布;用 于综合工具的程序包 IEEE 1076.3;IEEE 1076.4(VITAL),用于 ASIC 和 FPGA 建库; 1997 VHDL-AMS(IEEE 1076.1)发布 可以在一种语言下对数字、模拟和混合信号系统进行描述和仿真;VHSIC (Very High Speed Integrated Circuit)计划VHDL 是美国国防部在二十世纪 70 年代末和 80 年代初提出的 VHSIC (Very High Speed Integrated Circuit)计划的产物。 VHSIC 计划的目标当
9、时是为下一代集成电路的生产,推出在 IC 设 计与制造应达到的工艺极限(1Mcmos、1 万门和 40MHz)。 工艺方面的目标实现以后,但当时的工具很难完成 10 万门级的设 计。由于工具差不多是建立在门级基础之上,完成 10 万门级设 计,必须制订一项新的 HDL 的描述方法。 VHSIC 计划和同期的 ARPAR(先进的计算机体系结构)计划,成 为了后来信息高速公路计划的基础。VHDL 基本结构VHDL 语言五大要素实体Entity 结构体Architecture 配置Configuration 包集合Package/Package Body: 库Library:VHDL 基本结构示意V
10、HDL 大小写不敏感-Filename : eqcomp4.vhd -Author : Hu Xiaoling BJUT 文件名和实体名一致 -Data : 04/07 -Version : 0.1 -Abstract : This file eqcomp4 is a four bit equality comparator. LIBIARY IEEE; USE IEEE.std_logic_1164.all; ENTITY eqcomp4 IS PORT(a, b:in std_logic_vector(3 downto 0); 每行;结尾 equal :out std_logic); EN
11、D eqcomp4; 关键字 END 后跟实体名 ARCHITECTURE dataflow OF eqcomp4 IS BEGIN 关键字 BEGIN equal = AND OR NOT NAND NOR XOR XNORVHDL 描述语句顺序语句变量与信号赋值语句VHDL 有两种赋值符号: (1) “:=”为立即赋值符,将右边表达式的值立即赋给左 边的对象。 (2) “ 顺序处理语句1; WHEN 表达式值 2 = 顺序处理语句 2; WHEN OTHERS = 顺序处理语句 3; END CASE; 注意:各表达式不能有重复,OTHERS 只能放在所有分支之后。若 CASE 语句中没有
12、 OTHERS 分支,则各表达式分支应涵盖表 达式的所有可能值。顺序语句例:YesCNT=8?NoCNT0CNTCNT+1CASE cnt IS WHEN 8= cnt := 0; WHEN OTHERS = cnt := cnt+1; END CASECASE 语句中的 WHEN 选项可以是一个范围。VHDL 描述语句顺序语句LOOP 语句FOR 循环变量形成的 LOOP 语句的格式为: 标号:FOR 循环变量 IN 离散范围 LOOP END LOOP 标号; WHILE 条件下的 LOOP 语句格式为: 标号:WHILE 条件 LOOP END LOOP 标号; 在 LOOP 语句中可以
13、安排一个 EXIT 退出循环。VHDL 描述语句并行语句并行信号赋值语句并行信号赋值语句代表着对该信号赋值得等价的进程 语句。它有两种形式: 条件型信号赋值语句条件型信号赋值语句的格式为: 目标信号名 WAIT UNTIL WAIT FOR WAIT; -无限等待,需谨慎使用进程语句实例Architecture behavioral of eqcomp4 is begin comp: process (a, b) begin if a=b then equal IS PORT ( : ; : ; )END COMPONENT; 元件配置:用于映射端口: PORT MAP( = ; ; = ;)
14、元件的例化元件例化格式标号名:元件名 PORT MAP (信号 1,信号 2,) 位置映射 PORT MAP 映射关系有两类 名称映射 例: port ( A, B : in std_logic; Z : out std_logic); U1: nand PORT MAP(d0,sel,aa); U2:nand PORT MAP (A = d0,B = sel,Z= aa);元件例化语句说明低层次元件嵌入到高一层的设计中,并把相应端口正确 连接起来,就是元件例化语句的功能。体现层次化设计、 模块化设计思想; 应用广泛,避免大量重复工作; 用Component 语句指明结构体所要调用的元件、单元
15、或 模块; 用 Port Map 语句进行元件端口信号映射(包括位置映射 和名称映射) ; 元件描述:用于声明端口类型和数据类型元件调用与例化实例例:图 a 中所示的全加器,x、y、cin 依次表示被加数加数、进位输入;sum 和 cout 分别为和数与进位输入。图 b 为一种实现方案。x y cin全加器 图 acout sumx y cina半加器b图 b半加器c1 sumcoutLibrary IEEE; Use IEEE.std_logic_1164.all; Entity half_adder IS port(x,y: in std_logic; sum,cout: out std_
16、logic); End half_adder; Architecture half_adder of half_adder IS Begin End half_adder;Library IEEE; Use IEEE.std_logic_1164.all; Entity adder IS port(x,y,cin: in std_logic; sum,cout: out std_logic); End adder; Architecture adder of adder IS component half_adder -元件调用语句 port(x,y: in std_logic; sum,co
17、ut: out std_logic); end component; signal x,y,cin,sum,cout,a,b,c: std_logic; Begin u0: half_adder port map (x,y, b,a); - 被测元件作为实例放入测试基准中, 位置关联的实例语句 u1: half_adder port map (b,cin,sum,c ); cout=a or c; End adder;VHDL 程序结构ENTITY (实体) ARCHITECTURE 1 (结构体 1) PROCESS (进程) ARCHITECTURE N (结构体 N) BLOCK (块结
18、构)SUBPROGRAMES (子程序)PROCEDURE (过程)FUNCTION (函数)如何确定我们用 VHDL 语言 描述的数字系统能够符合我 们的设计要求呢?VHDL 系统仿真(Simulation)我们将用 VHDL 描述的电路系统看作一个黑匣子, 给它一定的输入(激励或者测试向量),它就会按照一 定的算法给出一组输出信号(响应) 。检查系统输出结 果是否跟我们预期的结果一样,就可以验证系统的 VHDL 描述是否正确。under test systemtestbenchverify系统仿真模式VHDL 系统仿真(Simulation)系统仿真可分为三个阶段: 系统行为仿真:对系统的
19、 VHDL 描述的系统行为 进行验证。不带任何时延信息。 门级仿真:对 VHDL 描述的数字系统进行逻辑综 合和优化以后生成的网表文件进行仿真。包含库文件中 的单元延时信息。 后仿真:主要指布局布线并且提取寄生参数以后 进行的系统功能验证,这时的仿真带有所有延时信息, 包括连线上的寄生电容电阻带来的时延等。设计的测试与验证一般需要编写测试文件对设计进行仿真测试,称为 testbench Testbench 一般采用行为级描述,产生一定的输入激 励,得到设计的输出响应,并检查输出结果的正确性 在规范的模块设计中,每一个模块都需要编写独立的 测试文件对模块进行充分的测试 注意选择合适的输入激励,保
20、证测试能够覆盖典型输 入和特殊输入VHDL 激励的实现VHDL 产生激励信号: -VHDL 产生时钟信号 SIGNAL clk: std_logic:=0; -clk时钟信号说明,初始值为0 clk= NOT clk AFTER 50 ns; -每过 50ns clk 信号翻转一次clk100nsVHDL 激励的实现-VHDL 产生激励 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY stim IS END stim; ARCHITECTURE behav OF stim IS signal x, y, c_in: std_logic; BE
21、GIN x=0, 1 AFTER 200 ns, 0 AFTER 400 ns, 1 AFTER 450 ns, 0 AFTER 500 ns, 1 AFTER 550 ns, 0 AFTER 600 ns, 1 AFTER 650 ns, 0 AFTER 700 ns; y=0, 1 AFTER 100 ns, 0 AFTER 200 ns, 1 AFTER 300 ns, 0 AFTER 450 ns, 1 AFTER 550 ns, 0 AFTER 650 ns; c_in=0, 1 AFTER 50 ns, 0 AFTER 100 ns, 1 AFTER 150 ns; END beh
22、av;VHDL 激励的实现测试程序的设计方法被测实体引入部分; 被测实体仿真信号输入部分; 被测实体工作状态激活部分; 被测实体信号输出部分VHDL 测试模块的基本结构库引用LIBRARY IEEE USE IEEE.std_logic_1164.ALL USE IEEE.std_logic_unsigne.ALL ENTITY 测试实体名 END 测试实体名 IS实体说明ARCHITECTURE 结构体名 IS 测试实体名COMPONENT 元件名 PORT () END COMPONENT Signal BEGIN U0:元件名 PORT MAP () 添加测试激励 END 结构体名结构体
23、说明二输入与非门 VHDL 测试基准 Library IEEE; Use IEEE.std_logic_1164.all; Entity tb_nand2 IS - 测试基准实体名 End tb_nand2; - 测试基准不需要输入/输出信号 Architecture bench of tb_nand2 IS component nand2 -元件调用语句 port ( A, B : in std_logic; Z : out std_logic); end component; signal A, B, Z: std_logic; Begin u0: nand2 port map (A, B
24、, Z); - 被测元件作为实例放入测试基准中, 位置关联的实例语句 A=0, 1 after 1000 ns; B=0, 1 after 500 ns, 0 after 1000 ns, 1 after 1500 ns; End bench;VHDL 测试VHDL 测试可分为 完全测试 不完全测试综合概念:从设计的高层次向低层次转换的过程,是一种 自动设计的过程;是一种专家系统; 分类: 系统级综合; 高级综合; RTL 级综合: 行为综合;(软件:Synopsys DC 等) 逻辑综合 物理综合(逻辑图或电路图到版图,自动 P&R)综合设计程序 综合工具 门级网表约束条件工 艺 库综合综合过程: 1. 设计描述: VHDL、Verilog 2. 设计编译 3. 逻辑化简和优化:完成逻辑结构的生成与优化,满 足系统逻辑功能的要求。 4. 利用给定的逻辑单元库进行工艺映射,对生成的逻 辑网络进行元件配置,进而估算速度、面积、功耗, 进行逻辑结构的性能优化; 优化目标:面积、速度、功耗、可测试性 5. 得到逻辑网表;1