例试设计一个逻辑电路.ppt_第1页
例试设计一个逻辑电路.ppt_第2页
例试设计一个逻辑电路.ppt_第3页
例试设计一个逻辑电路.ppt_第4页
例试设计一个逻辑电路.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

例:试设计一个逻辑电路,X=xn-1xn-2x1x0是该电路得串行输入信号,Z为它的输出,表示X中包含的1个数。,对于这样一个看似十分简单的逻辑电路,却难以用状态表对它进行描述,对于这样一个n位的串行输入序列,将有2n种不同的组合,显然不能按当前已收到的序列来规定电路的状态。如果这样规定,则需要2n个状态;显然也不能按当前序列中已包含1的个数来规定状态,如果这样,则需要n+1个状态,状态表也将十分庞大。,5-3 硬件描述语言VHDL,即:,分析:,由电路功能直接导出状态表的方法并非对所有的电路设计都是适用的,但如果从为实现上述功能必须完成的操作出发,问题就可能很容易解决。,由此可见:,(1) 该电路为统计序列中含有的“1”的个数,必须包含有一个加1计数器。,(2) 仅当输入信号为1时才进行加1计数,所以必须还应有判别操作,要做的工作就是设计判别电路和计数器,并配置相应的控制电路使它们能协调地工作,以完成预定的功能。,算法设计的思想:是把系统应实现的逻辑功能看作是应完成的某种运算或操作,若这一运算或操作十分复杂,则可以把它分解成若干个子运算或子操作系统的算法描述的特征。,(1) 含有若干个子运算,实现对数据或信息的存储传输或处理。,(2) 具有相应的控制程序,控制各子运算的执行顺序。,在导出算法流图后,便可将电路划分成数据处理单元和控制单元。,硬件描述语言VHDL概述:,随着超大规模集成电路工艺的发展,待设计电路的规模越来越大,传统的手工艺已无发适应设计复杂数字系统的要求。然而超大规模集成电路的发展也推动了计算机技术和数字技术的发展,使人们有可能开发出功能强大的电子设计自动化(简称EDA)软件,从而改变了人们的设计思想和设计方法,实现设计自动化。,数字系统设计历来存在两个分支,即:系统硬件设计和系统软件设计,但是随着计算机技术的发展和硬件描述语言HDL的出现,使这种情况又有新的变化,数字系统的硬件结构及其行为完全可以用HDL语言来描述和生成,这样即使是软件设计人员也同样可以方便的借助HDL语言,设计出符合要求的硬件系统。,另外也为数字系统的硬件、软件协同设计打下了良好的基础,数字系统的硬件、软件设计可以在一开始就进行通盘考虑,进行早期仿真,这就大大提高了系统设计的效率。所谓硬件描述语言:就是可以描述硬件电路的功能、信号连接关系及定时关系的语言。,传统的系统硬件设计方法与利用硬件描述语言(HDL)的硬件电路设计方法的比较:,第三步:系统调试,从选择具体的元器件开始,并用这些元器件进行逻辑电路设计,完成系统各独立功能模块,然后再连接。,例:设计六进制计数器,第一步:选择器件,第二步:电路设计,Q3 Q2 Q1 Q3n+1 Q2n+1 Q1n+1 Z 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1,六进制计数器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;,PORT(clk,clr,en:IN STD_LOGIC; qa,qb,qc:OUT STD_LOGIC); END cnt6;,cnt6,ENTITY cnt6 IS,ARCHITECTURE rtl OF cnt6 IS SIGNAL q:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(clk) VARIABLE q6:INTEGER; BEGIN IF(clkEVENT AND clk=1) THEN IF(clr=0) THEN q6:=0; ELSIF(en=1) THEN IF(q6=5) THEN q6:=0;,ELSE q6:=q6+1; END IF; END IF; END IF; q=CONV_STD_LOGIC_VECTOR(q6,3) qa=q(0); qb=q(1); qc=q(2); END PROCESS; END rtl;,第一层:是行为描述,(较小规模系统时常常省略)实质是对整个系统的数学模型进行描述。,第二层:是RTL(寄存器)描述,要想得到硬件的具体实现,必须将行为方式描述的VHDL程序改写成RTL描述的VHDL程序。,第三层:是逻辑综合,将RTL描述的程序转换成用基本逻辑元件(宏单元)表示的文件,相当于在人工设计硬件电路时,根据系统要求画出了系统的电原理图。,一. VHDL语言描述数字系统的基本方法,在电原理图中如果要描述一个”与非”,会想到两件事:,&,(1)确定输入输出,(2)确定功能,同理:在VHDL中,所有的部件(小至一个门,大至一个CPU芯片或整个系统)都是用设计实体(Design Entity)来描述,设计实体是描述电路的基本方法。,描述电路的输入、输出,具体指明了对应的行为、元件及内部的连接关系,即定义具体的功能。,1. 实体,ENTITY 实体名 IS 类属参数说明 端口说明 END 实体名,*大写字母表示实体描述的框架,所用的词都是VHDL语言的保留用词,是不可缺少和省略的部分(大小写视为一样,为区别,关键词用大写)。,ENTITY mux2 IS GENERIC(m:TIME:=1ns); PORT(d0,d1,se1:IN BIT; q:OUT BIT) ; END mux2,例:,二选一选择器电原理图,tmp2:=d1 AND(NOT se1); tmp3:=tpm1 OR tmp2; tmp=tmp3 Q=tmp AFTER m END PROCESS; END connect;,ARCHITECTURE connect OF mux2 IS SIGNAL tmp:BIT; BEGIN PROCESS(d0,d1,se1) VARIABLE tmp1,tmp2,tmp3:BIT; BEGIN tmp1:=d0 AND se1;,(1) 类属参数说明 (必须放在端口说明之前,用于指定参数) GENERIC(m:TIME:=1ns) 该语句指定了构造体内m的值为1ns,这样语句q=tmp AFTER m;表示tmp经1ns才送到q。即:GENERIC利用类属参数为q建立一个延迟值。,(2) 端口说明 PORT(端口名,端口名:方向 数据类型名 端口名,端口名:方向 数据类型名);,a) 端口名:赋予每个外部引脚的名称,通常用一个或几个英文字母,或用英文字母加数字来命名之。,2019/11/17,19,可编辑,b) 端口方向: 方向定义 含义 IN 输入 OUT 输出(内部不可使用) INOUT 双向 BUFFER 输出(内部可再使用) LINKAGE 不指定方向,无论哪 一方向都可连接,c) 数据类型:,POPT(d0,d1,sel:IN BIT; q:OUT BIT; bus:OUT BIT-VECTOR(T DOWNTO 0),*说明符号不同特别要注意,d0,d1,sel,q都是BIT类型“0”或“1”, bus是BIT-VECTOR类型,由B7-B0 8位构成,在VHDL中有10种标准数据类型,而在逻辑电路中常用到两种:BIT或BIT-VECTOR(一组二进制数的值)。,例:,LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; ENTITY mu IS POPT(d0,d1,sel:IN STD-LOGIC; q:OUT STD-LOGIC; bus:OUT STD-LOGIC-VECTOR(T DOWNTO 0); END mu;,STD-LOGIC代替BIT,类型不一样。有9种。BIT在VHDL标准库中存在,不用说明,STD-LOGIC在IEEE库的1164集合中定义,必须加库说明和包说明语句(在实体说明前)。,ARCHITECTURE 构造体名 OF 实体名 IS 定义语句内部信号,常数,数据类型,函数等的定义; BEGIN 并行处理语句; END 构造体名;,(1) 构造体名称的命名,可以由设计者自由命名,但大多数以行为(behaviur)、数据流(dateflow)、寄存器传输(rtl)或者结构(structural)、方程(funct)来命名,使得阅读者能直接进入设计者所采用的描述方式。,例:ARCHITECTURE STRUC/connect OF MUX IS 表明connet是从属于MUX的结构体。,2. 构造体,(2) 定义语句,位于ARCHITECTURE和BEGIN之间,用于对构造体内部所使用的数据对象进行定义。,VHDL中由四类对象:,SIGNAL(信号)、VARIABLB(变量)、CONSTANT(常量)、FILE(文件)。,对象的说明格式为:,对象类别 标示符表; 子类型标示:=初值,SIGNAL clock:BIT; VARIABLE i:INTEGER:=13 CONSTANT delay:TIME:=5ns,例:,信号类型的对象相当于元件之间的连线,端口说明中的对象均为信号类型可不作说明,但需指明流向,而在结构体中则不需说明由内部信号流向决定。,VHDL有很强的数据类型,但一个对象只能有一种类型,施加于该对象的操作必须与该类型匹配(类型、位长),(a) 标准的数据类型 10种,整数、实数、位、位矢量、布尔量、字符、时间、错误等级、自然数、字符串。,(b) 用户定义的数据类型,例:TYPE week IS (sun,mon,tue,wed,thu,fri,sat);,(c)用户定义的子类型,SUBTYPE iobus IS STD-LOGIC-VECTOR(7 DOWNTO 0);,TYPE 数据类型名,数据类型名数据类型定义,格式:,整型、浮点型、枚举型、时间型等。,定义了一个week的数据类型,比使用代码0、1直观方便多了。,用户对已定义的数据类型,作一些范围的限制形成的一种新的数据类型.。,格式:SUBTYPE 子类型名 IS 数据类型名范围,例:,3. 运算操作符,分三类 见P278 表5-3-1,算术运算符、,关系运算符、,逻辑运算符,二. VHDL语言的基本设计单元构成,分五部分:库说明、集合说明、实体描述、构造体描述和配置描述。,LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; ENTITY mux2 IS POPT(d0,d1,sel:IN STD-LOGIC; q:OUT STD-LOGIC); END mux2 ARCHITECTURE rtl OF mux2 IS BEGIN PROCESS(d0,d1,sel) VARIABLE tmp1,tmp2,tmp3:STD-LOGIC;,库说明(因为使用了IEEE库中定义的集合),包集合说明STD-LOGIC数据类型在1164集合中定义,实体说明,构造体说明,例:一个完整的设计单元构成,构造体说明,配置说明,在本例题中包含了一个实体和两个构造体,配置说明编译时应选中rtl1构造体,如只有一个,配置说明可省。,1. 构造体的子结构描述,在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。为此,电路设计者总希望将整个电路分成若干个相对比较独立的模块来进行电路的描述。这样一个构造体可以用几个子结构,即:相对比较独立的模块来构成。,VHDL可以有三种形式的子结构描述语句,BLOCK 、 PROCESS 、 SUBPROGRAMS,(a)进程语句 PROCESS,进程标号: PROCESS(敏感信号) IS :用以说明数据类型,子程序,变量 BEGIN END PROCESS进程标号,格式:,进程语句用于描述一个操作过程,进程内部是顺序执行的。,敏感信号:对相对独立执行的并行语句进行协调,实行同步和异步操作。仅当敏感信号发生变化时,才被激活。,例:P282-283,(b) 断言语句 ASSERT,ASSERT语句等价于一个进程语句,它不作任何操作,仅用以判断某一条件是否成立,若不成立,则报告一串信息给设计师。故称之为断言语句。,例:P284,2. 构造体的结构描述方式,所谓构造体的结构描述方式,就是在多层次的设计中,高层次的设计模块调用低层次的设计模块,或者直接用电路设计单元来构成一个复杂的逻辑电路的描述方式.。,ENTITY mux2 IS PORT(d0,d1,sel:IN BIN; q:OUT BIT);,例:,END mux2,ARCHITECTURE STRUCT OF mux2 IS COMPONENT and2 PORT(a,b:IN BIT; c:OUT BIT; END COMPONENT; COMPONENT or 2 PORT (a,b:IN BIT; c:OUT BIT); END COMPONENT;,*COPONENT为实体内部元件的说明,指明了在该电路中所使用的已生成的模块,供本构造体调用。,*用PORT MAP()语句将生成的模块端口与所设计的各模块端口联系起来,*SIGNAL为信号对象说明,aa、ab、nesl为内部信号,按语句执行顺序分

温馨提示

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

评论

0/150

提交评论