EDA技术实用教程第6章.ppt
《EDA技术实用教程第6章.ppt》由会员分享,可在线阅读,更多相关《EDA技术实用教程第6章.ppt(66页珍藏版)》请在三一办公上搜索。
1、EDA 技术实用教程,第 6 章 VHDL设计进阶,6.1 数据对象(常数、信号、变量),KX康芯科技,6.1.1 常数,常数定义的一般表述如下:CONSTANT 常数名:数据类型:=表达式;,CONSTANT FBT:STD_LOGIC_VECTOR:=010110;-标准位矢类型 CONSTANT DATAIN:INTEGER:=15;-整数类型,6.1 数据对象,KX康芯科技,6.1.2 变量,变量赋值的一般表述如下:目标变量名:=表达式,6.1 数据对象,KX康芯科技,6.1.3 信号,SIGNAL 信号名:数据类型:=初始值;,目标信号名=表达式 AFTER 时间量;,SIGNAL
2、a,b,c,y,z:INTEGER;.PROCESS(a,b,c)BEGIN y=a+b;z=c a;y=b;END PROCESS;,6.1 数据对象,KX康芯科技,6.1.4 进程中的信号与变量赋值,表6-1 信号与变量赋值语句功能的比较,KX康芯科技,6.1.4 进程中的信号与变量赋值,【例6-1】.ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS(CLK)VARIABLE QQ:STD_LOGIC;BEGIN IF CLKEVENT AND CLK=1 THEN QQ:=D1;END IF;END PROCESS;Q1=QQ;END;,6.1 数据对象
3、,KX康芯科技,6.1.4 进程中的信号与变量赋值,【例6-2】.ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN QQ=D1;END IF;END PROCESS;Q1=QQ;END;,6.1 数据对象,KX康芯科技,6.1.4 进程中的信号与变量赋值,【例6-3】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK,D1:IN STD_LOGIC;Q1:OUT STD_
4、LOGIC);END;ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN A=D1;B=A;Q1=B;END IF;END PROCESS;END;,KX康芯科技,6.1.4 进程中的信号与变量赋值,6.1 数据对象,图6-1 例6-3的RTL电路 图6-2 D触发器电路,KX康芯科技,6.1.4 进程中的信号与变量赋值,【例6-4】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PO
5、RT(CLK,D1:IN STD_LOGIC;Q1:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS(CLK)VARIABLE A,B:STD_LOGIC;BEGIN IF CLKEVENT AND CLK=1 THEN A:=D1;B:=A;Q1=B;END IF;END PROCESS;END;,KX康芯科技,6.1.4 进程中的信号与变量赋值,【例6-5】SIGNAL in1,in2,e1,.:STD_LOGIC;.PROCESS(in1,in2,.)VARIABLE c1,.:STD_LOGIC_VECTOR(3
6、DOWNTO 0);BEGIN IF in1=1 THEN.-第 1 行 e1=1010;-第 2 行.IF in2=0 THEN.-第 15+n 行.c1:=0011;-第 30+m 行.END IF;END PROCESS;,6.1 数据对象,KX康芯科技,【例6-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval:i
7、nteger range 7 downto 0;BEGINprocess(i0,i1,i2,i3,a,b)begin muxval q q q q null;end case;end process;END body_mux4;,KX康芯科技,【例6-7】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(i0,i1,i2,i3
8、,a,b)variable muxval:integer range 7 downto 0;begin muxval:=0;if(a=1)then muxval:=muxval+1;end if;if(b=1)then muxval:=muxval+2;end if;case muxval is when 0=q q q q null;end case;end process;END body_mux4;,KX康芯科技,6.1.4 进程中的信号与变量赋值,图6-3 例6-6的RTL电路(Synplify综合),KX康芯科技,6.1.4 进程中的信号与变量赋值,图6-4 例6-7的RTL电路(S
9、ynplify综合),KX康芯科技,6.1.4 进程中的信号与变量赋值,6.1 数据对象,图6-5 例6-6中错误的工作时序,KX康芯科技,6.1.4 进程中的信号与变量赋值,6.1 数据对象,图6-6 例6-7中正确的工作时序,KX康芯科技,【例6-8】Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT IS PORT(CLK,C0:IN STD_LOGIC;-时钟和进位输入 MD:IN STD_LOGIC_VECTOR(2 DOWNTO 0);-移位模式控制字 D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-待加
10、载移位的数据 QB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-移位数据输出 CN:OUT STD_LOGIC);-进位输出END ENTITY;ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL CY:STD_LOGIC;BEGIN PROCESS(CLK,MD,C0)BEGIN IF CLKEVENT AND CLK=1 THEN CASE MD IS WHEN 001=REG(0)REG(0)=REG(7);(接下页),KX康芯科技,(接上页)REG(7 DOW
11、NTO 1)REG(7)REG(7)REG(7 DOWNTO 0)REG=REG;CY=CY;-保持 END CASE;END IF;END PROCESS;QB(7 DOWNTO 0)=REG(7 DOWNTO 0);CN=CY;-移位后输出END BEHAV;,KX康芯科技,6.1.4 进程中的信号与变量赋值,6.1 数据对象,图6-7 例6-8中带进位循环左移仿真波形(MD=001),KX康芯科技,6.2.1 三态门设计,6.2 双向和三态电路信号赋值例解,【例6-9】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_s IS por
12、t(enable:IN STD_LOGIC;datain:IN STD_LOGIC_VECTOR(7 DOWNTO 0);dataout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END tri_s;ARCHITECTURE bhv OF tri_s ISBEGINPROCESS(enable,datain)BEGIN IF enable=1 THEN dataout=datain;ELSE dataout=ZZZZZZZZ;END IF;END PROCESS;END bhv;,KX康芯科技,6.2.1 三态门设计,6.2 双向和三态电路信号赋值例解,图6-8 8位3
13、态控制门电路(Synplify综合),KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,【例6-10】library ieee;use ieee.std_logic_1164.all;entity tri_state isport(control:in std_logic;in1:in std_logic_vector(7 downto 0);q:inout std_logic_vector(7 downto 0);x:out std_logic_vector(7 downto 0);end tri_state;architecture body_tri of tri
14、_state isbeginprocess(control,q,in1)beginif(control=0)then x=q;else q=in1;x=ZZZZZZZZ;end if;end process;end body_tri;,KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,【例6-11】(以上部分同上例)process(control,q,in1)beginif(control=0)then x=q;q=ZZZZZZZZ;else q=in1;x=ZZZZZZZZ;end if;end process;end body_tri;,KX康芯科技,6.2.2
15、双向端口设计,6.2 双向和三态电路信号赋值例解,图6-9 例6-10的仿真波形图,KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,图6-10 例6-11的仿真波形图,KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,图6-11 例6-10的综合结果(Synplify综合),KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,图6-12 例6-11的综合结果(Synplify综合),KX康芯科技,6.2.3 三态总线电路设计,【例6-12】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL
16、L;ENTITY tristate2 IS port(input3,input2,input1,input0:IN STD_LOGIC_VECTOR(7 DOWNTO 0);enable:IN STD_LOGIC_VECTOR(1 DOWNTO 0);output:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END tristate2;ARCHITECTURE multiple_drivers OF tristate2 ISBEGINPROCESS(enable,input3,input2,input1,input0)BEGIN IF enable=00 THEN out
17、put Z);END IF;IF enable=01 THEN output Z);END IF;(接下页),KX康芯科技,6.2.3 三态总线电路设计,(接上页)IF enable=10 THEN output Z);END IF;IF enable=11 THEN output Z);END IF;END PROCESS;END multiple_drivers;,KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,【例6-13】(注:MaxplusII不支持本例)library ieee;use ieee.std_logic_1164.all;entity tri
18、2 isport(ctl:in std_logic_vector(1 downto 0);datain1,datain2,datain3,datain4:in std_logic_vector(7 downto 0);q:out std_logic_vector(7 downto 0);end tri2;architecture body_tri of tri2 isbegin q Z);q Z);q Z);q Z);end body_tri;,KX康芯科技,6.2.2 双向端口设计,6.2 双向和三态电路信号赋值例解,图6-13 例6-12错误的综合结果(Synplify综合结果),KX康芯
19、科技,6.2.2 双向端口设计,图6-14 例6-13正确的综合结果(Synplify综合结果),KX康芯科技,6.3 IF语句概述,(1)IF 条件句 Then 顺序语句 END IF;,(2)IF 条件句 Then 顺序语句 ELSE 顺序语句 END IF;,(3)IF 条件句 Then IF 条件句 Then.END IF END IF,(4)IF 条件句 Then 顺序语句ELSIF 条件句 Then顺序语句.ELSE 顺序语句END IF,KX康芯科技,6.3 IF语句概述,【例6-14】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY
20、 control_stmts ISPORT(a,b,c:IN BOOLEAN;output:OUT BOOLEAN);END control_stmts;ARCHITECTURE example OF control_stmts IS BEGIN PROCESS(a,b,c)VARIABLE n:BOOLEAN;BEGIN IF a THEN n:=b;ELSE n:=c;END IF;output=n;END PROCESS;END example;,KX康芯科技,6.3 IF语句概述,表6-2 8线-3线优先编码器真值表,注:表中的“x”为任意,类似VHDL中的“”值。,KX康芯科技,【例
21、6-15】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT(din:IN STD_LOGIC_VECTOR(0 TO 7);output:OUT STD_LOGIC_VECTOR(0 TO 2);END coder;ARCHITECTURE behav OF coder IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN PROCESS(din)BEGIN IF(din(7)=0)THEN output=000;ELSIF(din(6)=0)THEN output=100;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 实用教程
链接地址:https://www.31ppt.com/p-6504913.html