edavhdl第四讲设计初步与实际操作

上传人:ni****g 文档编号:577693319 上传时间:2024-08-22 格式:PPT 页数:101 大小:1.96MB
返回 下载 相关 举报
edavhdl第四讲设计初步与实际操作_第1页
第1页 / 共101页
edavhdl第四讲设计初步与实际操作_第2页
第2页 / 共101页
edavhdl第四讲设计初步与实际操作_第3页
第3页 / 共101页
edavhdl第四讲设计初步与实际操作_第4页
第4页 / 共101页
edavhdl第四讲设计初步与实际操作_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《edavhdl第四讲设计初步与实际操作》由会员分享,可在线阅读,更多相关《edavhdl第四讲设计初步与实际操作(101页珍藏版)》请在金锄头文库上搜索。

1、EDAEDA技术技术实用教程实用教程第第4讲讲 今天的内容点名(假条)对于4选1多路选择器的VHDL文本输入设计,掌握的学生人数统计超过一半则跳过第一小节。第一小节VHDL描述以及对应的时序仿真图的简单解读课前提问,四种端口类型是哪四种?课前提问,关上书,实体和结构体的区别?课前提问,综合的四个层次?4 与Out 端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,

2、由该信号完成回读功能。注:注:outout与与bufferbuffer的区别总结的区别总结:5 双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个简单程序进行阐述,部分程序如下:control,in1为in,x为out,q为inout模式。 process(control,q,in1) begin if(control=0)then x=q; else q=in1;x=“ZZZZZZZZ”; end if; end process; process(control,q,in1) begin if(control=0)then x=q;q=“ZZZZZZZZ”;

3、 else q=in1;x=“ZZZZZZZZ”; end if; end process;关于双向端口关于双向端口INOUTINOUT的使用的使用总结总结:【例4-1】ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;实体结构体4.1 多路选择器多路选择器VHDL描述描述图图4-1 mux21a实体实体图图4-

4、2 mux21a结构体结构体 2选选1多路选择器的多路选择器的VHDL描述描述【例例4-2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ;e = b AND s ;y = d OR e ; END ARCHITECTURE one ;【例【例4-3】 . . . ARCHITECTURE one OF mux21a IS BEGI

5、N y = (a AND (NOT s) OR (b AND s) ; END ARCHITECTURE one;4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例】【例】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ;END IF; END PROCESS;END ARCHITECTURE one

6、;4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述图图4-3 mux21a功能时序波形功能时序波形以下几页,是给记忆不好的同学回忆的,看过以后就是今天进一步强调的程序书写的重点4.1.2 VHDL相关语法说明相关语法说明1. 1. 实体实体实体语句结构实体语句结构实体说明单元的一般语句结构:实体说明单元的一般语句结构: ENTITY ENTITY 实体名实体名 ISIS GENERIC ( GENERIC ( 类属表类属表 ); ); PORT ( PORT ( 端口表端口表 ); ); END ENTITY END ENTITY 实体名实体名; ;GENERIC类属说明语句类属说

7、明语句类属说明的一般书写格式如下:类属说明的一般书写格式如下: GENERIC( GENERIC( 常数名常数名 : : 数据类型数据类型 : := =设定值设定值 ; ;常数名常数名 : : 数据类型数据类型 : := =设定值设定值 ) ; ) ; 类属说明是实体说明中的可选项,放在端口类属说明是实体说明中的可选项,放在端口说明之前说明之前例: GENERIC(m: TIME:=3ns)例例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY andn IS GENERIC (n : INTEGER ); -定义类属参量及其数据类定义类属参量及其

8、数据类型型 PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); - 用类属参量限制矢量长度用类属参量限制矢量长度 c : OUT STD_LOGIC); END; PORT(端口)说明端口)说明PORT ( PORT ( 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ; ; 端口名端口名 : : 端口模式端口模式 数据类型数据类型 ) ; ) ; 其中的端口名是设计者为实体的每一个对外通道所取的其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型名字,端口模式是指这些通道上的数据流动方式。数据类型是

