《ch3VHDL设计初步》PPT课件.ppt

上传人:cn****1 文档编号:569500904 上传时间:2024-07-30 格式:PPT 页数:58 大小:692.60KB
返回 下载 相关 举报
《ch3VHDL设计初步》PPT课件.ppt_第1页
第1页 / 共58页
《ch3VHDL设计初步》PPT课件.ppt_第2页
第2页 / 共58页
《ch3VHDL设计初步》PPT课件.ppt_第3页
第3页 / 共58页
《ch3VHDL设计初步》PPT课件.ppt_第4页
第4页 / 共58页
《ch3VHDL设计初步》PPT课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《《ch3VHDL设计初步》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ch3VHDL设计初步》PPT课件.ppt(58页珍藏版)》请在金锄头文库上搜索。

1、1第第3 3章章 VHDLVHDL设计初步设计初步3.1 3.1 组合电路的组合电路的VHDLVHDL描述描述3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描述描述3.3 3.3 计数器计数器的的VHDLVHDL设计设计3.4 3.4 实用实用计数器的计数器的VHDL设计设计2一、一、VHDLVHDL结构及相关语句说明结构及相关语句说明1、实体、实体l 是是VHDLVHDL程序的基本单元,用于描述设计系统的端口结程序的基本单元,用于描述设计系统的端口结构。构。l 一个电路系统的程序设计只有一个实体。一个电路系统的程序设计只有一个实体。l 一般语句结构:一般语句结构: ENTITY

2、 实体名实体名 IS PORT (端口表端口表);END ENTITY 实体名实体名;3.1 二选一多路选择器二选一多路选择器VHDL描述描述用用VHDL描术电路由两部分组成描术电路由两部分组成:实体和结构体实体和结构体3【例例3-1】ENTITY elector2_1 IS .END ENTITY elector2_1;1 1)、实体名)、实体名l 实体名设计者自己添加,最好根据相应电路的功能实体名设计者自己添加,最好根据相应电路的功能来确定;来确定;l 不要用数字或中文定义实体名;不要用数字或中文定义实体名;l 不要与不要与EDAEDA工具库中已定义好的元件同名工具库中已定义好的元件同名;

3、42 2)、)、PORTPORT语句和端口信号名语句和端口信号名 PORTPORT说明语句是对一个设计实体与外部电路的接口通道说明语句是对一个设计实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:定义。其格式如下:PORT(端口名,端口名,端口名:端口模式端口名:端口模式 数据类型;数据类型; 端口名,端口名,端口名:端口模式端口名:端口模式 数据类型数据类型); A A、端口模式:、端口模式: 端口模式用于定义端口上的数据的流动方向和方式,一端口模式用于定义端口上的数据的流动方向和方式,一般有四种

4、模式:般有四种模式:IN、OUT、INOUT、BUFFER5端口模式端口模式端口模式说明端口模式说明ININ单向只读模式,数据只能通过该端口读入实体中单向只读模式,数据只能通过该端口读入实体中OUTOUT单向输出模式,数据通过该端口从实体输出单向输出模式,数据通过该端口从实体输出INOUTINOUT输入输出双向端口,可以通过该端口读入或写出信息输入输出双向端口,可以通过该端口读入或写出信息BUFFERBUFFER具有读功能的输出模式,可以读或写,回读信号由内部具有读功能的输出模式,可以读或写,回读信号由内部产生产生INOUTINOUTBUFFER端口模式符号图端口模式符号图INOUTBUFFE

5、RINOUT6B B、数据类型、数据类型1 1)意义和作用:)意义和作用:数据类型是指端口上流动的数据的表达格式或取数据类型是指端口上流动的数据的表达格式或取值类型,值类型,VHDLVHDL要求只有相同数据类型的端口信号和操作数才能相互要求只有相同数据类型的端口信号和操作数才能相互作用。作用。2 2)数据类型种类:)数据类型种类:INTEGERINTEGER、BOOLEANBOOLEAN、 BITBIT和和STD_LOGICSTD_LOGIC等。等。 BOOLEAN:FALSE,TRUE BIT : (0,1) STD_LOGIC: (U,X,0,1,Z,W,L,H,-)U表示未初始化的;表示

