2VHDL设计初步1_第1页
2VHDL设计初步1_第2页
2VHDL设计初步1_第3页
2VHDL设计初步1_第4页
2VHDL设计初步1_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、硬件描述语言概述 4选1数据选择器vhdl描述 vhdl设计基本语法结构 寄存器描述及其vhdl语言现象 全加器vhdl设计 vhdl文本设计方法初步 quartusii工具软件使用l原理图输入与原理图输入与 hdl 文本输入设计的区别文本输入设计的区别 “ tell me what hardware you want and i will give it to you”2. hdl is what you write is what functional you get“ tell me how your circuit should behave and the hdl compiler

2、will give you the hardware that does the job” but the designer can not control how the circuit implementlhdl的种类的种类vhdl的含义的含义vhsic (very high speed integrated circuit)hardwaredescriptionlanguagevhdl发展历史发展历史l1981年年, 诞生于美国国防部赞助的研究计划,目的诞生于美国国防部赞助的研究计划,目的是为了把电子电路的设计以电子文档的方式保存下是为了把电子电路的设计以电子文档的方式保存下来;来;l1

3、9831985年年, ibm、ti等公司对其进行了细致开等公司对其进行了细致开发;发; l1987年底年底,vhdl被被ieee和美国国防部确认为标准和美国国防部确认为标准硬件描述语言硬件描述语言 ,即,即ieee-1076(简称(简称87版版) l1993年年,ieee对对vhdl进行了修订,公布了新版本进行了修订,公布了新版本的的vhdl,即,即ieee标准的标准的1076-1993(1164)版本)版本 l1996年年,ieee又推出又推出ieee-1076.3和和ieee-1076.4,以解决可综合以解决可综合vhdl描述在描述在 不同不同eda厂商之间的移厂商之间的移植问题,以及植问

4、题,以及asic/fpga的门级库描述问题。的门级库描述问题。vhdl特点特点l与其他的硬件描述语言相比,与其他的硬件描述语言相比,vhdl具有更强的行为具有更强的行为描述能力描述能力 lvhdl丰富的仿真语句和库函数,使得在设计的早期丰富的仿真语句和库函数,使得在设计的早期就能查验设计系统的功能可行性,随时可对设计进行就能查验设计系统的功能可行性,随时可对设计进行仿真模拟仿真模拟 lvhdl语句的行为描述能力和程序结构决定了他具有语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能支持大规模设计的分解和已有设计的再利用功能l对于用对于用vhdl完成的一个确定的设

5、计,可以利用完成的一个确定的设计,可以利用eda工具进行逻辑综合和优化,并自动的把工具进行逻辑综合和优化,并自动的把vhdl描述设描述设计转变成门级网表计转变成门级网表lvhdl对设计的描述具有相对独立性,设计者可以不对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计是什么,而进行独立的设计 一、一、4例例3library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_uns

6、igned.all;entity mux4 isport(sel: in std_logic_vector(1 downto 0); a, b, c, d:in std_logic; mux_out: out std_logic);end mux4;architecture example0 of mux4 isbegin process (sel, a, b, c, d) begin case sel is when 00 = mux_out mux_out mux_out mux_out mux_out = z; end case; end process;end example0; 1.

7、 vhdl程序有结构的,由三部分组成。程序有结构的,由三部分组成。2. 同一种功能模块可以由不同的语句来描述,同一种功能模块可以由不同的语句来描述,而且描述的模块功能可大可小(可编程期间而且描述的模块功能可大可小(可编程期间的优势所在)。的优势所在)。3. 程序中有些字词可以自行修改,有些是固定程序中有些字词可以自行修改,有些是固定不变的。不变的。 用一个用一个vhdl程序来描程序来描述一个模块电路。述一个模块电路。电路电路模型模型in1inmoutnout11. vhdl程序的基本结构程序的基本结构luse library(库)(库) 用来说明电路模型需要使用的标准库用来说明电路模型需要使用

8、的标准库lentity(实体实体)用来说明电路模型的端口构成和信号属性用来说明电路模型的端口构成和信号属性larchitecture(构造体构造体)用一些语句来描述电路模型的功能用一些语句来描述电路模型的功能引用库引用库实体实体结构体结构体architecture logic of mux4_1 isbegin with s select x =a when “00”, b when “01”, c when “10”, d when others;end logic;l类似一个类似一个“黑盒黑盒”,实,实体描述了体描述了“黑盒黑盒”的输的输入输出口构成和信号属入输出口构成和信号属性性enti