9、指端口上流动的数据的表达格式或取值类型,是指端口上流动的数据的表达格式或取值类型,VHDL要求只要求只有相同数据类型的端口信号和操作数才能相互作用。有相同数据类型的端口信号和操作数才能相互作用。 PORT PORT说明语句是对一个设计实体界面的说明及对设计实说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:入输出模式和数据类型的定义。其格式如下:端口模式端口模式INOUTINOUTBUFFER数据类型数据类型VHDL语言的IEEE1076/93标准规定,ED

10、A综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。结构体的一般语言格式:结构体的一般语言格式: ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句BEGIN 功能描述语句功能描述语句END ARCHITECTURE 结构体名结构体名; 结构体具体指明了设计实体的行为,定义了结构体具体指明了设计实体的行为,定义了设计实体的功能,规定了设计实体的数据流程,设计实体的功能,规定了设计实体的数据流程,指派了实体中内部元件的连接关系指派了实体中内部元件的连接关系2 结构体结构体o 说说明明

11、语语句句对对结结构构内内部部使使用用的的数数据据类类型型、常常数数、信信号号、子子程程序序和和元元件件等等元元素素进进行行定定义。说明语句不是必需的义。说明语句不是必需的功能描述语句用于描述实体逻辑功能和电功能描述语句用于描述实体逻辑功能和电路结构。路结构。 功功能能描描述述语语句句可可以以是是并并行行语语句句,也也可可以以是是顺序语句或是它们的混合顺序语句或是它们的混合。结构体的组成部分结构体的组成部分以上几页,是给记忆不好的同学回忆的,接下来,是今天进一步强调的程序书写的重点用VHDL语言描述结构体功能有3种方法行为描述法:采用进程语句,顺序描述设计实体的行为数据流描述法:采用进程语句顺序

12、描述数据流在控制流作用下被加工、处理、存储的全过程结构描述法:采用并行处理语句描述设计实体内的结构组织和元件互连关系功能描述语句结构功能描述语句结构进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化语句3 操作符操作符表表4-1 VHDL操作符列表操作符列表表表4-2 VHDL操作符优先级操作符优先级操作符操作符【例】【例】 SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD

13、_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . a=b AND c; -b、c 相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位矢量位长的位矢量 d=e OR f OR g ; - 两个操作符两个操作符OR相同,不需括号相同,不需括号 h=(i NAND j)NAND k ; - NAND不属上述三种算符中的一种,必须加括号不属上述三种算符中的一种,必须加括号 l=(m XOR n)AND(o XOR p); - 操作符不同,必须加括号操作符不同,必须加括号 h=i AND j AND k ; - 两个操作符都是两个操作符都是AND

14、,不必加括号不必加括号 h=i AND j OR k ; - 两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误 a=b AND e ; - 操作数操作数b 与与 e的位矢长度不一致,表达错误的位矢长度不一致,表达错误 h=i OR l ; - i 的数据类型是位的数据类型是位STD_LOGIC,而而l的数据类型是的数据类型是 . - 布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。因而不能相互作用,表达错误。逻辑操作符逻辑操作符关系操作符关系操作符【例】【例】 ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR

15、(0 TO 3) ; m : OUT BOOLEAN) ; END relational_ops_1 ; ARCHITECTURE example OF relational_ops_1 IS BEGIN m = (a = b) ; END example ; 【例】例】 ENTITY relational_ops_2 IS PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ; END relational_ops_2 ; ARCHITECTURE example OF relational_ops_2 IS BEGIN m = b)