6、未初始化的; X表示强未知的;表示强未知的; 0表示强逻辑表示强逻辑0; 1表示强逻辑表示强逻辑1; Z表示高阻态;表示高阻态; W 表示弱未知的;表示弱未知的; L表示弱逻辑表示弱逻辑0; H表示弱表示弱逻辑逻辑1; -表示忽略。表示忽略。7ENTITY mux21a IS PORT(a,b:IN BIT; s:IN BIT; y:OUT BIT) ;END ENTITY mux21a ;实体实体3)、)、 2 2选选1 1多路选择器的多路选择器的VHDLVHDL描述描述( (实体实体) )82、结构体表达、结构体表达 结构体是描述设计实体的内部结构和外部设计实体端口间结构体是描述设计实体的

7、内部结构和外部设计实体端口间的逻辑关系。结构体的一般结构为:的逻辑关系。结构体的一般结构为:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句; BEGIN 功能描述语句功能描述语句;END ARCHITECTURE 结构体名结构体名;u 说明语句:包括对数据对象、数据类型、常数、信号、子程序和元件等元素的说明语句:包括对数据对象、数据类型、常数、信号、子程序和元件等元素的说明部分,说明部分,可省略可省略。u 功能描述语句:描述实体逻辑行为,可以是并行、顺序语句或两者的混合,功能描述语句:描述实体逻辑行为,可以是并行、顺序语句或两者的混合,必必须给出须给出。

8、u 一个实体可以有多个结构体,每个结构体对应着实体不同的结构和算法实现方一个实体可以有多个结构体,每个结构体对应着实体不同的结构和算法实现方案,各个结构体的地位是同等的。案,各个结构体的地位是同等的。9ARCHITECTURE one OF mux21a IS BEGIN y = (a AND (NOT s) OR (b AND s) ;END ARCHITECTURE one ;结构体结构体【例例3-2】2 2选选1 1多路选择器的多路选择器的VHDLVHDL描述(结构体)描述(结构体)103、完整的、完整的2选选1多路选择器的多路选择器的VHDL描述描述LIBRARY IEEE;USE I

9、EEE.STD_LOGIC_1164.ALL;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 AND (NOT s) OR (b AND s) ;END ARCHITECTURE one ;11【例例3-3】ENTITY mux21a IS PORT(a,b:IN BIT; s:IN BIT; y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS

10、 SIGNAL d,e : BIT; BEGIN d = a AND (NOT S); e = b AND s; y = d OR e ;END ARCHITECTURE one ;并行语句并行语句4、不同方式、不同方式2选选1多路选择器的多路选择器的VHDL描述描述1)、使用并行语句描述、使用并行语句描述12【例例3-4】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 =

11、 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE one ;顺序语句2)、使用进程和顺序语句描述、使用进程和顺序语句描述13【例例3-5】ENTITY mux21a ISPORT(a,b:IN BIT; s:IN BIT; y:OUT BIT) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a ISBEGIN y=a WHEN s = 0 ELSE b;END ARCHITECTURE one ;是顺序语句还是并行语句?14二、信号传输二、信号传输( (赋值赋值) )符

12、号和数据比较符号符号和数据比较符号 1、信号传输信号传输(赋值赋值)符号符号 :“=” 例:例:y=a 表示信号表示信号a向信号向信号y赋值,要求两边的信号数据类型赋值,要求两边的信号数据类型必须一致。必须一致。 赋值操作要经历一个模拟器的最小分辨时间赋值操作要经历一个模拟器的最小分辨时间后才完成,后才完成, 可看可看成成实际电实际电路存在的固有延路存在的固有延时时量。量。 2、数据比较符号、数据比较符号:“=” 例:例:s = 0 输出为布尔型,可能取值为输出为布尔型,可能取值为1、0,分别,分别表示表示true和和false。 布尔型数据只能用于逻辑操作和条件判断。布尔型数据只能用于逻辑操

13、作和条件判断。 用于条件语句的判断表达式可以是一个值,也可以是复杂的逻用于条件语句的判断表达式可以是一个值,也可以是复杂的逻辑或运算表达式。辑或运算表达式。IF (s1=0) AND (S2=1) OR (cb+1) THEN154 4、 逻辑操作符逻辑操作符运算符运算符功能功能AND与与OR或或NAND与非与非NOR或非或非XOR异或异或XNOR异或非异或非NOT非非运算符运算符功能功能=等于等于/=不等于不等于大于大于=大于等于大于等于3、关系运算符、关系运算符三、三、关系运算符、关系运算符、逻辑操作符逻辑操作符161 1、 IF_THENIF_THEN条件语句条件语句2 2、WHEN_E

