资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第,*,页,第四章,VHDL,设计初步,第四章,VHDL,设计初步,EDA,VHDL(Very High Speed Integrated Circuit Hardware Description Language),,意为超高速集成电路硬件描述语言。由美国国防部,70,80,年代组织研制开发,,1985,年完成第一版,,1987,年成为,IEEE Std1076-1987,。美国国防部规定所有官方的,ASIC,设计都必须用,VHDL,为设计描述语言,此后渐渐成为工业标准为大家接受。,1993,年修改成,IEEE Std1164-1993,。,1995,年,中国国家技术监督局组织编撰并出版,CAD,通用技术规范,,推荐,VHDL,语言作为我国电子设计自动化硬件描述语言的国家标准。,VHDL,的由来,4.1,概述,一些语法约定,可选内容,大小写不敏感,-,后面为注释,层次缩进,源文件名,必须,与实体名一致,4.2 VHDL,语言的基本单元及其构成,4.2.1 2,选,1,多路选择器的,VHDL,描述,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY mux21 IS,PORT(a,b,s:IN BIT;,q:OUT BIT,);,END mux21;,ARCHITECTURE connect OF mux21 IS,BEGIN,q=a WHEN s=0 ELSE,b;,END connect;,设计一个,2,选,1,多路通道,程序包,实体,结构体,信号传输符号,4.2.2 VHDL,程序的基本结构,1,、,ENTITY,(实体)是,VHDL,设计中最基本的组成部分之一,它类似于原理图中的一个部件符号,它并不描述设计的具体功能,只定义了该设计所需的全部输入,/,输出信号。,实体的格式如下,:,ENTITY,实体名,IS,GENERIC,(常数名,:,数据类型,:=,设定值,),;,PORT(,列出设计的所有输入,/,输出信号,);,END,实体名,;,VHDL,结构要点,实际上是器件名,最好用相应功能来确定,如,counter4b,,,adder8b,。注意不能用,prim,等库的元件的名字。,规定实体的内部特性参数,如端口大小,子元件数目,定时特性等。,端口说明格式为:,PORT(,端口名:端口模式 数据类型,),;,VHDL,结构要点,IN OUT INOUT,BUFFER,端口模式:,用来说明数据、信号通过该端口的方向。,(,1,),IN,信号进入实体;,(,2,),OUT,信号离开实体,不能在内部反馈使用;,(,3,),INOUT,信号是双向的,既可进入也可离开实体;,(,4,),BUFFER,信号输出到实体外部,但同时也可在,实体内部反馈,允许内部引用该端口的信号。,注意,简单地说,=,或,:=,In,端口,out,端口,=,或,:=,buffer,端口,=,或,:=,buffer,端口,VHDL,结构要点,In,信号只能被引用,不能被赋值,out,信号只能被赋值,不能被引用,buffer,信号可以被引用,也可以被赋值,2,、,Arcthitecture,(结构体),格式:,Arcthitecture,结构体名,of,实体名,is,说明语句,内部信号、常数、元件、数据类型、函数等的定义,begin,功能描述语句,end,结构体名;,VHDL,结构要点,并行语句或顺序语句或它们的混合。,描述器件内部逻辑功能或电路结构。,VHDL,结构要点,说明语句,说明功能描述中用到的,信号(,SIGNAL,),数据类型(,TYPE,),常数(,CONSTANT,),元件(,COMPONENT,),函数(,FUNCTION,),过程(,PROCEDURE,),VHDL,结构要点,功能描述:块语句、进程语句、信号赋值语句、子程序调用语句、元件例化语句,多个语句可以是并行执行的,也可顺序执行,取决于所使用的语句类型:,块语句:多个并行语句构成的模块,进程语句:顺序语句模块,信号赋值语句:向信号或端口赋值,子程序调用语句:调用一个已设计好子程序。,元件例化语句:调用元件,并将元件拼接为电路模块,VHDL,结构要点,ENTITY mux21aIS,PORT(a,b:IN BIT;,s:INBIT;,q:OUT BIT);,END ENTITY mux21a;,ARCHITECTURE one OF mux21a IS,BEGIN,q,=,a,WHEN,s=0,ELSE,b;,END ARCHITECTURE one;,WHEN_ELSE,并行赋值语句,赋值语句,条件判断表达式,ARCHITECTURE one OF mux21a IS,SIGNAL d,e:BIT;,BEGIN,d=a,AND,(,NOT,s);,e=b,AND,s;,q=d,OR,e;,END ARCHITECTURE one;,逻辑操作符:,BIT,,,BOOLEAN,,,STD_LOGIC,ARCHITECTURE one OF mux21a IS,BEGIN,q=(a AND(NOT s)OR(b AND s);,END ARCHITECTURE one;,ARCHITECTURE one OF mux21a IS,BEGIN,PROCESS,(,a,b,s,),BEGIN,IF,s=0,THEN,q=a;,ELSE,qNew,File,Save,VHDL,文件,.vhd,AHDL,文件,.tdf,Verilog,文件,.v,技巧:从保存路径直接新建一个文件夹,将当前设计指定为工程,然后选择器件、分配引脚,File-Project-,Set Project to Current File,排错,有两种定位错误的方法,第,1,步、单击,Error,行,使之反色显示,第,2,步、单击,Locate,按钮,直接双击,Error,行,常见错误,标点错误,将设计文件放于根目录下,没有放在工作库下,文件后缀,.vhd,设成,.tdf,设计文件名和实体名不一致,底层设计没有运行,create default include file,命令,仿真下载,时序仿真,和,功能仿真,的意义,时序仿真,就是接近真实器件运行特性的时序仿真,仿,文件中已包含了器件硬件特性参数,因而仿真精度高。,但时序仿真的仿真文件必须来自针对具体器件的综合,器与适配器,。,功能仿真,是直接对,VHDL,、原理图描述或其它描述形式,的逻辑功能进行测试模拟,以了解其实现的功能是否,满足原设计要求的过程。仿真过程不涉及任何具体器,件的硬件特性,。,仿照第三章的内容进行仿真和下载,LIBRARY,IEEE,;,USE,IEEE.STD_LOGIC_1164.,ALL,;,ENTITY,DFF1,IS,PORT,(clk:,IN,STD_LOGIC;,d:,IN,STD_LOGIC;,q:,OUT,STD_LOGIC);,END,DFF1;,ddf1,打开,IEEE,库,STD_LOGIC:,标准逻辑位,在综合器中,,STD_LOGIC,被看作有,9,种值,如,-,、,X,、,0,、,1,和,Z,等,而,BIT,只能取,0,和,1,程序包,4.4 VHDL,程序设计举例,例,4,1 D,触发器,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,;,END,bhv;,引进内部节点信号,进程语句及敏感信号,检测,clk,上升沿,将数据输出端口,不完整条件语句,顺序,语句,边沿型触发器的时序波形,LIBRARY,IEEE;,USE,IEEE.STD_LOGIC _1164.,all,;,ENTITY,test1,IS,port,(clk,d:,IN,STD_LOGIC;,q:,OUT,STD_LOGIC);,END test1;,ARCHITECTURE,test1_body,OF,test1,IS,BEGIN,PROCESS,(clk),BEGIN,IF,rising_edge(clk),THEN,q=d;,END,IF,;,END,PROCESS,;,END,test1_body;,测定上升沿的函数,,clk,必须是,STD_LOGIC,例,4,1,基本语法小结,定义信号,SIGNAL,:,SIGNAL A1:STD_LOGIC;,信号属性函数,EVENT,PROCESS,语句结构,:,顺序语句,行为描述语句,敏感信号表,,PROCESS,语句特点,时序电路:不完整条件语句产生时序电路,时钟上升沿测试,语句结构,:,CLKEVENT AND CLK=1,RISING_EDGE(),例,4,2,一位全加器,半加器真值表,A,B,S,C,o,0,0,0,0,1,0,1,0,0,1,1,0,1,1,0,1,方法一:根据电路原理图,LIBRARY,IEEE,;,USE,IEEE.STD_LOGIC_1164,.ALL,;,ENTITY,h_adder1,IS,PORT,(a,b:,IN,STD_LOGIC;,co,so:,OUT,STD_LOGIC);,END,h_adder1;,ARCHITECTURE,fh1,OF,h_adder1,IS,BEGIN,so=,NOT(a,XOR,(NOT b);,co=a,AND,b;,END,fh1;,并行赋值语句,方法二:根据真值表,ARCHITECTURE,fh2,OF,h_adder2,IS,SIGNAL,sel:STD_LOGIC_VECTOR(1,DOWNTO,0);,BEGIN,selso=0;coso=1;coso=1;coso=1;co,NULL,;,END,CASE,;,END,PROCESS,;,END,fh2;,并置操作符,完整条件语句,全加器,或门描述,LIBRARY,IEEE;,USE,IEEE.STD_LOGIC_1164.,ALL,;,ENTITY,or2a,IS,PORT,(,a,b:,IN,STD_LOGIC;,c:,OUT,STD_LOGIC);,END,or2a;,ARCHITECTURE,one,OF,or2a,IS,BEGIN,c=a,OR,b;,END,one,;,全加器,LIBRARY,IEEE;,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_adder1,PORT,(a,b:,IN,STD_LOGIC;,co,so:,OUT,STD_LOGIC);,END,COMPONENT;,COMPONENT,or2a,PORT(a,b:,IN,STD_LOGIC;,c:,OUT,STD_LOGIC);,END,COMPONENT,;,SIGNAL,d,e,f:STD_LOGIC;,BEGIN,u1:h_adder1,PORT,MAP,(ain,bin,d,e);,u2:h_adder1,PORT,MAP,(e,cin,f,sum);,u3:or2a,PORT,MAP,(d,f,cout);,END,fd1;,d,e,f,例,4,2,基本语法小结,CASE,语句:,表达真值表,CASEIS,WHEN,;,END CASE;,标准逻辑矢量数据类型:,STD_LOGIC_VECTOR,B,:,OUT STD_LOGIC_VECTOR(7 DOWNTO 0);,SIGNAL A:,STD_LOGIC_VECTOR
展开阅读全文