收藏 分享(赏)

电子自动化第三章 3.8 3.9 VHDL描述风格.ppt

上传人:dreamzhangning 文档编号:3357908 上传时间:2018-10-18 格式:PPT 页数:34 大小:199KB
下载 相关 举报
电子自动化第三章 3.8 3.9 VHDL描述风格.ppt_第1页
第1页 / 共34页
电子自动化第三章 3.8 3.9 VHDL描述风格.ppt_第2页
第2页 / 共34页
电子自动化第三章 3.8 3.9 VHDL描述风格.ppt_第3页
第3页 / 共34页
电子自动化第三章 3.8 3.9 VHDL描述风格.ppt_第4页
第4页 / 共34页
电子自动化第三章 3.8 3.9 VHDL描述风格.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、3.8 VHDL的描述方式,掌握结构体三种不同的描述风格行为描述、数据流描述、结构描述 三种描述风格各自具有什么特点。,行为描述方式是指对系统数学模型的抽象描述,为高级描述,只描述电路的功能,不直接指明或涉及这些行为的硬件结构。 在行为描述方式的程序中,大量采用了算术运算、关系运算、惯性延时、传输延时等难于进行逻辑综合和不能进行逻辑综合的VHDL语句,采用综合能力较强的Cadence、Synopsys等EDA工具。,3.8.1 行为描述,ENTITY cnt10 ISPORT(reset,clk : IN STD_LOGIC;q : OUT STD_LOGIC_VECTOR(3 downto

2、0); END cnt10; ARCHITECTURE behav OF cnt10 ISSIGNAL qo : STD_LOGIC_VECTOR(3 downto 0); BEGINPROCESS (clk,reset,qo)BEGINIF reset=0 THENqo=“0000“;ELSIF (clkevent and clk=1) THENIF qo=“1001“ THENqo=“0000“;ELSEqo=qo+1;END IF;END IF;q=qo;END PROCESS; END behav;,异步清零的模10计数器,它对计数器时钟信号的触发要求作了明确而详细的描述,对时钟信号特

3、定的行为方式所产生的信息后果作了准确的定义。这充分展现了VHDL最为闪光之处。,ELSIF (clkevent and clk=1) THEN,ENTITY cnt10 IS PORT(reset,clk : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(3 downto 0); END cnt10; ARCHITECTURE behav OF cnt10 IS SIGNAL qo : integer range 0 to 15; BEGIN PROCESS (clk,reset,qo) BEGIN IF (clkevent and clk=1) THEN IF

4、 (reset=0 or qo=9) THEN qo=0; ELSE qo=qo+1; END IF; END IF; q=conv_std_logic_vector(qo,4); END PROCESS; END behav;,同步清零的模10计数器,ENTITY cntb ISPORT(reset,en,load,clk : IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 downto 0);q : OUT STD_LOGIC_VECTOR(3 downto 0); END cntb; ARCHITECTURE behav OF cntb ISSIGNAL

5、 qo : STD_LOGIC_VECTOR(3 downto 0); BEGINPROCESS (clk,reset,en,load,qo)BEGINIF reset=0 THENqo=“0000“;ELSIF (clkevent and clk=1) THENIF load=0 THENqo=din;ELSIF en=1 THENqo=qo+1;END IF;END IF;q=qo;END PROCESS; END behav;,4位二进制计数器,行为级描述只描述设计电路的功能或电路的行为,而没有指明或实现这些行为的硬件结构;或者说行为级描述只表示输入输出之间的转换行为,它不包含任何结构信

6、息。行为级描述通常指顺序语句描述,即含有进程的非结构化的逻辑描述。行为级描述的设计模型定义了系统的行为,通常由一个或多个进程构成,每一个进程又包含了一系列的顺序语句。,在应用VHDL进行程序设计时,行为描述方式是最重要 的描述方式,它是VHDL编程的核心,可以说,没有行为描述就没有VHDL。,3.8.2 数据流描述,数据流描述也叫RTL的描述方式,采用寄存器硬件一一对应的直接描述,或者采用寄存器之间的功能描述。 RTL描述方式建立在并行信号赋值语句描述的基础上,描述数据流的运动路径、运动方向和运动结果。 RTL描述方式是真正可以进行逻辑综合的描述方式。 RTL描述方式既可描述时序电路,又可描述

7、组合电路。,4选1多路选择器(RTL描述) LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY mux4_1 ISPORT(d: IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT STD_LOGIC); END mux4_1; ARCHITECTURE rtl OF mux4_1 IS BEGINy=d(0) WHEN sel=“00“ ELSEd(1) WHEN sel=“01“ ELSEd(2) WHEN sel=“10“ ELSEd(3)

8、 ; END rtl;,一位全加器(RTL描述) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDER1B ISPORT(AIN,BIN,CIN:IN BIT;SUM,COUT :OUT BIT); END ENTITY ADDER1B;ARCHITECTURE ART OF ADDER1B ISSUM= AIN XOR BIN XOR CIN;COUNT=(AIB AND BIN)OR (AIN AND CIN) OR (BIN AND CIN); END ARCHITECTURE ART;,使用RTL描述方式应注意问题,PROCESS

9、(sel) BEGINIF(sel=1)THENy=0;ELSEy=1;END IF; END PROCESS;,PROCESS(sel) BEGINIF(sel=0)THENy=1;ELSEy=0;END IF; END PROCESS;,当sel=X时,前一个输出的y值为1,后一个却变成了0。,(一) “X”状态的传递:所谓“X”状态的传递,不确定信号的传递,它将使逻辑电路产生不确定的结果。“不确定状态”在RTL仿真时是允许出现的,但在逻辑综合后的门级电路仿真中是不允许出现的。,PROCESS(sel)BEGINIF(sel=1)THENy=0;ELSIF (sel=0)THENy=1;E

10、LSEy=X;END IF;END PROCESS;,在使用双向数据总线时,其信号取值总会出现高阻状态“Z”。当双向总线的信号去驱动逻辑电路时,就有可能出现“X”状态的传递。为了保证逻辑电路的正常工作,高阻状态“Z”应该禁止。如右图中的en信号。,(二)寄存器RTL描述的限制: 禁止在一个进程中存在两个边沿检测 的寄存器描述; 禁止使用IF语句中的 ELSE 项; 寄存器描述中必须代入信号值。,PROCESS(clk1,clk2)BEGINIF (clk1 EVENT AND clk1=1) THENy=a;END IF;IF (clk2 EVENT AND clk2=1) THENz=b;E

11、ND IF;END PROCESS;,在一个进程中不允许引入两个边沿检测的寄存器进行描述!,PROCESS(clk)BEGINIF (clkEVENT AND clk=1) THENy=a;ELSE - 禁止使用y=b;END IF;END PROCESS;,PROCESS(clk)VARIABLE tmp: STD_LOGIC;BEGINIF (clkEVENT AND clk= 1) THENtmp:=a;END IF;y=tmp;END PROCESS;,禁止使用ELSE!,必须代入信号值!,不可能有这样的硬件电路与之对应!,3.8.3 结构级描述方式,结构描述方式是描述该设计单元的硬件

12、结构,即该硬件是如何构成的。 在多层次的设计中,常采用结构描述方式在高层次的设计模块中调用低层次的设计模块,或者直接用门电路设计单元构造一个复杂的逻辑电路。 编写结构描述程序可模仿逻辑图的绘制方法。 结构描述方式通常采用元件例化语句和生成语句编写程序。,四位等值比较器 ENTITY comp4 ISPORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0);y: OUT STD_LOGIC); END comp4; ARCHITECTURE structural OF comp4 ISCOMPONENT xnor2PORT(in1, in2: IN STD_LOGIC

13、;out: OUT STD_LOGIC);END COMPONENT;COMPONENT and4PORT(in1, in2, in3, in4: IN STD_LOGIC;out: OUT STD_LOGIC);END COMPONENT;SIGNAL s: STD_LOGIC_VECTOR(0 to 3); BEGINu0: xnor2 PORT MAP(a(0),b(0),s(0);u1: xnor2 PORT MAP(a(1),b(1),s(1);u2: xnor2 PORT MAP(a(2),b(2),s(2);u3: xnor2 PORT MAP(a(3),b(3),s(3);u4

14、: and4 PORT MAP(s(0),s(1),s(2),s(3),y); END structural;,编写结构描述程序的主要步骤: 1) 绘制框图。先确定当前设计单元中需要用到的子模块的种类和个数。对每个子模块用一个图符(称为实例元件)来代表,只标出其编号、功能和接口特征(端口及信号流向),而不关心其内部细节。 2) 元件说明。每种子模块分别用一个元件声明语句来说明。 3)信号说明。为各实例元件之间的每条连接线都起一个单独的名字,称为信号名。利用SIGNAL语句对这些信号分别予以说明。 4) 元件例化。根据实例元件的端口与模板元件的端口之间的映射原理,对每个实例元件均可写出一个元件例

