资源描述
例:试设计一个逻辑电路,X=xn-1xn-2x1x0是该电路得串行输入信号,Z为它的输出,表示X中包含的1个数。含1统计电路统计结果输入序列X 对于这样一个看似十分简单的逻辑电路,却难以用状态表对它进行描述,对于这样一个n位的串行输入序列,将有2n种不同的组合,显然不能按当前已收到的序列来规定电路的状态。如果这样规定,则需要2n个状态;显然也不能按当前序列中已包含1的个数来规定状态,如果这样,则需要n+1个状态,状态表也将十分庞大。5-3 硬件描述语言VHDL即:分析: 由电路功能直接导出状态表的方法并非对所有的电路设计都是适用的,但如果从为实现上述功能必须完成的操作出发,问题就可能很容易解决。由此可见:(1) 该电路为统计序列中含有的“1”的个数,必须包含有一个加1计数器。(2) 仅当输入信号为1时才进行加1计数,所以必须还应有判别操作,要做的工作就是设计判别电路和计数器,并配置相应的控制电路使它们能协调地工作,以完成预定的功能。开始Z 0 n 0n n+1x=1?n=N?Z Z+1NYNY算法设计的思想:是把系统应实现的逻辑功能看作是应完成的某种运算或操作,若这一运算或操作十分复杂,则可以把它分解成若干个子运算或子操作系统的算法描述的特征。(1) 含有若干个子运算,实现对数据或信息的存储传输或处理。(2) 具有相应的控制程序,控制各子运算的执行顺序。在导出算法流图后,便可将电路划分成数据处理单元和控制单元。控制器计A计BZCPCRCRC1C2Xn=N?结束硬件描述语言VHDL概述: 随着超大规模集成电路工艺的发展,待设计电路的规模越来越大,传统的手工艺已无发适应设计复杂数字系统的要求。然而超大规模集成电路的发展也推动了计算机技术和数字技术的发展,使人们有可能开发出功能强大的电子设计自动化(简称EDA)软件,从而改变了人们的设计思想和设计方法,实现设计自动化。 数字系统设计历来存在两个分支,即:系统硬件设计和系统软件设计,但是随着计算机技术的发展和硬件描述语言HDL的出现,使这种情况又有新的变化,数字系统的硬件结构及其行为完全可以用HDL语言来描述和生成,这样即使是软件设计人员也同样可以方便的借助HDL语言,设计出符合要求的硬件系统。 另外也为数字系统的硬件、软件协同设计打下了良好的基础,数字系统的硬件、软件设计可以在一开始就进行通盘考虑,进行早期仿真,这就大大提高了系统设计的效率。所谓硬件描述语言:就是可以描述硬件电路的功能、信号连接关系及定时关系的语言。1.自下而上的设计方法1.自上而下的设计方法(核心是算法思想的设计)2.采用通用的逻辑元器件2.系统中可大量采用ASIC芯片3.在系统硬件设计的后期进行仿真和调试3.系统采用早期仿真,降低了硬件电路设计难度4.主要设计文件是原理图4.主要设计文件是HDL编写的源程序 传统的系统硬件设计方法与利用硬件描述语言(HDL)的硬件电路设计方法的比较:第三步:系统调试从选择具体的元器件开始,并用这些元器件进行逻辑电路设计,完成系统各独立功能模块,然后再连接。例:设计六进制计数器第一步:选择器件第二步:电路设计S5S4S3S2S1S0/0/0/0/0/0/0Q3 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 13131213QQQQQQn2112312QQQQQQn111QQn13123QKQQJ12132QKQQJ1111KJ13QQZ 1JQK2JQK3JQK&ZCP六进制计数器 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 clrclk qa en qc qbENTITY 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); qc1d0d1se1q例:二选一选择器电原理图tmp2:=d1 AND(NOT se1);tmp3:=tpm1 OR tmp2;tmp=tmp3Q=tmp AFTER mEND PROCESS;END connect;ARCHITECTURE connect OF mux2 IS SIGNAL tmp:BIT;BEGINPROCESS(d0,d1,se1)VARIABLE tmp1,tmp2,tmp3:BIT;BEGINtmp1:=d0 AND se1;(1) 类属参数说明(必须放在端口说明之前,用于指定参数) GENERIC(m:TIME:=1ns) 该语句指定了构造体内m的值为1ns,这样语句q=tmp AFTER m;表示tmp经1ns才送到q。即:GENERIC利用类属参数为q建立一个延迟值。(2) 端口说明 PORT(端口名,端口名:方向 数据类型名 端口名,端口名:方向 数据类型名);a) 端口名:赋予每个外部引脚的名称,通常用一个或几个英文字母,或用英文字母加数字来命名之。b) 端口方向: 方向定义 含义 IN 输入 OUT 输出(内部不可使用) INOUT 双向 BUFFER 输出(内部可再使用) LINKAGE 不指定方向,无论哪 一方向都可连接dclkOUTqdclkq&BUFFERc) 数据类型: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集合中定义实体说明构造体说明例:一个完整的设计单元构成BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; END PROCESS; END trl; ARCHITECTURE rtl OF mux2 IS END trl2; CONFIGURATION rtl-mux2 OF mux2 IS FOR trl1 END FOR;END rtl-mux2;.构造体说明配置说明 在本例题中包含了一个实体和两个构造体,配置说明编译时应选中rtl1构造体,如只有一个,配置说明可省。1. 构造体的子结构描述 在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。为此,电路设计者总希望将整个电路分成若干个相对比较独立的模块来进行电路的描述。这样一个构造体可以用几个子结构,即:相对比较独立的模块来构成。VHDL可以有三种形式的子结构描述语句BLOCK 、 PROCESS 、 SUBPROGRAMS(a)进程语句 PROCESS 进程标号: PROCESS(敏感信号) IS :用以说明数据类型,子程序,变量 BEGIN END PROCESS进程标号格式:进程语句用于描述一个操作过程,进程内部是顺序执行的。敏感信号:对相对独立执行的并行语句进行协调,实行同步和异步操作。仅当敏感信号发生变化时,才被激活。例:P282-283(b) 断言语句 ASSERTASSERT语句等价于一个进程语句,它不作任何操作,仅用以判断某一条件是否成立,若不成立,则报告一串信息给设计师。故称之为断言语句。例:P2842. 构造体的结构描述方式 所谓构造体的结构描述方式,就是在多层次的设计中,高层次的设计模块调用低层次的设计模块,或者直接用电路设计单元来构成一个复杂的逻辑电路的描述方式.。ENTITY mux2 IS PORT(d0,d1,sel:IN BIN; q:OUT BIT); 例:&1U1d1seld0U3U2nselabaaqEND mux2ARCHITECTURE 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为内部信号SIGNAL aa,ab,nesl:BIT;BEGINU1:inv PORT MAP (sel,nesl);U2:and2 PORT MAP(nsel,d1,ab);U3:and3 PORT MAP(d0,sel,aa);U4:or2 PORT MAP(aa,ab,q);END struct;按语句执行顺序分:顺序描述语句 并发描述语句例:进程语句是一个并发语句,在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的,但是在进程内部所有的语句应是顺序描述语句。三. VHDL语言的主要描述语言顺序语句块一旦被激活,则其中的所有语句按顺序逐一被执行。并行语句的书写次序并不代表其执行的顺序,当并行语句块被激活时,将只执行被激活的语句。CASE语句 CASE语句适用于两路或多路分支判断见:P280-P281顺序描述语句信号代入语句 信号名=表达式变量赋值语句 变量名:=表达式IF语句 IF语句为两语分支判断语句见:P280LOOP语句 LOOP语句实现循环(重复进行)P281NEXT语句 在LOOP语句中NEXT语句用来 跳出本次循环,用于内部循环EXIT语句 结束循环状态,从LOOP语中跳 出,结束LOOP的正常执行WAIT语句NULL语句 表示只占位置的一种空处理操作四. 程序包 在实体说明和结构体内部定义的数据类型,常量及子程序对其他设计实体是不可见的。为使它们对其他设计实体可见,VHDL提供了程序包机制。程序包由说明单元和包体单元构成。一般格式为:PACKAGE 程序包名 IS END程序包名PACKAGE BODY 程序包名 IS END程序包名例:P285 访问时只需加上USE . 程序包名五. 应用举例P286-289 第15章
展开阅读全文