




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、VHDL的主要构件VHDL 语言参数部分程序包接口部分设计实体描述部分结构体VHDL语言基础 EDA技术的基础知识第1页,共93页。Exampleentity and_2 is port (a, b: in std_logic; Y : out std_logic); end and_2;The Entity describesthe inputs and outputsarchitecture dataflow of and_2 isbegin Y=a and b;end dataflow;The Architecture describes the boxentity nameVHDL
2、 大小写不敏感Library IEEE;use IEEE.std_logic_1164.all;LibraryPackageAND_2abY第2页,共93页。1.实体(Entity)描述此设计功能输入输出端口(Port)在层次化设计时,Port为模块之间的接口在芯片级,则代表具体芯片的管脚A3.0B3.0equalEntity eqcomp4 isport(a, b: in std_logic_vector(3 downto 0); equal:out std_logic );end eqcomp4;第3页,共93页。端口的模式输入(Input)输出(Output)双向(Inout):可代替所
3、有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号,可以返回到实体内部。第4页,共93页。 端口说明PORT ( 端口名,端口名 : 方向 数据类型;:端口名,端口名 : 方向 数据类型 );端口方向 实体INOUTINOUTBUFFERLINKAGE第5页,共93页。2.结构体(Architecture)描述实体硬件的互连关系、数据的传输和变换以及动态行为。语法结构: ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明语句 BEGIN 功能描述语句 END 结构体名 第6页,共93页。
4、结构体有三种描述方式行为描述(behavioral)数据流描述(dataflow)结构化描述(structural)第7页,共93页。行为描述Architecture behavioral of eqcomp4 is begincomp: process (a,b) beginif a=b then equal = 1; else equal =0;end if; end process comp;end behavioral ;高层次的功能描述,不必考虑在电路中到底是怎样实现的。第8页,共93页。数据流描述描述输入信号经过怎样的变换得到输出信号Architecture dataflow1 o
5、f eqcomp4 is begin equal = 1 when a=b else 0;end dataflow1;Architecture dataflow2 of eqcomp4 is beginequal = not(a(0) xor b(0) and not(a(1) xor b(1) and not(a(2) xor b(2) and not(a(3) xor b(3);end dataflow2;当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐第9页,共93页。结构描述architecture struct of eqcomp4 isbegin U0:xnor2
6、 port map(a(0),b(0),x(0); U1:xnor2 port map(a(1),b(1),x(1); U2:xnor2 port map(a(2),b(2),x(2); U3:xnor2 port map(a(3),b(3),x(3); U4:and4 port map(x(0),x(1),x(2),x(3),equal);end struct;类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。一般用于大规模电路的层次化设计时。第10页,共93页。三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复
7、杂电路层次化设计数据流描述布尔函数定义明白不易描述复杂电路,修改不易小门数设计行为描述电路特性清楚明了进行综合效率相对较低大型复杂的电路模块设计第11页,共93页。3. 库、程序包和配置 设计库IEEE库预定义库(隐含打开)STD库STANDARD(隐含说明)TEXTIO(用USE说明)WORK库资 源 库(用LIBRARY)其它库STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_COMPLEXVITAL_TIMINGVITAL_PRIMITIVE(1)库、程序包第12页,共93
8、页。程序包放在库中,使用时用USE语句说明库、程序包说明语句:Library 库名;use 库名.程序包名.项目名;第13页,共93页。(2)配置 一个实体可以有多个结构体描述,但是在进行仿真和综合时,只能一个实体对应一个确定的结构体。配置语句用来确定结构体。语句格式:CONFIGURATION 配置名 OF 实体名ISFOR 被选结构体名END FOR ;END 配置名;第14页,共93页。ENTITY描述電路的I/O介面PackageARCHITECTURE描述電路的特性和運作StructuralData FlowBehavioral不同的描述風格第15页,共93页。二、VHDL的数据对象
9、和数据类型1.VHDL的数据对象 类似于一种容器,接受不同数据类型的赋值 -常数 信号 变量第16页,共93页。数据对象常数(Constant) 固定值,不能在程序中被改变增强程序的可读性,便于修改程序在综合后,连接到电源和地可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定常数说明:Constant 常数名: 数据类型:=表达式例:Constant data_bus_width: integer := 8;Constant ROM_Size: Integer := 16#FFFF#;第17页,共93页。数据对象变量(Variable)临
10、时数据,没有物理意义只能在Process和Function中定义,必须在进程和子程序的说明性区域说明,并只在其内部有效要使其全局有效,先转换为Signal。用 := 进行赋值变量说明: variable 变量名: 数据类型 例:variable In_fetch: Boolean; variable result : std_logic := 0;第18页,共93页。变量赋值整体赋值:temp := “10101010”;temp := x “ AA” ; 逐位赋值:temp(7) := 1;多位赋值temp (7 downto 4) := “1010”;多位赋值用双引号逐位赋值用单引号赋值标
11、志第19页,共93页。数据对象信号(Signals) 代表连线,Port也是一种信号在Entity中和Architecture中定义用 = 进行赋值保留字 SIGNAL信号说明: signal 信号名: 数据类型;例:signal count:bit_vector(3 downto 0):=“0011”; signal Enable: Bit;signal CLK, CLEAR: Bit:=1;第20页,共93页。信号举例LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY simp ISPORT (a, b, c, d : IN Std_Logic;
12、g : OUT Std_Logic);END simp;ARCHITECTURE logic OF simp ISSIGNAL e,f : Std_Logic;BEGINe = a or b;f=not(c or d);g =e and f;END logic;abcdgef端口信号在构造体内声明的内部连接信号第21页,共93页。信号赋值SIGNAL temp : Std_Logic_Vector (7 downto 0);整体赋值:temp = “10101010”;temp = x“ AA” ; 逐位赋值:temp(7) = 1;多位赋值:temp (7 downto 4) = “1010
13、”;多位赋值用双引号逐位赋值用单引号赋值标志第22页,共93页。信号和变量的作用范围ARCHITECTURESIGNAL 描述label1: PROCESS1VARIABLE 描述label2: PROCESS2VARIABLE 描述在进程的外面声明作用范围为全局在进程内部说明作用范围为进程内第23页,共93页。信号和变量的区别信号变量赋值符号=:=功能电路的内部连接内部数据交换作用范围全局,进程和进程之间的通信进程的内部行为延迟一定时间后才赋值立即赋值第24页,共93页。2. VHDL的数据类型(1) 标准数据类型(编程者可直接使用) 预定义类型在VHDL标准程序包STANDARD中定义,在
14、应用中自动包含进VHDL的源文件,不需要USE语句显示调用。数据类型如下: 第25页,共93页。1)整数(INTEGER)在VHDL语言中,整数的表示范围为21474836472147483647,即从(2311)到(2311)。2)实数(REAL)实数的定义值范围为1.0E+381.0E+38。实数有正负数,书写时一定要有小数点。例如:1.0,+2.5,1.0E+38第26页,共93页。3)位(BIT)用来表示数字系统中的信号值。位值用字符0或者1(将值放在引号中)表示。与整数中的1和0不同,1和0仅仅表示一个位的两种取值。4)位矢量(BIT_VECTOR)位矢量是用双引号括起来的一组数据。
15、例如:“001100”,X“00bb”。在这里位矢量前面的X表示是十六进制。使用位矢量时必须注明位宽,即数组中元素个数和排列,例如:SIGNAL s1:BIT_VECTOR(15 DOWNTO 0); 第27页,共93页。5)布尔量(BOOLEAN)一个布尔量具有两种状态,“真”或者“假”。没有数值的含义,也不能进行算术运算。它能进行关系运算。例如,它可以在if语句中被测试,测试结果产生一个布尔量TRUE或者FALSE。 6)字符(CHARACTER)用单引号括起来,如a。区分大小写。字符包括从a到z中的任一个字母,从0到9中的任一个数以及空格或者特殊字符,如$,%等等。包集合standard
16、中给出了预定义的128个ASC码字符。第28页,共93页。7)字符串(STRING)由双引号括起来的一个字符序列,也称字符矢量或字符串组。字符串常用于程序的提示和说明。字符串举例如下:VATIABLE string_1 : STRING (0TO 3);string_1:= “a b c d”;第29页,共93页。8)时间(TIME)是一个物理量数据。包含整数和单位两部分,而且整数和单位之间至少应留一个空格的位置。例如55 sec,2 min等。在包集合STANDARD中给出了时间的预定义,其单位为fs,ps,ns,s,ms,sec,min和hr。例如:20 s,100 ns,3 sec。在系
17、统仿真时,时间数据特别有用,用它可以表示信号延时,从而使模型系统能更逼近实际系统的运行环境。第30页,共93页。9)错误等级(SEVERITY LEVEL)用来表征系统的状态,共有4种:note(注意),warning(警告),error(出错),failure(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况,从而使设计人员随时了解当前系统工作的情况,并根据系统的不同状态采取相应的对策。第31页,共93页。10)大于等于零的整数(自然数)(NATURAL),正整数(POSITIVE)这两种数据是整数的子类,NATURAL类数据为取0和0以上的正整数;而POSITIVE 则只能
18、为正整数。第32页,共93页。(2) 用户自定义数据类型 格式:type 数据类型名 is 数据类型定义;可以由用户定义的数据类型有:枚举(ENUMERATED)类型;整数(INTEGER)类型;实数(REAL)、浮点数(FLOATING)类型;数组(ARRAY)类型;。第33页,共93页。枚举类型:把数据类型中的各个元素都列举出来,方便、直观,提高了程序可阅读性。书写格式为:Type 数据类型名称 is (元素1,元素2,);其中,数据类型名称和元素都是一个标识符,例如:Type color is(blue,green,yellow,red);数据类型名称是color,(元素1,元素2,)是
19、(blue,green,yellow,red)。第34页,共93页。枚举类型中所列举的元素在程序编译过程中通常是自动编码,编码顺序是默认的,左边第一个元素编码为0,以后的依次加1。编码过程中自动将每一个元素转变成位矢量,位矢量的长度由所列举元素个数决定。如上例四个元素,位矢量的长度为2,编码默认值为:blue=“00”,green=“01”;Yellow=“10”;red=“11”。初始值默认为第一个值。枚举类型应用举例:交通灯控制器任务和要求:在十字路口的两个方向上各设一组红灯、绿灯和黄灯,显示顺序为:其中一个方向绿灯、黄灯、红灯,另一个方向是红灯、黄灯、绿灯。其中绿灯、黄灯、红灯的持续时间
20、分别是20S、5S、25S。程序如下:第35页,共93页。第36页,共93页。“IEEE.STD_LOGIC”九态数值模型如下:U初始值; X 不定态; 1 逻辑1; 0 逻辑0; Z 高阻态; W 弱信号不定; L 弱信号0 H 弱信号1; 不可能情况 。 (3) IEEE 标准数据类型 “std-logic”和“std-logic-vector”第37页,共93页。三、VHDL语言的操作符和表达式VHDL运算符逻辑运算符AND、OR、NAND、NOR、XOR、NOT关系运算符=、/=、=算术运算符+、-、*、/并置(连接)运算符&第38页,共93页。1.逻辑运算符在VHDL语言中,共有6种
21、逻辑运算符,他们分别是: NOT 取反; AND 与; OR 或; NAND 与非; NOR 或非; XOR 异或。 这6种逻辑运算符可以对“STD_LOGIC ”和“BIT”等逻辑型数据、“STD_LOGIC _VECTOR”逻辑型数组及布尔数据进行逻辑运算。必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。 第39页,共93页。2.算术运算符VHDL语言中有5类算术运算符,他们分别是:求和操作符: (加)、(减)求积操作符:*(乘)、/(除)、MOD(求模)、REM(取余)符号操作符: (正)、(负)混合操作符: *(指数)、ABS(取绝对值)移位操作符:SLL(逻辑左移
22、)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)、ROR逻辑循环右移) 第40页,共93页。3.关系运算符VHDL语言中有6种关系运算符,他们分别是: = 等于; /= 不等于; 小于; 大于; = 大于等于;第41页,共93页。4.并置运算符& 连接 SIGNAL g,h,i:STD_LOGIC;SIGNAL c,d,e:STD_LOGIC _VECTOR(1 TO 0); d = i & NOT h;- -元素与元素并置,形成长度为2的数组 a = c & d; - -数组与数组并置,形成长度为4的数组 第42页,共93页。5.VHDL操作符的优先顺序
23、 运算符 优先级NOT,ABS,* 最高优先级 *,/,MOD,REM +(正号),(负号)+,& SLL,SLA,SRL,SRA,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,XNOR 最低优先级 第43页,共93页。四、VHDL基本语句1.顺序描述语句(1)信号赋值语句和变量赋值语句目标信号=表达式目标变量:表达式第44页,共93页。(2) If 语句语句格式:if 条件 1 then 第1组顺序语句;elseif 条件 2 then 第2组顺序语句; elseif 条件 n then 第n组顺序语句; else 第n+1组顺序语句;end if;第45页,共93页
24、。IF语句的应用 八-三优先级编码器真值表 输 入 输出 d7 d6 d5 d4 d3 d2 d1 d0 q2 q1 q0 0 x x x x x x x 1 1 1 1 0 x x x x x x 1 1 0 1 1 0 x x x x x 1 0 1 1 1 1 0 x x x x 1 0 0 1 1 1 1 0 x x x 0 1 1 1 1 1 1 1 0 x x 0 1 0 1 1 1 1 1 1 0 x 0 0 1 1 1 1 1 1 1 1 0 0 0 0 第46页,共93页。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pr
25、iority_encoder IS PORT ( d : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ) ; q : OUT STD_LOGIC_VECTOR ( 2 DOWNTO 0 ) ) ; END priority_encoder ; ARCHITECTURE example_if OF priority_encoder IS BEGIN 第47页,共93页。 PROCESS ( d ) BEGIN IF ( d (7)=0 ) THEN q= ”111”; ELSIF ( d (6) = 0 ) THEN q= ”110”; ELSIF ( d (5) = 0
26、) THEN q= ”101”; ELSIF ( d (4) = 0 ) THEN q= ”100”; ELSIF ( d (3) = 0 ) THEN q顺序处理语句; : WHEN 条件表达式的值=顺序处理语句; END CASE;第52页,共93页。WHEN 中的条件有下述四种方式: WHEN 值=顺序处理语句; WHEN 值值值=顺序处理语句;-若干可列的值。 WHEN 值TO 值=顺序处理语句;某个区间的值。 WHEN OTHERS=顺序处理语句; 第53页,共93页。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS
27、 PORT ( a,b,d0,d1,d2,d3 : IN STD_LOGIC ; q : OUT STD_LOGIC ) ; END mux4;例:用CASE语句设计四选一电路第54页,共93页。 ARCHITECTURE example_case OF mux4 IS SIGNAL sel : INTEGER RANGE 0 TO 3 ; BEGIN PROCESS ( a,b,d0,d1,d2,d3 ) BEGIN sel=0; IF ( a=1 ) THEN sel=sel+1 ; END IF ; 第55页,共93页。 IF ( b=1 ) THEN sel q q q q=d3; E
28、ND CASE; END PROCESS; END example_case;第56页,共93页。CASE语句设计的四选一电路实现上述程序所描述的是一个平衡结构的四选一电路.FGHOBUFabd0d1d2d3q第57页,共93页。用IF语句设计四选一电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (a, b, d0, d1, d2, d3: IN STD_LOGIC; q: OUT STD_LOGIC); END mux4; ARCHITECTURE example_if OF mux4 IS BEGIN PR
29、OCESS (a, b, d0,d1,d2,d3) BEGIN 第58页,共93页。 IF (a = 0 AND b = 0) THEN q = d0; ELSIF (a = 1 AND b = 0) THE q = d1; ELSIF (a = 0 AND b = 1) THEN q = d2; ELSIF (a = 1 AND b = 1) THEN q = d3; END IF; END PROCESS; END example_if; 第59页,共93页。用IF语句设计四选一电路是权电路GFd0abd1d2d3yF第60页,共93页。2.并行描述语句1进程内部所有的语句都是顺序执行的,
30、 2. 进程和进程之间是并行执行的, 3进程的启动由PROCESS语句的敏感信号量表中的信号量触发,也可以由WAIT语句触发。 (1) 进程语句 (进程名:)process(敏感信号表) 变量说明语句;begin 一组顺序语句;end process (进程名);第61页,共93页。当进程中没有敏感信号表时,进程语句中必须有其他形式的敏感信号激励;而当进程中有敏感信号表时,进程语句中不允许再出现wait、wait for、wait until和wait on 中的任何一种敏感信号激励语句,否则出错。第62页,共93页。用进程设计D触发器 LIBRARY IEEE USE IEEE.STD_LO
31、GIC_1164.ALL; ENTITY dff4 IS PORT (clk, d, clr, pset:IN STD_LOGIC; q:OUT STD_LOGIC ); END dff4; ARCHITECTURE rtl OF dff4 IS BEGIN clrpsetD Qclk第63页,共93页。PROCESS (clk, pset, clr) BEGIN IF (clr = 0 ) THEN q = 0; ELSIF (pset = 0) THEN q = 1; ELSIF (clk EVENT AND clk = 1) THEN q = d; END IF; END PROCESS
32、; END rtl; 第64页,共93页。利用进程语句设计一位加法器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY half_adder IS PORT(a, b: IN STD_LOGIC; sum, carry: OUT STD_LOGIC); END half_adder; 第65页,共93页。ARCHITECTURE behav OF half-adder IS BEGIN PROCESS (a, b) BEGIN sum= a XOR b AFTER 5nS; carry= a AND b AFTER 5nS; END PROCE
33、SS; END behav; 第66页,共93页。进程语句的启动进程语句有两种工作状态:等待状态和执行状态。当敏感信号表中的信号没有变化时,进程处于等待状态;当敏感信号表中的信号有变化时,进程处于执行状态,将顺序执行进程中的语句。当最后一个语句执行完后,就返回进程语句的开始,等待下一次敏感信号表中的信号变化。第67页,共93页。(4) 时间等待 WAIT FOR 时间表达式; 例如 :WAIT FOR 20nS;-同步点在延时20nS后, WAIT ON clk, interrupt FOR 5nS;-当信号clk或 interrupt变化5nS后启动 进程。 第68页,共93页。(2)并发信
34、号赋值语句 信号赋值语句在进程内部出现时,是顺序描述语句,在进程之外出现时,以并发语句的形式出现。是并行执行的,执行顺序与书写顺序无关。第69页,共93页。LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY gate IS PORT(a,b : IN STD_LOGIC); x,y,z :OUT STD_LOGIC);END gate;ARCHITECTURE behave OF gate ISBEGIN x=a AND b; y=a OR b; z=a XOR b;END behave;GATE例:产生右图电路符号的VHDL程序第70页,共93页。(
35、3) 条件信号赋值语句 目标信号=表达式1 when 条件1 else 表达式2 when 条件2 else 表达式3 when 条件3 else 表达式 n-1 when 条件n-1 else 表达式n; 第71页,共93页。AND_GATELIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY and_gate IS PORT(a,b : IN STD_LOGIC); x:OUT STD_LOGIC);END and_gate;ARCHITECTURE rtl OF and_gate ISBEGIN x=0 when a=0 and b=0 else
36、x=0 when a=0 and b=1 else x=0 when a=1 and b=0 else 1;END rtl;第72页,共93页。(4) 选择信号赋值语句 with 表达式 select 目标信号=表达式1 when 条件1, 表达式2 when 条件2, 表达式3 when 条件3, 表达式 n when 条件n, 第73页,共93页。MMUX4第74页,共93页。LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY mmux4 IS PORT(d0,d1,d2,d3: IN STD_LOGIC; sel:in std_logic_vec
37、tor(1 downto 0); q:OUT STD_LOGIC);END mmux4;ARCHITECTURE rtl OF mmux4 ISBEGIN with sel select qa(0), c= x(0), b=b(0) ); 第77页,共93页。在端口元素中定义输入在端口元素中定义输出IC 器件AIC 器件BIC 器件C连接导线连接导线用固定逻辑的IC硬件实现VHDL组件VHDL组件VHDL组件信号信号用VHDL结构实现第78页,共93页。VHDL组件示例第79页,共93页。2输入与门XAB的VHDL程序ENTITY and_gate IS PORT(A,B:IN BIT;X:OUT BIT);END ENTITY and_gate;ARCHITECTURE andfunction OF and_gate ISBEGIN X=A AND B; END ARCHITECTURE andfunction;第80页,共93页。ENTITY OR_gate IS PORT(A,B:IN BIT;X:OUT BIT);END ENTITY OR_gate;ARCHITECTURE ORfunction OF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年中国佛教协会和中国佛学院招聘笔试真题
- 包仓库合同范本
- 保温棉合同范本
- 2024年清远市英德市市区学校选调教师考试真题
- 乡下老宅转让合同范本
- 包山正规合同范本
- 《三、应用设计模板》教学设计 -2024-2025学年初中信息技术人教版七年级上册
- 三层楼房施工合同范本
- Unit 8 Lesson 46 教学设计 - 2024-2025学年冀教版英语八年级下册
- 第2单元 单元备课说明2024-2025学年新教材七年级语文上册同步教学设计(统编版2024)河北专版
- 电梯维护保养规则(TSG T5002-2017)
- 义务教育数学课程标准(2022年版)解读与案例分析
- 体育概论课外体育活动
- 招商代理及商业运营服务 投标方案(技术方案)
- 屋顶拆除方案
- 如何避免时间浪费
- 小学数学六年级解方程练习600题及答案
- IP地址介绍和子网划分
- 架空绝缘配电线路设计规范
- 2023-2024学年北京重点大学附属实验中学八年级(下)开学数学试卷(含解析)
- 2024年新青岛版(六三制)六年级下册科学全册知识点
评论
0/150
提交评论