16、 ; END example ;六种关系运算操作符:“ = ”(“ = ”(等于等于) )、“/=”(“/=”(不等于不等于) )、“ ”(“ ”(大于大于) )、“ ”(“=”(“=”(大于等大于等于于) )“=”(“=”(小于等小于等于于) )5分钟速记,然后做游戏上一节课,我们讲过IF THEN和CASE WHEN现在系统的列入了本PPT中,大家跟我一起来复习或者学习一次。4. 4. IF_THENIF_THEN条件语句条件语句顺序执行语句,只能用在进程中,有三种表现形式:IF 条件条件 THENEND IF;IF 条件条件 THENELSEEND IF;IF 条件条件1 THENELS

17、IF 条件条件2ELSE 条件条件nEND IF;例:Library ieee;use ieee.std_logic_1164.all;Entity encoder isPort(d: in std_logic_vector(3 downto 0); q: out std_logic_vector(1 downto 0);end encoder;architecture example_if of encoder is beginprocess(d) begin if(d(0)=0) then q=“11”; elsif(d(1)=0) then q=“10”; elsif(d(2)=0) t

18、hen q=“01”; else q=“00”; end if ;end process;End example_if;d3 d2 d1 d0 q2 q1X x x 0 1 1X x 0 1 1 0X 0 1 1 0 10 1 1 1 0 0优先级编码器真值表优先级编码器真值表5. 5. WHEN_ELSEWHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标 = 表达式表达式1 WHEN 赋值条件赋值条件1 ELSE 表达式表达式2 WHEN 赋值条件赋值条件2 ELSE . 表达式表达式n ;注意:注意:1、条件信号语句不能进行嵌套、条件信号语句不能进行嵌套2、条件信号语句是并

19、发语句,进程内外都可以使用、条件信号语句是并发语句,进程内外都可以使用例:用条件信号赋值语句设计四选一电路模块Library ieee;Use ieee.std_logic_1164.all;Entitu mux4 isPort(d0,d1,d2,d3,a,b : in std_logic; q: out std_logic);End mux4;Architecture arch of mux4 is signal sel: std_logic_vector(1 downto 0);Begin sel=b&a; q=d0 when sel=“00” else d1 when sel=“01”e

20、lse d2 when sel=“10”else d3 when sel=“11”else z;End arch;6. 6. PROCESSPROCESS进程语句和顺序语句进程语句和顺序语句Process语句在VHDL程序中,是描述硬件并行工作行为的最常用,最基本的语句进程语句格式进程语句格式PROCESS语句结构的一般表达格式如下语句结构的一般表达格式如下 进程标号进程标号: : PROCESS ( PROCESS ( 敏感信号参数表敏感信号参数表 ) ) ISIS 进程说明部分进程说明部分 BEGINBEGIN 顺序描述语句顺序描述语句 END PROCESS END PROCESS 进程

21、标号进程标号; PROCESS 组成组成PROCESS语句结构语句结构进程说明进程说明顺序描述语句顺序描述语句敏感信号参数表敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句 进程要点进程要点1 1)PROCESSPROCESS为一无为一无限循环语句限循环语句2 2)PROCESSPROCESS中的顺序语句具有明显的顺序中的顺序语句具有明显的顺序/ /并行运行双重性并行运行双重性3 3)进程必须由敏感信号的变化来启动)进程必须由敏感信号的变化来启动4 4)进程语句本身是并行语句)进程语句本身是并行语句5 5)信号是多个进程间的通信线)信号是多个进程间的通信

22、线6 6)一个进程中只允许描述对应于一个时钟信号的同步时)一个进程中只允许描述对应于一个时钟信号的同步时序逻辑序逻辑 【例例】ENTITY mul ISPORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT);END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT;BEGINp_a : PROCESS (a, b, selx) BEGIN IF (selx = 0) THEN temp = a; ELSE temp = b; END IF; END PROCESS p_a; p_b: PROC

23、ESS(temp, c, sely) BEGIN IF (sely = 0) THEN data_out = temp; ELSE data_out = c; END IF; END PROCESS p_b;END ex;7. 7. 文件取名和存盘文件取名和存盘1)取名最好与文件实体名相同;2)文件后缀名必须是.vhd3)VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为work库,work库的路径即为此目录的路径 总结总结 一个完整的VHDL语言程序通常包括实体、构造体、配置、包集合和库5个部分。实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放

24、各设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合、和配置。接下来,是自学内容,相对比较简单有疑问提问,5分钟后我提问,回答上来的加分4.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象4.2.1 D触发器的触发器的VHDL描述描述【例4-9】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; A

