版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章VHDL设计初步第一页,共46页。VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage),意为超高速集成电路硬件描述语言。由美国国防部70~80年代组织研制开发,1985年完成第一版,1987年成为IEEEStd1076-1987。美国国防部规定所有官方的ASIC设计都必须用VHDL为设计描述语言,此后渐渐成为工业标准为大家接受。1993年修改成IEEEStd1164-1993。1995年,中国国家技术监督局组织编撰并出版《CAD通用技术规范》,推荐VHDL语言作为我国电子设计自动化硬件描述语言的国家标准。VHDL的由来4.1概述第二页,共46页。一些语法约定[]可选内容大小写不敏感--后面为注释层次缩进源文件名必须与实体名一致第三页,共46页。4.2VHDL语言的基本单元及其构成4.2.12选1多路选择器的VHDL描述第四页,共46页。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21IS PORT(a,b,s:INBIT; q:OUTBIT);ENDmux21;ARCHITECTUREconnectOFmux21ISBEGIN q<=aWHENs='0'ELSEb;ENDconnect;设计一个2选1多路通道程序包实体结构体信号传输符号第五页,共46页。第六页,共46页。4.2.2VHDL程序的基本结构第七页,共46页。1、ENTITY(实体)是VHDL设计中最基本的组成部分之一,它类似于原理图中的一个部件符号,它并不描述设计的具体功能,只定义了该设计所需的全部输入/输出信号。实体的格式如下:ENTITY实体名IS[GENERIC(常数名:数据类型[:=设定值]);
PORT(列出设计的所有输入/输出信号);END实体名;VHDL结构要点实际上是器件名,最好用相应功能来确定,如counter4b,adder8b。注意不能用prim等库的元件的名字。规定实体的内部特性参数,如端口大小,子元件数目,定时特性等。第八页,共46页。端口说明格式为:
PORT(端口名:端口模式数据类型…);VHDL结构要点
INOUTINOUT
BUFFER端口模式:用来说明数据、信号通过该端口的方向。(1)IN信号进入实体;(2)OUT信号离开实体,不能在内部反馈使用;(3)INOUT信号是双向的,既可进入也可离开实体;(4)BUFFER
信号输出到实体外部,但同时也可在实体内部反馈,允许内部引用该端口的信号。第九页,共46页。注意简单地说<=或:=In端口
out端口<=或:=
buffer端口<=或:=buffer端口VHDL结构要点In信号只能被引用,不能被赋值out信号只能被赋值,不能被引用buffer信号可以被引用,也可以被赋值第十页,共46页。2、Arcthitecture(结构体)格式:
Arcthitecture结构体名of实体名is[说明语句]内部信号、常数、元件、数据类型、函数等的定义
begin[功能描述语句]end结构体名;
VHDL结构要点并行语句或顺序语句或它们的混合。描述器件内部逻辑功能或电路结构。第十一页,共46页。VHDL结构要点说明语句 说明功能描述中用到的信号(SIGNAL)数据类型(TYPE)常数(CONSTANT)元件(COMPONENT)函数(FUNCTION)过程(PROCEDURE)第十二页,共46页。VHDL结构要点功能描述:块语句、进程语句、信号赋值语句、子程序调用语句、元件例化语句多个语句可以是并行执行的,也可顺序执行,取决于所使用的语句类型:块语句:多个并行语句构成的模块进程语句:顺序语句模块信号赋值语句:向信号或端口赋值子程序调用语句:调用一个已设计好子程序。元件例化语句:调用元件,并将元件拼接为电路模块第十三页,共46页。VHDL结构要点ENTITYmux21a IS PORT (a,b: IN BIT; s: IN BIT; q: OUT BIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aIS BEGIN q<=aWHEN
s='0'
ELSEb;ENDARCHITECTUREone;WHEN_ELSE并行赋值语句赋值语句条件判断表达式第十四页,共46页。ARCHITECTUREoneOFmux21aIS SIGNALd,e:BIT;
BEGIN d<=aAND(NOTs); e<=bANDs; q<=dORe;ENDARCHITECTUREone;逻辑操作符:BIT,BOOLEAN,STD_LOGIC第十五页,共46页。ARCHITECTUREoneOFmux21aIS BEGIN q<=(aAND(NOTs))OR(bANDs);ENDARCHITECTUREone;第十六页,共46页。ARCHITECTUREoneOFmux21aIS BEGIN
PROCESS(a,b,s) BEGIN
IFs='0'THEN q<=a;
ELSE q<=b; ENDIF; ENDPROCESS;ENDARCHITECTUREone;PROCESS引导的语句为进程语句,所有顺序语句都必须放在进程语句中PROCESS语句的敏感信号表IF_THEN_ELSE顺序语句第十七页,共46页。4.3VHDL文本输入设计方法初步File->New…File->Save…VHDL文件.vhdAHDL文件.tdfVerilog文件.v技巧:从保存路径直接新建一个文件夹第十八页,共46页。将当前设计指定为工程然后选择器件、分配引脚File->Project->SetProjecttoCurrentFile第十九页,共46页。排错有两种定位错误的方法第1步、单击Error行,使之反色显示第2步、单击Locate按钮直接双击Error行第二十页,共46页。常见错误标点错误将设计文件放于根目录下,没有放在工作库下文件后缀.vhd设成.tdf设计文件名和实体名不一致底层设计没有运行createdefaultincludefile命令…第二十一页,共46页。仿真下载时序仿真和功能仿真的意义时序仿真就是接近真实器件运行特性的时序仿真,仿文件中已包含了器件硬件特性参数,因而仿真精度高。但时序仿真的仿真文件必须来自针对具体器件的综合器与适配器。功能仿真是直接对VHDL、原理图描述或其它描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计要求的过程。仿真过程不涉及任何具体器件的硬件特性。仿照第三章的内容进行仿真和下载第二十二页,共46页。第二十三页,共46页。LIBRARY
IEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITY
DFF1
IS
PORT
(clk:IN
STD_LOGIC;
d:INSTD_LOGIC;
q:OUT
STD_LOGIC);
ENDDFF1;ddf1打开IEEE库STD_LOGIC:标准逻辑位在综合器中,STD_LOGIC被看作有9种值,如’-’、’X’、’0’、’1’和’Z’等而BIT只能取’0’和’1’程序包4.4VHDL程序设计举例例4-1D触发器第二十四页,共46页。ARCHITECTUREbhvOFDFF1ISSIGNALq1:STD_LOGIC;BEGIN
PROCESS(clk)
BEGIN
IFclk'EVENTANDCLK='1'THEN q1<=D;
END
IF; q<=q1;
END
PROCESS;ENDbhv;引进内部节点信号进程语句及敏感信号检测clk上升沿将数据输出端口不完整条件语句顺序语句第二十五页,共46页。边沿型触发器的时序波形第二十六页,共46页。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.all;ENTITYtest1ISport(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDtest1;ARCHITECTUREtest1_bodyOFtest1ISBEGINPROCESS(clk)BEGIN
IFrising_edge(clk)THENq<=d;
END
IF;END
PROCESS;ENDtest1_body;测定上升沿的函数,clk必须是STD_LOGIC第二十七页,共46页。
例4-1基本语法小结
定义信号SIGNAL:SIGNALA1:STD_LOGIC;信号属性函数EVENTPROCESS语句结构:顺序语句,行为描述语句敏感信号表,PROCESS语句特点
时序电路:不完整条件语句产生时序电路时钟上升沿测试语句结构:
CLK’EVENTANDCLK=‘1‘,RISING_EDGE()第二十八页,共46页。例4-2一位全加器第二十九页,共46页。半加器真值表ABSCo0000101001101101第三十页,共46页。方法一:根据电路原理图LIBRARYIEEE;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
ISBEGIN
so<=NOT(a
XOR
(NOTb));
co<=a
AND
b;END
fh1;并行赋值语句第三十一页,共46页。第三十二页,共46页。方法二:根据真值表…ARCHITECTURE
fh2
OF
h_adder2
ISSIGNAL
sel:STD_LOGIC_VECTOR(1
DOWNTO
0);
BEGIN
sel<=a&b;
PROCESS(sel)
BEGIN
CASE
sel
IS
WHEN
"00"=>so<='0';co<='0';
WHEN
"01"=>so<='1';co<='0';
WHEN
"10"=>so<='1';co<='0';
WHEN
"11"=>so<='1';co<='1';
WHEN
OTHERS=>NULL;
END
CASE;
END
PROCESS;ENDfh2;并置操作符完整条件语句第三十三页,共46页。第三十四页,共46页。全加器或门描述LIBRARY
IEEE;USE
IEEE.STD_LOGIC_1164.ALL;ENTITY
or2aIS
PORT
(a,b:IN
STD_LOGIC;
c:OUT
STD_LOGIC);END
or2a;ARCHITECTURE
one
OF
or2a
ISBEGIN
c<=a
OR
b;END
one;第三十五页,共46页。全加器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_adderIS
PORT(ain,bin,cin:INSTD_LOGIC; cout,sum:OUTSTD_LOGIC);
ENDENTITYf_adder;ARCHITECTUREfd1OFf_adderIS
COMPONENTh_adder1
PORT(a,b:INSTD_LOGIC; co,so:OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTor2a PORT(a,b:INSTD_LOGIC; c:OUTSTD_LOGIC);
END
COMPONENT;
第三十六页,共46页。SIGNAL
d,e,f:STD_LOGIC;BEGINu1:h_adder1PORT
MAP(ain,bin,d,e);u2:h_adder1PORT
MAP(e,cin,f,sum);u3:or2aPORT
MAP(d,f,cout);ENDfd1;def第三十七页,共46页。
例4-2基本语法小结
CASE语句:表达真值表CASE<表达式>ISWHEN<选择值或标识符>=<顺序语句>;……
ENDCASE;第三十八页,共46页。标准逻辑矢量数据类型:STD_LOGIC_VECTORB:OUTSTD_LOGIC_VECTOR(7DOWNTO0);SIGNALA:STD_LOGIC_VECTOR(1TO4);B<=“01100010”;--B(6)=?B(4DOWNTO1)<=“1101”;--B(3)=?A(1TO4)<=“1101”;--A(3)=?B(7DOWNTO4)<=A;--B(6)=A(?)第三十九页,共46页。元件例化语句
COMPONENT元件名 PORT(端口名表); ENDCOMPONENT;例化名:元件名PORTMAP([端口名=>]连接端口名,);
第四十页,共46页。并置操作符:“&”a<='1''0'b(1)e(2)IFad="10100011”THEN第四十一页,共46页。LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYcnt4_1IS
PORT(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论