14、LSEWHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE . 表达式;表达式;IF s = 0 THEN y = a ; ELSE y = b ;END IF; z = a WHEN p1=1 ELSE b WHEN p2=1 ELSE c ;四、四、条件语句条件语句、条件信号赋值语句条件信号赋值语句A、格式:、格式:17l 并行信号赋值语句,赋值目标必须是信号赋值目标必须是信号,与其他并行语句一样,在结构体内的执行是同时发生的。l 根据指定条件对信号赋值,条件可以为任意

15、表达式;l 根据赋值条件出现的先后次序隐含优先权,赋值条件测试具有顺序性;l 最后一个ELSEELSE子句隐含了所有未列出的条件;l 每一子句的结尾没有标点,只有最后一句有分号;B、几点说明、几点说明18x = a when (s = “00”) else b when (s = “01”) else c when (s = “10”) else d ;a ax xmuxmuxc cb bd ds s2 2隐含了所有未隐含了所有未列出的条件列出的条件隐含了优先权隐含了优先权C、实例、实例119 j = w when (a = 1) else x when (b = 1) else y when

16、 (c = 1) elsez when (d = 1) else0 ;允许有多个控制信号允许有多个控制信号 实例实例220五、五、PROCESSPROCESS进程语句和顺序语句进程语句和顺序语句1 1、基本格式:、基本格式:进程标号:进程标号:PROCESS (信号敏感表)(信号敏感表) IS (P1:) 说明区说明区; BEGIN 顺序语句顺序语句; END PROCESS 进程标号;进程标号; 进程标号:进程标号: PROCESS (信号敏感表)(信号敏感表) IS (Pn:) 说明区说明区; BEGIN 顺序语句顺序语句; END PROCESS 进程标号;进程标号;21PROCESS1

17、PROCESSnsignalsignal2、进程语句的特点:、进程语句的特点:一个构造体可以有多一个构造体可以有多个进程语句个进程语句进程和进程之间是并进程和进程之间是并行的行的进程和进程之间的数进程和进程之间的数据交换通过信号完成据交换通过信号完成进程内部是顺序语进程内部是顺序语句句ARCHITECTURE223、信号敏感表、信号敏感表 PROCESS (a,b,s)p敏感表中列出的任何信号的改变,都将启动进程,执行进程内相应顺序语句;p执行完顺序语句后,进程进入等待状态,直到下一次敏感表中某一信号发生改变;p一些VHDL综合器,综合后,对应进程的硬件系统对进程中的所有输入的信号都是敏感的,

18、不论在源程序的进程中是否把所有的信号都列人敏感表中;p为了使软件仿真与综合后的硬件仿真对应起来,应当将进程中的所有输人信号都列入敏感表中。23entity terminal_count is port(clock,reset,enable :in bit; data: in std_logic_vector(7 downto 0); equals, term_cnt : inout std_logic_vector(7 downto 0); end terminal_count; architecture bhe of terminal_count is signal count: std_l

19、ogic_vector(7 downto 0); begin P1:process(data) begin if data=count then equals=“11111111”; end if; end process P1; P2:process(clock) begin if reset=1 then count=11111111; elsif clockevent and clock=1 then count=count + 1; end if; end process P2; term_cnt =count when enable=1 else ZZZZZZZZ“; end bhe

20、; 【例例3-6】244、顺序语句、顺序语句u每一条顺序语句的执行顺序是与它们的书写顺序基本一致的;u顺序语句只能出现在进程(ProcessProcess) 、函数(FuncationFuncation)和过程(ProcedureProcedure)中;u顺序语句包括:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句25六六 1位二进制全加器的位二进制全加器的VHDL设计设计半加器h_adder电路图1、半加器描述和、半加器描述和CASE语句语句【例例1】-半加器描述半加器描述(1)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENT

21、ITY h_adder IS PORT( a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC);END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder IS BEGIN so = NOT(a XOR (NOT b); co = a AND b; END ARCHITECTURE fh1 26【例例2】 -半加器描述半加器描述(2)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b: IN STD_LOGIC; co, so: OUT STD

22、_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_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 ;CASE语句语句并置操作并置操作符符&27(1 1) CASECASE语句语句 CASECASE语句属于顺序语句,必须放在进程语句中,语句属于顺序语句,必须放在进程语句中,CASECASE语语句的一

23、般表达式是:句的一般表达式是:CASE ISWHEN = ; . ; ;WHEN = ; . ; ;.WHEN OTHERS = ;END CASE ;p 选择值或标识符选择值或标识符的的值必须在值必须在表达式表达式的取值范围内。的取值范围内。p OTHERSOTHERS作为最后一种条件取值,只能出现一次,以涵盖表作为最后一种条件取值,只能出现一次,以涵盖表达式未列出的值。达式未列出的值。p 关键词关键词NULLNULL表示不做任何操作。表示不做任何操作。p 相同的选择值只能出现一次,相同的选择值只能出现一次,CASECASE语句执行时,只能选中语句执行时,只能选中所列条件语句中的一条。所列条

24、件语句中的一条。 28【例例3】 -半加器描述半加器描述(3) SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0) ; BEGIN abc = a & b ; so =cso(1); co cso cso cso cso=“01”; END CASE; END PROCESS;END ARCHITECTURE fh1 ;信号合并信号合并并置操并置操作符作符&29(2 2)标准逻辑矢量数据类型)标准逻辑矢量数据类型STD_LOGIC_VECTORSTD_LOGIC_VECTOR 定义在定义在STD_LOGIC_1164程序包中,可以表示多通道端口、程序包中