25、RCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出 END PROCESS ; END bhv;D触发器触发器4.2.2 D触发器触发器VHDL描述的语言现象说明描述的语言现象说明1. 1. 标准逻辑位数据类型标准逻辑位数据类型STD_LOGICSTD_LOGICBIT数据类型定义: TYPE BIT IS(0,1

26、);TYPE BIT IS(0,1);STD_LOGIC数据类型定义:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据的含义是:UU表示未初始化的;表示未初始化的; XX表示强未知的;表示强未知的; 0 0表示强表示强逻辑逻辑0 0; 1 1表示强逻辑表示强逻辑1 1; ZZ表示高阻态;表示高阻态; W W 表示弱未知的;表示弱未知的; LL表示弱逻辑表示弱逻辑0 0; HH表示弱表示弱逻辑逻辑1 1; - -表示忽略。表示忽略。Library ieee;U

27、SE IEEE.STD_LOGIC_1164 ENTITY mux21a IS PORT( a, b : IN std_logic ; s : IN std_logic ; y : OUT std_logic ) ;END mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END one ;例:2. 2. 设计库和标准程序包设计库和标准程序包 库是用来存储和放置可编译的设计单元的地方,通库是用来存储和放置可编译的设计单元的地方,通过其目录可查询、调用。设计库中的设计单元可以用作过其目录可查询、调用。设计库中

28、的设计单元可以用作其他其他VHDL描述的资源描述的资源 一般的,设计库中放程序包,不同库中所放的程一般的,设计库中放程序包,不同库中所放的程序包的个数不一致。程序包放子程序,子程序中含有序包的个数不一致。程序包放子程序,子程序中含有函数、过程、元件等基础设计单元。函数、过程、元件等基础设计单元。 库的种类库的种类VHDL的库设计库:对当前项目是可见默认的,无需声明。包括STD库和WORK库。STD库中包括STANDARD和TEXTIO两个程序包资源库:常规元件和标准模块存放的库,使用前需预先说明。有些是IEEE标准化组织认可的,称为IEEE库使用库和程序包的一般定义表式是: LIBRARY L

29、IBRARY ; USE USE .ALL ; ALL ; USE语句的使用有两种常用格式: USE 库名库名.程序包名程序包名.项目名项目名 ; USE 库名库名.程序包名程序包名.ALL ; LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ; 常用的预定义的程序包常用的预定义的程序包STD_LOGIC_1164程序包程序包STD_LOGIC_ARITH程序包程序包STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNED程序包程序包STANDARD和