9、ty mux4_1 isport(s: in std_logic_vector(1 downto 0); a, b, c, d:in std_logic; x: out std_logic);end mux4_1;包含三条语句。包含三条语句。entity mux4_1 is entity、is是关键字。是关键字。mux4_1为实体名,由设为实体名,由设计者自定,表达电路模计者自定,表达电路模型的名字,型的名字,port()端口说明语句端口说明语句port(s: in. ); 描述电路模型端口及端口信号。描述电路模型端口及端口信号。 port信息一般有信息一般有 name(端口信号名)(端口信号

10、名),mode(端(端口模式)口模式)和和type(端口信号数据类型)(端口信号数据类型)。entity mux4_1 isport(s: in std_logic_vector(1 downto 0); a, b, c, d:in std_logic; x: out std_logic);end mux4_1; port(name1:mode type ; name2:mode type; ); mode(端口模式)(端口模式)in:数据只能从端口流入实体数据只能从端口流入实体out:数据只能从端口流出实体数据只能从端口流出实体inout:数据从端口流入或流出实体数据从端口流入或流出实体bu

11、ffer:数据从端口流出实体,同时可被内部反馈数据从端口流出实体,同时可被内部反馈entity port(name1:mode type ; name2:mode type; );type(端口信号数据类型)(端口信号数据类型)lvhdl规定:任何数据对象必须严格限定其取值范围。即规定:任何数据对象必须严格限定其取值范围。即对其传输的信号或存储的数据的类型做明确界定。对其传输的信号或存储的数据的类型做明确界定。l有有bit :位类型;:位类型; boolean:布尔类型;:布尔类型; integer:整型;整型; std_logic:标准逻辑位,:标准逻辑位,std_logic_vector:

12、标准逻辑矢量等。:标准逻辑矢量等。 port(name1:mode type ; name2:mode type; );实体结束语句:实体结束语句: end mux4_1;entity mux4_1 isport(s: in std_logic_vector(1 downto 0); a, b, c, d:in std_logic; x: out std_logic);end mux4_1;my_designd11:0oeclkad11:0a11:0intas编写编写 包含以下内容的实体代码包含以下内容的实体代码端口端口 d 为为12位输入总线位输入总线 端口端口 oe 和和 clk 都是都是

13、1位输入位输入端口端口 ad 为为 12位双向总线位双向总线端口端口 a 为为12位输出总线位输出总线端口端口 int 是是1位输出位输出端口端口 as 是一位输出同时被用作内部是一位输出同时被用作内部反馈反馈entity my_design is port (d: in std_logic_vector(11 downto 0);oe,clk:in std_logic;ad: inout std_logic_vector(11 downto 0);a: out std_logic_vector(11 downto 0);int: out std_logic;as: buffer std_lo

14、gic);end my_design;my_designd11:0oeclkad11:0a11:0intasl用来描述实体的内部结构和逻辑功能用来描述实体的内部结构和逻辑功能l每一个构造体必须有一个实体(每一个构造体必须有一个实体(entity)与它相)与它相对应,所以两者一般成对出现对应,所以两者一般成对出现l一个实体(一个实体(entity)可以有多个构造体)可以有多个构造体l构造体的运行是并发的构造体的运行是并发的architecture logic of mux4_1 isbegin with s select x =a when “00”, b when “01”, c when “

15、10”, d when others;end logic; 结构体名结构体名实体名实体名说明语句说明语句 功能描述语句功能描述语句结构体名结构体名;architecture logic of mux4_1 isbegin with s select x =a when “00”, b when “01”, c when “10”, d when others;end logic;v 用来存储预先完成的程序包和数据集合体的仓库用来存储预先完成的程序包和数据集合体的仓库 v 在在vhdl设计中若使用库中内容,必须在该设计的设计中若使用库中内容,必须在该设计的实体前使用库语句和实体前使用库语句和us

