版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技电子设计及自动第四讲第一页,共三十五页,编辑于2023年,星期一本章要点*VHDL描述语句集合的全貌建立一个清晰的概念;*对VHDL主要描述语句的作用有一个正确的认识;*建立VHDL是一种并行语言的基本概念;第二页,共三十五页,编辑于2023年,星期一VHDL主要描述语句分类VHDL的主要描述语句种类繁多,为了便于学习和理解,我们将VHDL的主要描述语句划分为:“描述功能的语句”和“描述结构的语句”两大部分,如图所示
这两大部分分别由若干语句组成第三页,共三十五页,编辑于2023年,星期一VHDL描述语句功能描述语句(Founction)结构描述语句(Structure)并行赋值语句(ConcurrentAssign)进程语句(Process)断言语句(Assert)块语句(Block)子程序(Subprogram)元件语句(Component)端口映射语句(PortMap)生成语句(Generate)参数说明语句(Generic)等待语句(Wait)顺序赋值语句(SequentAssign)顺序控制语句(SequentControl)IFCASELOOPFORWHILE函数(Function)过程(Procedure)最常用语句第四页,共三十五页,编辑于2023年,星期一VHDL主要描述语句分类在本章中将对图中所列出的所有语句逐一进行具体介绍。如果把每一种语句比喻成一颗树,则上图给出了这些树所构成的森林的面目。由图中可以获得以下信息:
1.
VHDL的主要描述语句由“描述功能的语句”和“描述结构的语句”两个部分组成
2.
描述功能的语句主要有:信号赋值语句,进程语句,断言语句,子程序等;第五页,共三十五页,编辑于2023年,星期一VHDL主要描述语句分类
3.
描述结构的语句主要有:component(元件),portmap(端口映射),generate(生成语句),generic(参数说明语句)等;
4.在所有VHDL语句中,描述功能的进程语句最为复杂。它可以包含等待语句、顺序信号赋值语句和顺序控制语句等三部分,其中,顺序控制语句又可以包含条件语句和循环语句等5种语句。第六页,共三十五页,编辑于2023年,星期一VHDL主要描述语句分类
5.信号的赋值可分为:进程中赋值和进程外赋值两种。进程中赋值使用顺序信号赋值语句。进程外赋值使用并行信号赋值语句。
6.if和case语句是进程语句中实现顺序控制的最常用语句。
第七页,共三十五页,编辑于2023年,星期一VHDL主要描述语句分类另外,在此需要指出两点:1.行为级描述的VHDL程序一般不会用到描述结构的语句。2.
然而除行为级描述外,RTL级和结构级描述都大量使用描述功能的语句。通常情况下VHDL程序都要用到描述功能的语句。电子系统中的行为主要体现在信号的变化,组合和传输,所以一般VHDL程序都会用到描述功能的语句。所以学习的重点是描述功能的语句。第八页,共三十五页,编辑于2023年,星期一描述功能的语句信号赋值语句(Assignment)进程语句(Process)断言语句(Assert)块语句(Block)子程序(Subprogram)第九页,共三十五页,编辑于2023年,星期一对象的赋值VHDL程序中数值的载体称为对象(object)。VHDL中有四种对象:常量(constant)、变量(variable)信号(signal)和文件(file)。对象赋值是电子系统的功能行为赋值语句是描述功能的语句第十页,共三十五页,编辑于2023年,星期一VHDL描述语句行为描述语句(Behaviour)结构描述语句(Structure)并行赋值语句(ConcurrentAssign)进程语句(Process)断言语句(Assert)块语句(Block)子程序(Subprogram)元件语句(Component)端口映射语句(PortMap)生成语句(Generate)参数说明语句(Generic)等待语句(Wait)顺序赋值语句(SequentAssign)顺序控制语句(SequentControl)IFCASELOOPFORWHILE函数(Function)过程(Procedure)最常用语句←第十一页,共三十五页,编辑于2023年,星期一赋值符<=()<=();1,右边信号的值传送给左边的信号;2,左右两边信号宽度必须一致;第十二页,共三十五页,编辑于2023年,星期一ConcurrentAssignmentStatementAlltheConcurrentStatementisexecutedinparallelConcurrentStatementdoesnotcarethepositionwithinthecodingConcurrentStatementis:OUTPUTdependsonINPUTonly第十三页,共三十五页,编辑于2023年,星期一Entitytest1IsPort(a,b:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_aoftest1isbeginc<=aandb;d<=aorb;endtest1_a;Entitytest1IsPort(a,b:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_aoftest1isbegind<=aorb;c<=aandb;endtest1_a;ThistwoexcuteinparallelDoesnotcarethepositionwithinthecoding并行赋值语句(ConcurrentAssignmentStatement)并行赋值语句与语句出现的先后顺序无关。如下例给出的两条语句交换顺序前后等价。第十四页,共三十五页,编辑于2023年,星期一C=ABD=A+Bequivalentc
<=aandb;d<=aorb;d<=aorb;c<=aandb;01010000100100001111两条语句交换顺序前后的仿真波形完全相同,如下图:分析真值得:并行赋值语句(ConcurrentAssignmentStatement)第十五页,共三十五页,编辑于2023年,星期一ConcurrentStatements
for
CombinationalLogic第十六页,共三十五页,编辑于2023年,星期一ConcurrentStatementsThereareseveraldifferentkindsofConcurrentStatements(1)SimpleSignalAssignments(简单信号赋值)(2)ConditionalSignalAssignments(条件信号赋值)(3)SelectedSignalAssignments(选择信号赋值)第十七页,共三十五页,编辑于2023年,星期一Puttingthemalltogether第十八页,共三十五页,编辑于2023年,星期一(1)SimpleSignalAssignmentThiskindofstatementsareexecutedinParallelEntitytest1isport(a,b,e:instd_logic;c,d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbeginc<=aandb;d<=e;endtest1_body;第十九页,共三十五页,编辑于2023年,星期一WhatkindoflogicsupportANDNANDORNORXORNOTmore.......第二十页,共三十五页,编辑于2023年,星期一Wewant5InputsAND-GateQ:ANDisonlyatwoinput,ifIwantmoreinputs,whatcanIdo?A:Itiseasy,weareduewithLanguagenotGraphicEntitytest1isport(a,b,c,d,e:instd_logic;f:outbit);endtest1;architecturetest1_bodyoftest1isbegin
f<=aANDbANDcANDdANDe;endtest1_body;第二十一页,共三十五页,编辑于2023年,星期一(2)ConditionalSignalAssignmentsTheoutputgetthevaluewhentheconditionistruee.g.2to1multiplexerEntitytest1isport(in1,in2,sel:instd_logic;d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbegind<=in1WHENsel=‘0’ELSE
in2;endtest1_body;第二十二页,共三十五页,编辑于2023年,星期一Ifwewantmore--4to1MuxOnceagain,youareduewithLanguagenotGraphic,soitiseasyEntitytest1isport(in1,in2,in3,in4:instd_logic;sel1,sel2:instd_logic;d:outstd_logic);endtest1;architecturetest1_bodyoftest1isbegind<=in1WHENsel1=‘0’andsel2=‘0’ELSEin2WHENsel1=‘0’andsel2=‘1’ELSEin3WHENsel1=‘1’andsel2=‘0’ELSEin4;endtest1_body;第二十三页,共三十五页,编辑于2023年,星期一(3)SelectSignalAssignmentsTheoutputgetvaluewhenmatchingwiththeselecteditemEntitytest1isport(a,b:inbit;sel:inbit;c:outbit);endtest1;architecturetest1_bodyoftest1isbeginWITHselSELECTc<=aWHEN‘1’,--逗号
bWHEN‘0’;--分号endtest1_body;第二十四页,共三十五页,编辑于2023年,星期一IfIwantmorechoice---ItiseasyEntitytest1isport(in1,in2,in3,in4:inbit;sel:ininteger;out1:outbit);endtest1;architecturetest1_bodyoftest1isbeginwithselselectout1<=in1when0,in2when1,in3when2,in4when3;endtest1_body;第二十五页,共三十五页,编辑于2023年,星期一ReviewConcurrentStatementforcombinationallogic(withoutFlip-flopcircuit)eg.decoder,multiplexer,multiplier,adderUnderstandtheusageoftheConcurrentStatementforCombinationalLogicsimplesignalassignmentstatementconditionalsignalassignmentstatementselectedsignalassignmentstatement第二十六页,共三十五页,编辑于2023年,星期一作业EntityMUX_8isport(data_in:instd_logic_vector(7downto0);sel1,sel2,sel3:instd_logic;d:outstd_logic);endtest1;提示:d<=data_in(5);第二十七页,共三十五页,编辑于2023年,星期一作业xyZq1q20000000110101000111101011111提示:信号赋固定值q1<=‘0’;q2<=‘1’;1第二十八页,共三十五页,编辑于2023年,星期一VHDL描述语句行为描述语句(Behaviour)结构描述语句(Structure)并行赋值语句(ConcurrentAssign)进程语句(Process)断言语句(Assert)块语句(Block)子程序(Subprogram)元件语句(Component)端口映射语句(PortMap)生成语句(Generate)参数说明语句(Generic)等待语句(Wait)顺序赋值语句(SequentAssign)顺序控制语句(SequentControl)IFCASELOOPFORWHILE函数(Function)过程(Procedure)最常用语句←第二十九页,共三十五页,编辑于2023年,星期一PROCESS语句一般格式
[进程标号:]PROCESS[(敏感信号表)][IS]〈说明〉;BEGIN〈顺序语句〉;ENDPROCESS;PROCESS是进程语句的标示符,PROCESS前可以加进程标号,也可以没有标号。进程内部〈说明〉部分用于定义本进程所需的局部数据环境,在这里可以说明数据类型、子程序和变量,在此说明区说明的变量,仅在当前进程内可对其进行读/写。BEGIN以后的〈顺序语句〉为进程的执行语句部分。
第三十页,共三十五页,编辑于2023年,星期一ProcessStatementAlltheProcessStatementisexecutedinparallel
(进程与进程之间并行)WithintheProcessStatement,thecodingisexecuteinsequential
(进程内部语句之间串行——顺序执行)ProcessStatement:OUTPUTdependsonINPUTwithSensitivityListtocontroltheeventhappen第三十一页,共三十五页,编辑于2023年,星期一Entitytest1isPort(clk,d1,d2:instd_logic;q1,q2:outstd_logic);endtest1;architecturetest1_bodyoftest1isbeginProcess(clk,d2)beginif(clk’eventandclk=‘1’)thenq2<=d2;endif;endprocess;Process(clk,d1)beginif(clk’eventandclk=‘1’)thenq1<=d1;endif;endprocess;endtest1_body;ThistwoprocessesexecuteinparallelEntitytest1is
Port(clk,d1,d2:instd_logic;
q1,q2:outstd_logic);
endtest1;
architecturetest1_bodyoftest1is
begin
Process(clk,d1)
begin
if(clk’eventandclk=‘1’)then
q1<=d1;
endif;
endprocess;
Process(clk,d2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育法规押题练习试卷B卷附答案
- 2023年航空辅助动力系统资金申请报告
- 三年级数学计算题专项练习汇编及答案集锦
- FOB条件下国际货物买卖协议模板
- 2025年人教版高考历史试题及答案指导
- 2024年度模具采购协议精简样本
- 2024年度矿权出让及转让专项协议
- 2024年矿泉水采购正式协议样本
- 2024年服务协议增补协议样本
- 2024年医疗机构医生劳动协议模板
- 新小学数学三年级上册《一个因数中间有零的乘法》ppt课件
- 乒乓球比赛分组对阵表(8人、16人、32人)
- 《电子商务基础》试题全库
- 中英文版战略合作协议CooperationAgreement
- 重点用能单位能源计量审查规范
- 首件检验作业指导书
- 8000吨每年PE片材挤出设计说明书
- 南昌市南京路医药谷工程勘察报告资料
- 防火涂层厚度检查记录表 (2)
- 食品工厂如何进行虫害控制以满足国际食品安全认证审核标准
- 千字文正楷田字格字帖
评论
0/150
提交评论