30、和TEXTIO程序包程序包VHDL程序包程序包例:计数器Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity count is port(clk : in std_logic; q : out std_logic_vector(3 downto 0);End count;Architecture arch of count is signal m : std_logic_vector(3 downto 0); begin process(clk) begin if clkevent and

31、 clk=1 then if(m=“1111”) then m=“0000”; else m=m+1; end if; end if; end process; q=m;End arch;3. 3. SIGNALSIGNAL信号定义和数据对象信号定义和数据对象定义格式:定义格式: SIGNAL 信号名:信号名: 数据类型数据类型 := 初始值初始值 ;信号的使用和定义范围是实体、结构体和程序包,在进程和子程序的顺序语句中不允许定义信号信号赋值语句:目标信号名=表达式;Signal a,b,c : std_logic;Process(a,b) begin c=a+b;End process;【例

32、4-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ;END ;数据对象数据对相类似于一种容器,它接受不同数据类型的赋值。数据对象有三类:信号,变量和常量4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 关键词EVENT是信号属性,VHDL通过以下表达式来测定某信号的跳变边沿: EVENTEVENT边沿检测语句:边沿检测语句: clockEVENT and clock=1 检测

33、上升沿 clockEVENT and clock=0 检测下降沿*现场可编程门阵列 field programmable gate array(FPGA)*复杂可编程逻辑器件complex programmable logic device (CPLD)*硬件描述语言hardware description language(HDL)大规模集成large scale integration (LSI) 中规模集成medium scale integration (MSI)5. 5. 不完整条件语句与时序电路不完整条件语句与时序电路【例【例4-9】ENTITY COMP_BAD IS PORT(

34、 a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ; END 图图4-6 例例4-10的电路图的电路图4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-11】.PROCESS (CLK) BEGINIF CLK

35、EVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ;【例【例4-12】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例4-13 THEN Q = D ; END IF; END PROCESS ;4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-13】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENT

36、ITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - CLK的数据类型必须是的数据类型必须是STD_LOGIC THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【

37、例4-14】 . PROCESS BEGIN wait until CLKevent and clk=1; -利用利用wait语句语句 Q = D ; END PROCESS;【例4-15】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF; END PROCESS ;【例4-16】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;4.2.3

38、 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式图图4-7 边沿型触发器时序波形边沿型触发器时序波形图图4-8 电平触发型寄存器的时序波形电平触发型寄存器的时序波形异步时序电路特点*1.电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件; 2.电路中没有统一的时钟; 3. 电路状态的改变由外部输入的变化直接引起。设计*一般分为两步:第一步确定各位触发器时钟信号,第二步求电路状态方程、激励方程、输出方程。显然,第二步工作是建立在第一步工作基础上,只有确定了时钟信号,才能有效设计其它电路。是否能将异步时序电路设计仅通过对其时钟设计一步完成?笔者在教学过

39、程中,认真分析异步时序电路特点,提出了基于时钟设计的异步时序逻辑电路设计法,从而避免了求解电路状态方程、驱动方程,简化了异步时序电路设计。例:带异步复位的D触发器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF4 IS PORT (CLK : IN STD_LOGIC ; clr,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END DFF4; ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK,clr) BEGIN if clr=0 then Q=0; el

40、sif CLKEVENT AND CLK = 1 THEN Q = D ; END IF; END PROCESS ; END bhv;4.3.1 半加器描述和半加器描述和CASE语句语句【例【例4-20】 LIBRARY IEEE ;-或门逻辑描述或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a OR b ; END ARCHITECT

41、URE one;【例【例4-21】LIBRARY IEEE; -半加器描述半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY adder; ARCHITECTURE fh1 OF adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 4.3 1位二进制全加器的位二进制全加器的VHDL设计设计图图4-10半加器半加器h_

42、adder电路图电路图图图4-11 全加器全加器f_adder电路图电路图ab so co0000011010101101表表4-1 半加器半加器h_adder逻辑功能真值表逻辑功能真值表【例【例4-22】LIBRARY IEEE; -半加器描述半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LO

43、GIC_VECTOR(1 DOWNTO 0) ;BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;END ARCHITECTURE fh1 ;【例例4-22】 . -半加器描述半加器描述(3) SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 ); BEGIN abc = a & b ; co = cso(1) ; so cso cso cso csoain,b=bin,co=d,so=e); u2 : h_adder PORT MAP(a=e,b=cin

44、,co=f,so=sum); u3 : or2a PORT MAP(a=d,b=f,c=cout); END ARCHITECTURE fd1;4.3.1 半加器描述和半加器描述和CASE语句语句1. 1. CASECASE语句语句CASE语句的一般表式是:语句的一般表式是:CASE ISWhen = ; . ; ;When = ; . ; ;.when others =END CASE ;Case语句常用来描述总线行为、编码器和译码器的结构例:例:PROCESS(abc) BEGIN CASE abc IS WHEN 00 = so=0; co so=1; co so=1; co so=0;

45、 co NULL ; END CASE; END PROCESS;process(s,a,b,c,d) begin case s is when 00=zzzznull; end case; end process; end behav;library ieee;use ieee.std_logic_1164.all;entity mux4 isport(s1,s2: in std_logic; a,b,c,d : in std_logic; z : out std_logic);end entity mux4;architecture behav of mux4 is signal s :

46、std_logic_vector(1 downto 0);begin s=s1&s2;结论:选择器的行为描述即可以用if语句,也可以用case语句If语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件Case语句是无序的,所有表达式值都并行处理。Case语句中的条件表达式中的值必须举穷尽,又不能重复不能穷尽的条件表达式的值用others表示接下来是操作指导请自己对照文本和之前我教的进行。看能否理解步骤。(注意,软件界面不同,不要照抄)STEP1:建立 工作库文件夹STEP2:输入设计项目原理图/VHDL文本代码STEP3:存盘,注意 原理图/文本取名STEP4:将设计项目设置成Pro