15、化语句。 5) 添加必要的框架,完成整个设计文件。,-结构体 1: ARCHITECTURE behavior OF comp4 IS BEGIN Comp: PROCESS(a, b)BEGINIF a=b THENy=1;ELSEy=0;END IF;END PROCESS comp; END behavior;,四位等值比较器三种不同描述风格,-结构体 2: ARCHITECTURE dataflow OF comp4 IS BEGINy=1 WHEN(a=b) ELSE 0; END dataflow;,-结构体 3: ARCHITECTURE structural OF comp4

16、ISCOMPONENT xnor2PORT(in1, in2: IN STD_LOGIC;Out: OUT STD_LOGIC);END COMPONENT;COMPONENT and4PORT(in1, in2, in3, in4: IN STD_LOGIC;Out: OUT STD-LOGIC);END COMPONENT;SIGNAL s: STD_LOGIC_VECTOR(0 to 3); BEGINu0: xnor2 PORT MAP(a(0),b(0),s(0);u1: xnor2 PORT MAP(a(1),b(1),s(1);u2: xnor2 PORT MAP(a(2),b(

17、2),s(2);u3: xnor2 PORT MAP(a(3),b(3),s(3);u4: and4 PORT MAP(s(0),s(1),s(2),s(3),y); END structural;,3.9 基本逻辑电路设计,组合逻辑电路:基本逻辑门电路、3-8译码器、三态门及其总线缓冲器 时序逻辑电路:D触发器、T触发器、JK触发器、RS触发器、寄存器、移位寄存器、计数器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY GATE IS PORT (A,B:IN STD_LOGIC;YAND,YOR,YNAND,YNOR,YNOT,YXOR:O

18、UT STD_LOGIC); END ENTITY GATE;ARCHITECTURE ART OF GATE IS BEGIN YAND=A AND B; -与门输出YOR=A OR B; -或门输出YNAND=A NAND B; -与非门输出YNOR=A NOR B; -或非门输出YNOT=A NOT B; -反相器输出YXOR=A XOR B; -异或门输出 END ARCHITECTURE ART;,基本逻辑门电路,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED_ALL;ENTITY DECO

19、DER ISPORT(INP:IN STD_LOGIC_VECTOR(2 DOWNTO 0);OUTP:OUT BIT_VECTOR (7 DOWNTO 0); END ENTITY DECODER;ARCHITECTURE ART2 OF DECODER IS BEGIN PROCESS(INP) BEGIN OUTP1);OUTP(COVN_INTEGER(INP)=1; END PROCESS; END ARCHITECTURE ART2;,3-8译码器,三态门,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRISTATE IS PO

20、RT (EN,DIN :IN STD_LOGIC;DOUT :OUT STD_LOGIC); END ENTITY TRISTATE;ARCHITECTURE ART OF TRISTATE IS BEGIN PROCESS(EN,DIN) IS BEGINIF EN=1 THENDOUT=DIN;ELSEDOUT=Z;END IF ; END PROCESS; END ARCHITECTURE ART;,总线缓冲器,ENTITY TRI_BUF8 IS PORT (DIN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);EN :IN STD_LOGIC;DOUT:OUT S

21、TD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY TRI_BUF8; ARCHITECTURE ART OF TRI_BUF8 IS BEGIN PROCESS(EN,DIN) IS BEGINIF(EN=1)THENDOUT=DIN;ELSE DOUT=“ZZZZZZZZ“;END IF; END PROCESS; END ARCHITECTURE ART;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DCFQ IS PORT(D,CLK :IN STD_LOGIC;Q :OUT STD_LOGIC); E

22、ND ENTITY DCFQ; ARCHITECTURE ART OF DCFQ IS BEGIN PROCESS(CLK) IS BEGIN IF (CLKEVENT AND CLK=1)THEN - 时钟上升沿触发 Q=D;END IF;END PROCESS; END ARCHITECTURE ART;,D触发器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKCFQ IS PORT(J,K,CLK :IN STD_LOGIC;Q,QB :BUFFER STD_LOGIC); END ENTITY JKCFQ;ARCHITECTURE

23、 ART OF JKCFQ IS SIGNA Q_S,QB_S:STD_LOGIC; BEGIN,JK触发器,PROCESS(CLK,J,K) IS BEGINIF (CLKEVENT AND CLK=1)THEN IF(J=0 AND K=1) THEN Q_S=0;QB_S=1;ELSIF (J=1 AND K=0) THEN Q_S=1;QB_S=0;ELSIF (J=1 AND K=1) THEN Q_S=NOT Q_S;QB_S=NOT QB_S; END IF;END IF ;Q=Q_S;QB=QB_S; END PROCESS; END ARCHITECTURE ART;,JK触

24、发器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG IS PORT(D:IN STD_LOGIC_VECTOR(0 TO 7); CLK:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(0 TO 7); END ENTITY REG;ARCHITECTURE ART OF REG IS BEGIN PROCESS(CLK) BEGINIF(CLKEVENT AND CLK=1)THENQ=D;END IF; END PROCESS; END ARCHITECTURE ART;,寄存器,LIBRARY IEEE

25、; USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFTER IS PORT(DATA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);SHIFT_LEFT:IN STD_LOGIC;SHIFT_RIGHT:IN STD_LOGIC;RESET :IN STD_LOGIC;MODE :IN STD_LOGIC_VECTOR(1 DOWNTO 0);QOUT:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY SHIFTER;ARCHITECTURE ART OF SHIFTER IS BEGIN,移位寄存

26、器,PROCESS BEGINWAIT UNTIL(RISING_EDGE(CLK);IF(RESET=1)THENQOUTQOUTQOUTQOUTNULL;END CASE;END IF; END PROCESS; END ARCHITECTURE ART;,移位寄存器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNTM60 ISPORT(CI:IN STD_LOGIC; -计数控制NRESET:IN STD_LOGIC; -异步复位控制LOAD:IN STD_LOGIC

27、; -置数控制D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK:IN STD_LOGIC;CO:OUT STD_LOGIC; -进位输出QH:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -输出高4位QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -输出低4位 END ENTITY CNTM60;,60进制计数器,ARCHITECTURE ART OF CNTM60 IS BEGIN CO=1WHEN(QH=“0101”AND QL=“1001”AND CI=1)ELSE0; -进位输出的产生PROCESS(

28、CLK,NRESET) BEGINIF(NRESET=0)THEN -异步复位QH=“0000“;QL=“0000“;ELSIF(CLKEVENT AND CLK=1)THEN -同步置数IF(LOAD=1)THENQH=D(7 DOWNTO 4);Q L=D(3 DOWNTO 0);ELSIF(CI=1)THEN -模60的实现IF(QL=9)THENQL=“0000“;,60进制计数器,IF(QH=5)THENQH=“0000“; ELSE -计数功能的实现QH=QH+1; END IF; ELSEQL=QL+1; END IF; END IF; -END IF LOAD END IF; END PROCESS; END ARCHITECTURE ART;,60进制计数器,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报