25、,可以表示多通道端口、节点、总线。节点、总线。 STD_LOGIC_VECTOR被定义为标准的一维数组,数组中每被定义为标准的一维数组,数组中每一个元素都是一个元素都是STD_LOGIC数据类型。数据类型。 使用使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位中,必须注明其数组宽度,即位宽,如宽,如B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) BIT_VECTOR为位矢量数据类型,其每一个元素都是为位矢量数据类型,其每一个元素都是BIT数数据类型。据类型。30(3 3)并

26、置操作符)并置操作符 SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; .a = 1 0 d(1) 1 ; - 元素与元素并置,并置后的数组长度为元素与元素并置,并置后的数组长度为4 .IF a d = 101011 THEN . - 在在IF条件句中可以使用并置符条件句中可以使用并置符 312 2 全加器描述和例化语句全加器描述和例化语句全加器全加器f_adder电路图电路图【例例4】 LIBRARY IEEE ;-或门逻辑描述或门逻辑描述 USE IEEE.STD_LOG

27、IC_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 连接端口名连接端口名,);33u1 : h_adder PORT MAP (a=ain,b=bin,co=d,so=e); u2 : h_adder PORT MAP (a=e,b=cin,co=f,so=sum);u3 : or2a PORT MAP (a=d,b=f,c=cout);全加器全加器f_adder电路图电路图34 (2)全加器

28、描述全加器描述 LIBRARY IEEE; -1位二进制全加器顶层设计描述位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder;ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPO

