EDA技术实用教程第6章.ppt
《EDA技术实用教程第6章.ppt》由会员分享,可在线阅读,更多相关《EDA技术实用教程第6章.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、EDA 技术实用教程技术实用教程第第 6 6 章章 VHDL设计进阶设计进阶 6.1 数据对象数据对象(常数、信号、变量常数、信号、变量)K KX康芯科技康芯科技6.1.1 常数常数 常数定义的一般表述如下:常数定义的一般表述如下:CONSTANT 常数名:数据类型常数名:数据类型:=表达式表达式;CONSTANT FBT:STD_LOGIC_VECTOR:=010110;-标准位矢类型标准位矢类型 CONSTANT DATAIN:INTEGER:=15;-整数类型整数类型 6.1 数据对象数据对象 K KX康芯科技康芯科技6.1.2 变量变量 变量赋值的一般表述如下:变量赋值的一般表述如下:
2、目标变量名目标变量名:=表达式表达式 定义变量的一般表述如下:定义变量的一般表述如下:VARIABLE 变量名变量名:数据类型数据类型:=初始值初始值;VARIABLE a:INTEGER RANGE 0 TO 15;-变量变量a定义为常数,取值范围是定义为常数,取值范围是0到到15 VARIABLE d:STD_LOGIC:=1;-变量变量a定义为标准逻辑位数据类型定义为标准逻辑位数据类型,初始值是初始值是1 6.1 数据对象数据对象 K KX康芯科技康芯科技6.1.3 信号信号 SIGNAL 信号名:信号名:数据类型数据类型:=初始值初始值;目标信号名目标信号名=表达式表达式 AFTER
3、时间量时间量;SIGNAL a,b,c,y,z:INTEGER;.PROCESS(a,b,c)BEGIN y=a+b;z=c a;y=b;END PROCESS;6.1 数据对象数据对象 K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 信号信号SIGNAL变量变量VARIABLE基本用法基本用法用于作为电路中的信号连线用于作为电路中的信号连线用用于于作作为为进进程程中中局局部部数数据据存存储储单元单元适用范围适用范围在在整整个个结结构构体体内内的的任任何何地地方方都都能适用能适用只能在所定义的进程中使用只能在所定义的进程中使用行为特性行为特性在进程的最后才对信
4、号赋值在进程的最后才对信号赋值立即赋值立即赋值表表6-1 6-1 信号与变量赋值语句功能的比较信号与变量赋值语句功能的比较 K 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 数据对象数据对象 K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋
5、值【例【例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 数据对象数据对象 K 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_LO
6、GIC );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;K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 6.1 数据对象数据对象 图图6-1 例例6-3的的RTL电路电路 图图6-2 D触发器电路触发器电路 K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值【例【例6-4】LIBRARY IEEE
7、;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(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;K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值【例【例6-5】SIGNAL in1,in2,e1,.
8、:STD_LOGIC;.PROCESS(in1,in2,.)VARIABLE c1,.:STD_LOGIC_VECTOR(3 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 数据对象数据对象 K KX康芯科技康芯科技【例【例6-6】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(i0,i1,i2,i3,a,b:IN
9、STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval:integer range 7 downto 0;BEGINprocess(i0,i1,i2,i3,a,b)begin muxval=0;if(a=1)then muxval=muxval+1;end if;if(b=1)then muxval q q q q null;end case;end process;END body_mux4;K KX康芯科技康芯科技【例【例6-7】LIBRARY IEEE;USE IEEE.STD_
10、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,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
11、0=q q q q null;end case;end process;END body_mux4;K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 图图6-3 例例6-6的的RTL电路(电路(Synplify综合)综合)K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 图图6-4 例例6-7的的RTL电路(电路(Synplify综合)综合)K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 6.1 数据对象数据对象 图图6-5 例例6-6中错误的工作时序中错误的工作时序 K KX康芯科技康芯科技6.
12、1.4 进程中的信号与变量赋值进程中的信号与变量赋值 6.1 数据对象数据对象 图图6-6 例例6-7中正确的工作时序中正确的工作时序 K 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);-待加载移位的数据待加载移位的数据 QB:OUT STD
13、_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)=C0;REG(7 DOWNTO 1)=REG(6 DOWNTO 0);CY REG(0)=R
14、EG(7);(接下页)(接下页)K KX康芯科技康芯科技(接上页)(接上页)REG(7 DOWNTO 1)REG(7)=REG(0);REG(6 DOWNTO 0)REG(7)=C0;REG(6 DOWNTO 0)=REG(7 DOWNTO 1);CY 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;K KX康芯科技康芯科技6.1.4 进程中的信号与变量赋值进程中的信号与变量赋值 6.1 数据对象数据对
15、象 图图6-7 例例6-8中带进位循环左移仿真波形(中带进位循环左移仿真波形(MD=001)K KX康芯科技康芯科技6.2.1 三态门设计三态门设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解【例【例6-9】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_s IS port(enable:IN STD_LOGIC;datain:IN STD_LOGIC_VECTOR(7 DOWNTO 0);dataout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END tri_s;ARCHITECTURE bh
16、v OF tri_s ISBEGINPROCESS(enable,datain)BEGIN IF enable=1 THEN dataout=datain;ELSE dataout=ZZZZZZZZ;END IF;END PROCESS;END bhv;K KX康芯科技康芯科技6.2.1 三态门设计三态门设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解 图图6-8 8位位3态控制门电路(态控制门电路(Synplify综合)综合)K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解【例【例6-10】libra
17、ry 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_state isbeginprocess(control,q,in1)beginif(control=0)then x=q ;else
18、q=in1;x=ZZZZZZZZ;end if;end process;end body_tri;K 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;K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和
19、三态电路信号赋值例解 图图6-9 例例6-10的仿真波形图的仿真波形图 K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解 图图6-10 例例6-11的仿真波形图的仿真波形图 K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解 图图6-11 例例6-10的综合结果(的综合结果(Synplify综合)综合)K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解 图图6-12 例例6-11
20、的综合结果(的综合结果(Synplify综合)综合)K KX康芯科技康芯科技6.2.3 三态总线电路设计三态总线电路设计【例【例6-12】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;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
21、 multiple_drivers OF tristate2 ISBEGINPROCESS(enable,input3,input2,input1,input0)BEGIN IF enable=00 THEN output=input3;ELSE output Z);END IF;IF enable=01 THEN output=input2;ELSE output Z);END IF;(接下页)(接下页)K KX康芯科技康芯科技6.2.3 三态总线电路设计三态总线电路设计(接上页)(接上页)IF enable=10 THEN output=input1;ELSE output Z);END
22、IF;IF enable=11 THEN output=input0;ELSE output Z);END IF;END PROCESS;END multiple_drivers;K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解【例【例6-13】(注:(注:MaxplusII不支持本例)不支持本例)library ieee;use ieee.std_logic_1164.all;entity tri2 isport(ctl:in std_logic_vector(1 downto 0);datain1,datain2,d
23、atain3,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;K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设计 6.2 双向和三态电路信号赋值例解双向和三态电路信号赋值例解 图图6-13 例例6-12错误的综合结果(错误的综合结果(Synplify综合结果)综合结果)K KX康芯科技康芯科技6.2.2 双向端口设计双向端口设
24、计 图图6-14 例例6-13正确正确的综合结果的综合结果(Synplify综合结果)综合结果)K 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 K KX康芯科技康芯科技6.3 IF语句概述语句概
25、述【例【例6-14】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY 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;K KX康芯科技康芯科技6.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 实用教程
限制150内