16、e语句语句v : library 库名;库名; use 库名库名.程序包名程序包名. all; use 库名库名.程序包名程序包名. 项目名项目名;l ieee库是库是vhdl设计中最常见的库,设计中最常见的库,包含包含ieee标准程序标准程序包和一些支持工业包和一些支持工业标准的程序包标准的程序包例例1:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity test isport( a,b,c : in bit; d,e: out

17、 bit );end test;abcdearchitecture a of test isbegind = a and b;e = not c;end a;abcde bit :位类型,其值只能为:位类型,其值只能为 0或或 1例:例:signal a: bit;(;( a = 1 ) bit_vector :位矢量类型,包含一组位类型:位矢量类型,包含一组位类型例:例:signal a: bit_vector (7 downto 0) ( a = “00000001” 、 a = a + 1)std_logic:标准逻辑:标准逻辑std_logic_vector:标准逻辑矢量:标准逻辑矢量

18、他们是数字电路设计的工业标准逻辑类型,有他们是数字电路设计的工业标准逻辑类型,有9种取值。种取值。若电路中有三态逻辑若电路中有三态逻辑(z) 必须用必须用std_logic 和和 std_logic _vector。要使用这种类型代码中必须申要使用这种类型代码中必须申明库和程序包说明语句明库和程序包说明语句library ieee; use ieee.std_logic_1164.all;x = d0 when (s = “00”) else d1 when (s = “01”) else d2 when (s = “10”) else d3 ;x = d0表示输入端口表示输入端口d0的数据向

19、输出端口的数据向输出端口x传输,传输,也叫也叫d0向向 x赋值。表示电路内部连线或端口,有传赋值。表示电路内部连线或端口,有传输延迟。输延迟。when (s = “00”)判断的条件,通过测定判断的条件,通过测定s = “00”的比的比较结果确定信号的流向较结果确定信号的流向 ,“ =”为数据比较符号。为数据比较符号。比较运算符还有比较运算符还有“/=”、“=”、“”。 architecture a of test isbegind = a and b;e = not c;end a;abcdeand、 not是逻辑是逻辑操作符号。操作符号。vhdl提供提供7种逻种逻辑操作符。辑操作符。例例1

20、 :architecture a of test isbegind = a and b;e = not(c and a);end a;and, or, not, xor, xnor, nand例例2:architecture a of test isbegin x = d0 when (s =“00”) else d1 when (s =“01”) else d2 when (s =“10”) else d3 ;end a; x = d0 when (s =“00”) else d1 when (s =“01”) else d2 when (s =“10”) else d3 ;v根据指定条件对

21、信号赋值,条件可以为任意逻根据指定条件对信号赋值,条件可以为任意逻辑表达式。辑表达式。v根据条件出现的先后次序,根据条件出现的先后次序,else子句有优先子句有优先权权(按优先顺序逐条测试条件按优先顺序逐条测试条件)v最后一个最后一个 else子句隐含了所有未列出的条件子句隐含了所有未列出的条件v每一子句结尾没有标点,只有最后一句有每一子句结尾没有标点,只有最后一句有“;”例例3:architecture logic of mux4_1 isbegin with s select x = a when “00”, b when “01”, c when “10”, d when others;

22、end logic;v 所有的所有的“when”子句必须是互斥的子句必须是互斥的v 一般用一般用“when others”来处理未考虑到的情况来处理未考虑到的情况v 每一子句结尾是逗号,最后一句是分号每一子句结尾是逗号,最后一句是分号withwith s s selectselect x = a x = a whenwhen ”000” ”000” “001” “001” “010”, “010”, b b whenwhen “101” “101” “111”, “111”, c c when otherswhen others; ;en a2 a1 a0y7 y6 y5 y4 y3 y2 y

23、1 y00 x x x 0 0 0 0 0 0 0 01 0 0 00 0 0 0 0 0 0 11 0 0 10 0 0 0 0 0 1 01 0 1 00 0 0 0 0 1 0 01 0 1 10 0 0 0 1 0 0 01 1 0 00 0 0 1 0 0 0 0 “”sel为内部连接信号,必须在结为内部连接信号,必须在结构体说明区域先说明后才能在结构体中使用。构体说明区域先说明后才能在结构体中使用。( begin ) sel = en & a; with sel select yz z z z z = 0; end case;end process case_label; x= (

24、e and y) or (f and z)end logic;v进程内部输入信号的改变,都将启动进程,执行进进程内部输入信号的改变,都将启动进程,执行进程内相应顺序语句。程内相应顺序语句。v一些一些vhdlvhdl综合器,综合后,对应进程的硬件系统对综合器,综合后,对应进程的硬件系统对进程中的所有输入的信号都是敏感的,不论在源程进程中的所有输入的信号都是敏感的,不论在源程序的进程中是否把所有的输入信号都列入敏感表。序的进程中是否把所有的输入信号都列入敏感表。v为了使软件仿真与综合后的硬件仿真对应起来,应为了使软件仿真与综合后的硬件仿真对应起来,应当将进程中的所有输人信号都列入敏感表中。当将进程

25、中的所有输人信号都列入敏感表中。v每一条顺序语句的执行每一条顺序语句的执行( (指仿真执行指仿真执行) )顺序是与它顺序是与它们的书写顺序基本一致的。反映了信号操作的优们的书写顺序基本一致的。反映了信号操作的优先级。先级。v顺序语句包括:顺序赋值语句、顺序语句包括:顺序赋值语句、流程控制语句流程控制语句、等待语句、子程序调用语句、返回语句、空操作等待语句、子程序调用语句、返回语句、空操作语句语句条件式条件式顺序语句顺序语句v根据条件式产生的判断结果根据条件式产生的判断结果truetrue或或falsefalse,有条件,有条件地选择执行其后的顺序语句。地选择执行其后的顺序语句。v如果如果clk

26、clk没有发生变化,则跳过该没有发生变化,则跳过该ifif语句。语句。那么那么q ?q ?dclkqdq高电平敏感的高电平敏感的d锁存器;锁存器;低电平敏感:低电平敏感:clk=0一输入值输入值半加器(半加器(a+ba+b)半减器(半减器(a ab b)a ab bsumsumcarrycarrydifferencedifferenceborrowborrow0 00 00 00 00 00 00 01 11 10 01 11 11 10 01 10 01 10 01 11 10 01 10 00 0entity test isport(a,b: in std_logic;carry,sum

27、: out std_logic;borrow :out std_logic;difference :out std_logic);end test;architecture a of test isbeginhalf_adder : blockbeginsum = a xor b; carry = a and b;end block half_adder;half_subtractor: blockbegindifference = a xor b;borrow = not a and b;end block half_subtractor;end a;v用于实现用于实现vhdlvhdl中的模

28、块化设计的又一个方式中的模块化设计的又一个方式v可以把多个并行语句打包,形成构造体中的一可以把多个并行语句打包,形成构造体中的一个子模块个子模块块标号块标号: block begin end block 块标号块标号 ;entity isportend architecture of is signal x : begina ab bsumsumcarrycarry0 00 00 00 00 01 11 10 01 10 01 10 01 11 10 01 1选择信号选择信号不同选择值不同选择值不同流向不同流向a bscycentityentity adder_4adder_4 isispor

29、tport( a ,b: in std_logic_vector(3 downto 0);( a ,b: in std_logic_vector(3 downto 0); s s: out std_logic_vector(3 downto 0);: out std_logic_vector(3 downto 0); c : c : inoutinoutstd_logic_vector(4 downto 0) );std_logic_vector(4 downto 0) );endend adder_4; adder_4;fulladderfulladderfulladderfulladder

30、s(3)s(2)s(1)s(0)c(4)c(3)c(2)c(1)c(0)a(3) b(3)a(2) b(2)a(1) b(1)a(0) b(0)abcscyabcscyabcscyabcscyarchitecturearchitecture a a ofof adder_4 adder_4 isis componentcomponent fulladder fulladder portport ( a ( a : in : instd_logic;std_logic; b b : in : instd_logic;std_logic; c c : in : instd_logic;std_lo

31、gic; cy : out cy : out std_logic;std_logic; s s : out : out std_logic );std_logic ); end component end component ; ;beginbegin元件说明部分元件说明部分保留字保留字元件名称元件名称端口端口说明说明a bscyc例化名例化名元件映射部分元件映射部分元件名元件名保留字保留字fulladderfulladderfulladderfulladders(3)s(2)s(1)s(0)c(4)c(3)c(2)c(1)c(0)a(3) b(3)a(2) b(2)a(1) b(1)a(0)

32、 b(0)abcscyabcscyabcscyabcscyfulladderfulladderfulladderfulladders(3)s(2)s(1)s(0)c(4)c(3)c(2)c(1)c(0)a(3) b(3)a(2) b(2)a(1) b(1)a(0) b(0)abcscyabcscyabcscyabcscy名字关联名字关联位置关联位置关联v元件例化语句元件例化语句是在是在vhdlvhdl设计设计中实现中实现层次化层次化设计设计的重要途的重要途径。径。v可以在当前的可以在当前的vhdlvhdl模块设计模块设计中将现成的硬中将现成的硬件描述语言设件描述语言设计的实体作为计的实体作为元件引用。元件引用。entityentity eqcomp4 is eqcomp4 is portpor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论