47、jectSTEP5:选择目标器件 STEP11: 硬件测试STEP9:引脚锁定并编译STEP8:仿真测 试和波形分析STEP7:建立仿真波形文件STEP6:启动编译STEP10:编程 下载/配置VHDL文本输入设计流程 4.4 VHDL文本输入设计方法初步文本输入设计方法初步为设计全加器新建一个文件夹作工作库文件夹名取为My_prjct注意,不可用中文!编辑输入并保存编辑输入并保存VHDL源文件源文件新建一个设计文件使用文本输入方法设计,必须选择打开文本编辑器图图4-13 在文本编辑窗中输入在文本编辑窗中输入VHDL文件并存盘文件并存盘图图4-12 建立文本编辑器对话框建立文本编辑器对话框文本

48、编辑窗用键盘输入设计文件:多路选择器存盘文件名必须取为:mux21a.vhd注意,要存在自己建立的文件夹中文件存盘后,关键词将改变颜色!否则文件名一定有错!图图4-14 设定当前文件为工程设定当前文件为工程首先点击这里然后选择此项,将当前的原理图设计文件设置成工程最后注意此路径指向的改变注意,此路径指向当前的工程!首先选择这里器件系列选择窗,选择ACEX1K系列根据实验板上的目标器件型号选择,如选EP1K30注意,首先消去这里的勾,以便使所有速度级别的器件都能显示出来选择编译器编译窗4.4.3 选择选择VHDL文本编译版本号和排错文本编译版本号和排错图图5-15 设定设定VHDL编译版本号编译

49、版本号选择此项选择VHDL1993项选择此项消去这里的勾编译出错!4.4.3 选择选择VHDL文本编译版本号和排错文本编译版本号和排错图图4-16 确定设计文件中的错误确定设计文件中的错误打开错误提示窗错误所在错误所在改正错误完成编译!完成编译!首先选择此项,为仿真测试新建一个文件时序仿真时序仿真选择波形编辑器文件从从SNF文件中文件中输入设计文件输入设计文件的信号节点的信号节点点击点击“LIST”SNF文件中文件中的信号节点的信号节点用此键选择左窗用此键选择左窗中需要的信号中需要的信号进入右窗进入右窗最后点击最后点击“OK”消去这里的勾,消去这里的勾,以便方便设置以便方便设置输入电平输入电平

50、在在Options菜单中消去网格对齐菜单中消去网格对齐Snap to Grid的选择的选择(消去对勾消去对勾) 选择选择END TIME调整仿真时间调整仿真时间区域。区域。选择选择65微秒微秒比较合适比较合适用此键改变仿真用此键改变仿真区域坐标到合适区域坐标到合适位置。位置。点击点击1,使拖黑,使拖黑的电平为高电平的电平为高电平先点击先点击b,将其将其点为黑色点为黑色然后先点击此处然后先点击此处将弹出时钟周期将弹出时钟周期设置窗设置窗设置输入信号设置输入信号b的周期为的周期为800ns设置输入信号设置输入信号a的周期为的周期为2us仿真波形文件仿真波形文件存盘!存盘!选择仿真器选择仿真器运行仿真器运行仿真器4.4.4 时序仿真时序仿真图图4-17 mux21a仿真波形仿真波形选择引脚选择引脚锁定选项锁定选项引脚窗引脚窗此处输入此处输入信号名信号名此处输入此处输入引脚名引脚名按键按键“ADD”即可即可注意引脚属性注意引脚属性错误引脚名将错误引脚名将无正确属性!无正确属性!再编译一次,再编译一次,将引脚信息将引脚信息进去进去选择编程器,选择编程器,准备将设计准备将设计好的半加器好的半加器文件下载到目文件下载到目器件中去器件中去编程窗编程窗在编程窗打开在编程窗打开的情况下选择的情况下选择下载方式设置下载方式设置选择此项下选择此项下载方式载方式下载(配置)下载(配置)成功!成功!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号