29、NENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT; SIGNAL d,e,f : STD_LOGIC; BEGIN u1 : h_adder PORT MAP(a=ain,b=bin,co=d,so=e); u2 : h_adder PORT MAP(a=e, b=cin,co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1;35LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;

30、 ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END; ARCHITECTURE 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

31、 ; END bhv;3.2 3.2 基本时序电路的基本时序电路的VHDLVHDL描术描术一、一、D D触发器的触发器的VHDLVHDL描述描述D触发器361 1、SIGNALSIGNAL信号定义和数据对象信号定义和数据对象VHDL语言的数据对象有三类:语言的数据对象有三类:信号(信号(SIGNAL)、)、变量(变量(VARIABLE)、常量()、常量(CONSTANT)含义:含义:n是电子电路内部硬件实体相互连接的抽象表示;是电子电路内部硬件实体相互连接的抽象表示;n可代表连线、内连元件、或端口;可代表连线、内连元件、或端口;n在结构体在结构体Architecture、包集合、包集合Pack

32、age和实体和实体Entity说明中使说明中使用;用;一般格式:一般格式: SIGNAL 信号名:数据类型、约束条件:表达式;信号名:数据类型、约束条件:表达式; 信号使用规则:信号使用规则: “=”表示赋值,是信号值的传递,允许产生延迟。表示赋值,是信号值的传递,允许产生延迟。 如如:T1=T2 AFTER 20ns; 37SIGNAL temp : Std_Logic_Vector (7 downto 0);temp = “10101010”;temp(7) = 1;temp (7 downto 4) = “1010”;多位赋值用双引号多位赋值用双引号逐位赋值用单引号逐位赋值用单引号信号使

33、用信号使用实例实例1:38ENTITY reg1 IS PORT ( d: in BIT; clk: in BIT; q: out BIT); END reg1; ARCHITECTURE reg1 OF reg1 IS SIGNAL a, b : BIT; BEGIN PROCESS (clk) BEGIN IF clk=1 AND clkEVENT THEN a = d; b = a; q = b; END IF; END PROCESS; END reg1; 程序如下:程序如下:39LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY simp

34、ISPORT(a, b, c, d : IN Std_Logic; g : OUT Std_Logic);END simp;a ab bc cd dg gef fARCHITECTURE logic OF simp ISSIGNAL e,f : Std_Logic; BEGIN e = a or b; f=not(c or d); g =e and f;END logic;信号使用信号使用实例实例2:402 2、上升沿检测表式和信号属性函数、上升沿检测表式和信号属性函数EVENTEVENT 关关键键词词EVENT是是信信号号属属性性,VHDL通通过过以以下下表表达达式式来来测测定定某信号的跳变

35、边沿:某信号的跳变边沿: 信号名信号名EVENTp 对信号在当前信号在当前时间段时间段内发生事件检测;内发生事件检测;p 发生事件是指信号的生事件是指信号的电平平发生生变化。化。clk: in Std_LogicIF CLKEVENT AND CLK = 1CLK上升上升沿检测沿检测41【例例】PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROC

36、ESS; END; 例例2的电路图的电路图45三、实现时序电路的三、实现时序电路的VHDL不同表达方式不同表达方式【例例1】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ;【例例2】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例4-11 THEN Q = D ; END IF; END PROCESS ;46【例例3】

37、LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY 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) THEN Q1 = D ; END IF; Q = Q1 ; END PROCESS ; END ;rising_edge为为STD_LOGIC_

38、1164程序包中程序包中预定义函数。预定义函数。47【例例4】 . PROCESS BEGIN wait until CLK = 1 ; -利用利用wait语句语句 Q = D ; END PROCESS;【例例5】. PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF; END PROCESS ;【例例6】. PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PRO

39、CESS ;三、实现时序电路的三、实现时序电路的VHDL不同表达方式不同表达方式48三、实现时序电路的三、实现时序电路的VHDL不同表达方式不同表达方式边沿型触发器时序波形边沿型触发器时序波形电平触发型寄存器的时序波形电平触发型寄存器的时序波形49四、异步时序电路设计四、异步时序电路设计ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGIN PRO1:PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT(Q2 OR A); END IF; END PROCESS

40、; PRO2:PROCESS (Q1) BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ=Q2 ; END PEOCESS; END异步逻辑用多异步逻辑用多个时钟进程语个时钟进程语句来构成。句来构成。50【例例】ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ; END ; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q

41、= Q + 1 ; END IF; END PROCESS ;END bhv;3.3 计数器的计数器的VHDL设计设计一 4位二进制加法计数器的设计取整数数据类型,为什么?端口信号模式取BUFFER,为什么?当前周期注意整数和位的不同表达方式!下一周期整数范围51二 整数、自然数和正整数数据类型l整数类型INTEGER包含的元素包含正整数、负整数和零。l通常VHDL仿真器将INTEGER类型作为有符号数,VHDL综合器将INTEGER类型作为无符号数。lVHDL综合器要求必须使用RANGERANGE子句为所定义的数限定范围,然后据此决定表示此信号或变量的二进制位数。l整数常量的书写方式示例如下

42、:1 十进制整数0 十进制整数35 十进制整数10E3 十进制整数16#D9#十六进制整数8#720#八进制整数 2#11010010# 二进制整数NATURAL:自然数类型POSITIVE: 整数类型定义于标准程序包STANDARD52【例例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ; END ; ARCHITECTURE bhv

43、 OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; END PROCESS ; QX) 为了简化表达才使用短语为了简化表达才使用短语“(OTHERS=X)”,这是一个省略这是一个省略赋值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,赋值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,如以下语句:如以下语句: SIGNAL d1,d2 : STD_LOGIC_VECTOR(4 DOWN

44、TO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ; d21,4=1,others=0); 则则d1为为00000,a1为为0000000000000000 , d2为为 1001056BEGIN IF RST = 1 THEN CQI := (OTHERS =0); -计数器复位计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数检测是否允许计数 IF CQI 0); -大于大于9,计数值

45、清零,计数值清零 END IF; END IF; END IF; IF CQI = 1001 THEN COUT = 1; -计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT = 0; END IF; CQ 0); -计数器复位计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数检测是否允许计数 IF CQI 0); -大于大于9,计数值清零,计数值清零 END IF; END IF; END IF; IF CQI = 1001 THEN COUT = 1; -计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出将计数值向端口输出 END PROCESS; END behav; 图图 RTL电路电路58图图3 例一的例一的RTL电路电路图图4 例一的工作时序例一的工作时序

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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