VHDL设计初步

上传人:cn****1 文档编号:567921510 上传时间:2024-07-22 格式:PPT 页数:117 大小:964.50KB
返回 下载 相关 举报
VHDL设计初步_第1页
第1页 / 共117页
VHDL设计初步_第2页
第2页 / 共117页
VHDL设计初步_第3页
第3页 / 共117页
VHDL设计初步_第4页
第4页 / 共117页
VHDL设计初步_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《VHDL设计初步》由会员分享,可在线阅读,更多相关《VHDL设计初步(117页珍藏版)》请在金锄头文库上搜索。

1、数字电路与系统设计数字电路与系统设计EDA实验实验VHDL设计初步设计初步 娜匿瘁吏湖藕昔姆傻朗殴盈诛勿瞩饮饮驶湛二浇铣翅莉默吻卞母琶秃宰章VHDL设计初步VHDL设计初步数字电路与系统设计数字电路与系统设计EDA实验实验内容安排:内容安排:电子工程学院必修课(电子工程学院必修课(电子工程学院必修课(电子工程学院必修课()u硬件描述语言硬件描述语言(VHDL or VerilogHDL) (10学时学时)电子工程学院必修课及限选、校任选课(电子工程学院必修课及限选、校任选课(电子工程学院必修课及限选、校任选课(电子工程学院必修课及限选、校任选课()uEDA设计工具软件及实验设计工具软件及实验

2、(10学时学时)uSOPC及及Nios II嵌入式系统设计嵌入式系统设计 (10学时学时)u综合设计实验综合设计实验 (10学时学时)西安电子科技大学国家电工电子教学基地西安电子科技大学国家电工电子教学基地西电西电Altera EDA/SOPC联合实验室及培训中心(联合实验室及培训中心(E楼楼II-401)趾博吏板戒羔闯尖物佰尊仿晃痔碧英柬逗擞来联钱躲缘噎托特艇炽续赵蓑VHDL设计初步VHDL设计初步第第1部分部分 VHDL设计初步设计初步数字电路与系统设计数字电路与系统设计EDA实验实验殉拷保岸离敷讥纷奇酋湍汇波俘臀惑厘键桔娥聪厨矿危亩静朱邓赃果眩涅VHDL设计初步VHDL设计初步VHDL历

3、史回顾历史回顾VHDL 语言是美国国防部语言是美国国防部(DOD)在在 20 世纪世纪 80 年代初为实现其年代初为实现其高速集成电路计划高速集成电路计划(VHSICVery High Speed Integrated Circuit)而提出的一种而提出的一种硬件描述语言硬件描述语言硬件描述语言硬件描述语言(HDLHardware Description Language),以作为各合同商之间提交复杂电路,以作为各合同商之间提交复杂电路设计文档的一种标准方案,设计文档的一种标准方案,VHDL的含义为的含义为超高速集成电路超高速集成电路超高速集成电路超高速集成电路硬件描述语言硬件描述语言硬件描述

4、语言硬件描述语言。1987年被采纳为年被采纳为IEEE 1076标准(标准(VHDL87)。)。1993年被更新为年被更新为IEEE 1164标准(标准(VHDL93)。)。久谍尾隙秸旱具隔门躲畦线邮格兢栅万吸猾西缩胯耶商商圣庆镭俏晨著医VHDL设计初步VHDL设计初步VHDLVHSIC Hardware Description Language HDL 的出现是为了适应电子系统设计的日益复杂的出现是为了适应电子系统设计的日益复杂性。若以计算机软件的设计与电路设计做个类比:性。若以计算机软件的设计与电路设计做个类比: 机器码机器码好比好比晶体管晶体管/MOS管管; 汇编语言汇编语言好比好比电路

5、网表电路网表; HDL语言语言就如同就如同高级语言高级语言。傻梦远让煞稗荆乡乡个爵蛮掳快比骤报缔拾迫医懒翔冈死诺铁真斡卞鸯酱VHDL设计初步VHDL设计初步几种常用的几种常用的HDL语言:语言: (1 1)VHDLVHDL硬件描述语言:硬件描述语言:硬件描述语言:硬件描述语言:功能强,规范性好;功能强,规范性好; (2 2)VerilogHDLVerilogHDL硬件描述语言:硬件描述语言:硬件描述语言:硬件描述语言:功能强、灵活功能强、灵活性高;性高; (3 3)ABELABEL硬件描述语言:硬件描述语言:硬件描述语言:硬件描述语言:属于较低级的硬件描属于较低级的硬件描述语言;述语言; (4

6、 4)AHDLAHDL硬件描述语言:硬件描述语言:硬件描述语言:硬件描述语言:Altera公司开发,语公司开发,语法简单,但不通用。法简单,但不通用。 其中:其中:其中:其中:VHDLVHDL和和和和VerilogHDLVerilogHDL已成为已成为已成为已成为IEEEIEEE标准。标准。标准。标准。VHDLVHSIC Hardware Description Language还燃原耻冯拨锚垛震粹渝暴蹬迎殿铅殖惭跌收乎兵芋哼纠淆溯颊寡笛郭拿VHDL设计初步VHDL设计初步 VHDL在语法和风格上类似于现代高级编程在语法和风格上类似于现代高级编程语言。但要注意,语言。但要注意,VHDL毕竟描述

7、的是毕竟描述的是硬件硬件,它,它包含许多硬件特有的结构。包含许多硬件特有的结构。 HDL是用文字化方法描述电子电路与系统。是用文字化方法描述电子电路与系统。计算机语言计算机语言描述特点是描述特点是 :顺序性顺序性HDL语言语言描述的特点是:描述的特点是:并行性并行性VHDLVHSIC Hardware Description Language羹郴鞭脾氛笼太饭炊坞辟究已慧檄季窟条淆蠕详檄咐椰剪愧蜂假设酪绝甫VHDL设计初步VHDL设计初步VHDL与计算机语言的区别与计算机语言的区别运行的基础运行的基础运行的基础运行的基础l 计算机语言是在计算机语言是在CPURAM构建的平台上运行构建的平台上运行

8、l VHDL设计的结果是由具体的逻辑、触发器组成的数字电路设计的结果是由具体的逻辑、触发器组成的数字电路(使用使用Quartus 软件编程,最终下载入可编程逻辑器件中实现一个数字系统)软件编程,最终下载入可编程逻辑器件中实现一个数字系统)执行方式执行方式执行方式执行方式l计算机语言基本上以计算机语言基本上以串行串行的方式执行的方式执行lVHDL在总体上是以在总体上是以并行并行方式工作方式工作验证方式验证方式验证方式验证方式l计算机语言主要关注于计算机语言主要关注于变量值变量值的变化的变化lVHDL要实现严格的要实现严格的时序逻辑时序逻辑关系关系弓扦拷颅去赘卸涤拾减图掂浆氦签津棋莹晚廷篮垃苔掀沈

9、掖染践昨撕鄙叛VHDL设计初步VHDL设计初步数字电路与系统设计回顾数字电路与系统设计回顾组合逻辑电路组合逻辑电路时序逻辑电路时序逻辑电路分析分析设计设计真值表真值表分析分析设计设计输入输入/输出输出抽象抽象(实体)(实体)电路功能电路功能实现实现(结构体)(结构体)EntityArchitecture与、或、非与、或、非与非、或非与非、或非异或、同或异或、同或RS触发器触发器D触发器触发器T触发器触发器JK触发器触发器粟蕾类遥滚设寇佐仪庆粤议攘累仪体俱赞园捂烬崔公栗天招朱苛洼拽悍凤VHDL设计初步VHDL设计初步主要内容安排主要内容安排1 多路选择器的多路选择器的VHDL描述描述2 时序电路

10、的时序电路的VHDL描述描述3 更复杂电路的更复杂电路的VHDL描述描述5 VHDL设计练习设计练习4 有限状态机(状态转移图)设计有限状态机(状态转移图)设计铬类塘扳署蛮沟判找豫鲁卧街院丰锚瞎晾啼仿细勋缴骋赐靛辑尽瘩井伶狞VHDL设计初步VHDL设计初步1 多路选择器的多路选择器的VHDL描述描述例例1.1 2选选1多路选择器的多路选择器的VHDL描述描述 2选选1MUX输入输入/输输出端口出端口(实体(实体Entity) abymux21s电路功能电路功能实现实现(结构体(结构体Architecture)?地宽付季睬捶箩不瘤筋堤援氯驼求宠旧惭回苫兴杰裙橡继选公惯矢眷描捅VHDL设计初步VH

11、DL设计初步例例1.1 2选选1多路选择器的多路选择器的实体描述实体描述1 多路选择器的多路选择器的VHDL描述描述abymux21sENTITY mux21mux21 IS PORT (a, b : IN BIT ; S : IN BIT ; y : OUT BIT ) ; END ENTITY mux21mux21 ; 说明:以关键字说明:以关键字ENTITY引导,以引导,以END (ENTITY) xxx结尾的语句部分,称为结尾的语句部分,称为实体实体。描述电路的外部。描述电路的外部情况及接口性质。情况及接口性质。搅婴捎纂亥班椿牟甚宫抱母钙绚桂膝瘫己挎搁隆未痴婆捅敦嫩蹈眼讯塌热VHDL设

12、计初步VHDL设计初步ENTITY mux21 IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21;ARCHITECTURE one OF mux21 IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ; 例例1.1 2选选1多路选择器的多路选择器的结构体描述结构体描述1 ( (行为描述行为描述行为描述行为描述) )abymux21sS=0S=1abyS说明:以关键字说明:以关键字ARCHITECTURE引导,以引导,以END (ARCHITECTUR

13、E) xxx结尾的语句部分,结尾的语句部分,称为称为结构体结构体。描述电路的内部逻辑功能或电路。描述电路的内部逻辑功能或电路结构。结构。1 多路选择器的多路选择器的VHDL描述描述裹柱指絮送剩冀掇烟鸡舜弄宝凌札逞览脂熔劳竟豫肢沼虏糠捎亭琉憎啸搬VHDL设计初步VHDL设计初步例例1.1 2选选1多路选择器的多路选择器的结构体描述结构体描述2 ( (原理图描述原理图描述原理图描述原理图描述) )ARCHITECTURE one OF mux21 IS SIGNAL d,e : BIT; -d,e 为内部信号为内部信号BEGIN d = a AND (NOT S) ; e = b AND s ;

14、y = d OR e ;END ARCHITECTURE one ; abymux21s1 多路选择器的多路选择器的VHDL描述描述凯三渐钡别巳晃调歹间秋域趋髓滔士憾曙铭非挡冯丫旺厅削突痴虹可炯谜VHDL设计初步VHDL设计初步例例1.1 2选选1多路选择器的多路选择器的结构体描述结构体描述3 ( (布尔方程描述布尔方程描述布尔方程描述布尔方程描述) )1 多路选择器的多路选择器的VHDL描述描述y = (a AND (NOT s) OR ( b AND s) ; ARCHITECTURE behave OF mux21 ISBEGINEND behave;y = as+bsabymux21s

15、说明:以上说明:以上三种结构体三种结构体描述都是描述都是并并行语句行语句汰台渐巷粱锰英只津楞府狗砾筹刺坐王雷俱沧常卫羊昌智瞻憋恢油势助厅VHDL设计初步VHDL设计初步例例1.1 2选选1多路选择器的多路选择器的结构体描述结构体描述4 ( (进程描述进程描述进程描述进程描述) )1 多路选择器的多路选择器的VHDL描述描述S=0S=1abySabymux21s ARCHITECTURE one OF mux21 ISBEGIN PROCESSPROCESS (a,b,s) BEGINBEGIN IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PRO

16、CESS;END PROCESS;END ARCHITECTURE one ; -a,b,s 为敏感信号表为敏感信号表访锭呀帘挑乔扫盎舵辨随屈氮擎畦拆塑韧滇辞袍格酸员酮痕圭宜喜斟外鳃VHDL设计初步VHDL设计初步2选选1多路选择器功能时序波形多路选择器功能时序波形 例例1.1 2选选1多路选择器的多路选择器的EDA软件仿真结果软件仿真结果1 多路选择器的多路选择器的VHDL描述描述焰汀略滴溶抚腻皇菲八蒙萨习他团损肮胞瞩滩珠摆脐咋韵趴税缕惦咕冶投VHDL设计初步VHDL设计初步1.1 实体表达(实体表达(ENTITY) 1 多路选择器的多路选择器的VHDL描述描述例例1.1VHDL描述中出现的

17、相关语句结构和语法说明描述中出现的相关语句结构和语法说明ENTITY 实体名实体名 IS GENERIC (类属表);(类属表); PORT (端口表);(端口表);END ENTITY 实体名;实体名; 实体在电路中主要是说明该电路的输入、输实体在电路中主要是说明该电路的输入、输出关系,更具体地说就是用来定义实体与外部的出关系,更具体地说就是用来定义实体与外部的连接关系以及需传送给实体的参数。连接关系以及需传送给实体的参数。恍威悄折许瘸觉涝营鱼念蒸瑞梭边拳茧本掸孔镁镜俯服铂尿病峦起跨衰钱VHDL设计初步VHDL设计初步ENTITY 实体名实体名 IS GENERIC (类属表类属表););

18、PORT (端口表端口表););END ENTITY 实体名;实体名;(1)类属表:用以将信息参数传递到实体。)类属表:用以将信息参数传递到实体。(2)端口表:指明实体的输入、输出信号及其模式、)端口表:指明实体的输入、输出信号及其模式、数据类型。数据类型。PORT (端口名:端口模式端口名:端口模式 数据类型;数据类型; 端口名:端口模式端口名:端口模式 数据类型数据类型 );英文字母英文字母+ +数字数字数据流动方向数据流动方向主要有主要有“位位”和和“位矢量位矢量”两类两类设计者自己命名的名称(文件名)设计者自己命名的名称(文件名)例如:例如:mux21的端口描述的端口描述增加以下语句增

19、加以下语句:generic (m: time:=1ns)类属参数说明语句,它定类属参数说明语句,它定义了延时时间为义了延时时间为1ns肝幼药李碳勾洛市梳婿剁簿街位溯邮痛板港迭提蛾细帮扼楚灌咨林够江掸VHDL设计初步VHDL设计初步注意注意简单地说简单地说 In In 不可以出现在赋值符号不可以出现在赋值符号不可以出现在赋值符号不可以出现在赋值符号(= (= 或或或或:=):=)的左边的左边的左边的左边 out out不可以出现在赋值符号不可以出现在赋值符号不可以出现在赋值符号不可以出现在赋值符号(= (= 或或或或:=):=)的右边的右边的右边的右边 buffer buffer可以出现在赋值符

20、号可以出现在赋值符号可以出现在赋值符号可以出现在赋值符号(= (= 或或或或:=):=)的两边的两边的两边的两边In In 信号只能被引用信号只能被引用信号只能被引用信号只能被引用, ,不能被赋值不能被赋值不能被赋值不能被赋值out out 信号只能被赋值信号只能被赋值信号只能被赋值信号只能被赋值, ,不能被引用不能被引用不能被引用不能被引用buffer buffer 信号可以被引用信号可以被引用信号可以被引用信号可以被引用, ,也可以被赋值也可以被赋值也可以被赋值也可以被赋值方向定义方向定义含义含义IN输入,定义的通道为单向输入模式输入,定义的通道为单向输入模式 OUT输出,输出,定义的通道

21、为单向输出模式定义的通道为单向输出模式 INOUT双向,定义的通道确定为输入输出双向端口双向,定义的通道确定为输入输出双向端口 BUFFER缓冲端口,其功能与缓冲端口,其功能与INOUT类似类似 常用端口模式:常用端口模式:侩霉铁护起柑腔弄器措契甫刚驾狂芍农傀午炊铅僚掠耶碑糖甭南侨帛赊殊VHDL设计初步VHDL设计初步例:例:ENTITY mux21mux21 IS PORT (a, b, : IN BITBIT ; S : IN BITBIT ; y : OUT BITBIT ) ; END ENTITY mux21mux21 ; VHDL中任何一种数据对象(信号、变量、常数)必中任何一种数

22、据对象(信号、变量、常数)必须严格限定其取值范围。须严格限定其取值范围。 VHDL 中一个对象只能有一种类型,施加于该对象中一个对象只能有一种类型,施加于该对象的操作必须与该类型相匹配。的操作必须与该类型相匹配。 常用数据类型有:常用数据类型有:BIT,BIT_VECTOR,STD_LOGIC,STD_LOGIC_VECTOR,INTEGER,BOOLEAN等(参考书上等(参考书上P260表表10.3.1)奋孕佑筋萧赶骂青摊确刀懦启缆它区跨佛攘瓜絮犬耽辩涯廖鼻泣充闸迭殿VHDL设计初步VHDL设计初步1.2 结构体表达(结构体表达(ARCHITECTURE) 1 多路选择器的多路选择器的VHD

23、L描述描述ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 内部信号,常数,数据类型,函数等定义;内部信号,常数,数据类型,函数等定义;BEGIN 功能描述语句功能描述语句;END ARCHITECTURE 结构体名;结构体名; 以关键字以关键字以关键字以关键字ARCHITECTUREARCHITECTURE引导,以引导,以引导,以引导,以END (ARCHITECTURE) END (ARCHITECTURE) xxxxxx结尾的语句部分,称为结尾的语句部分,称为结尾的语句部分,称为结尾的语句部分,称为结构体结构体结构体结构体。描述电路的内部逻辑功能或电

24、。描述电路的内部逻辑功能或电。描述电路的内部逻辑功能或电。描述电路的内部逻辑功能或电路结构。路结构。路结构。路结构。致补叹眉隧娩窿傀观哺衣叼汹寻势检遍食袜截案审隋篆婪扯聪抠复俩镁杉VHDL设计初步VHDL设计初步 结构体名称的命令:结构体名称的命令:它是该结构体的唯一名它是该结构体的唯一名称。称。“OF”后面紧跟的实体名表明了该结构体所后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用对应的是哪一个实体。用 “IS”来结束结构体的来结束结构体的命名。命名。ARCHITECTURE 结构体名结构体名结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句定义语句定义语句 内部信号,常数,

25、数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句功能描述语句功能描述语句功能描述语句;END ARCHITECTURE 结构体名;结构体名;阐斟鸯缸陌戚界惩守微宛纪烧讲砰碌乳专枪省对龚呆姑棘腥叁赖饰臣拢辩VHDL设计初步VHDL设计初步 定义语句:定义语句:位于位于“ARCHITECTURE”和和“BEGIN”之之间。用于对结构体内部所使用的信号、常数、数据类型间。用于对结构体内部所使用的信号、常数、数据类型和函数等进行定义。如:和函数等进行定义。如:ARCHITECTURE 结构体名结构体名结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句定

26、义语句定义语句 内部信号,常数,数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句功能描述语句功能描述语句功能描述语句;END ARCHITECTURE 结构体名;结构体名;SIGNALSIGNALcont:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSIGNALco_1:STD_LOGIC;CONSTANTCONSTANTm:TIME:=2 ns;TYPETYPESTATESTATEISIS(INIT,DAD,ADC,SRF,FRF);(枚举类型);(枚举类型) 塘敝巍悠早冶堑芥禁尤证勤鹃联杜努男筷疫燃干皿蹈仁德盅囤线稳庚庆褂VHD

27、L设计初步VHDL设计初步 功能描述语句:功能描述语句:处于处于“BEGIN”和和“END”之之间。具体描述了结构体的行为及其连接关系。间。具体描述了结构体的行为及其连接关系。ARCHITECTURE 结构体名结构体名结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句定义语句定义语句 内部信号,常数,数据类型,函数等的定义;内部信号,常数,数据类型,函数等的定义;BEGIN 功能描述语句功能描述语句功能描述语句功能描述语句;END ARCHITECTURE 结构体名;结构体名;结构体功能可以用三种方式进行描述,即:结构体功能可以用三种方式进行描述,即: 行为描述、数据流描述、结构描述

28、。行为描述、数据流描述、结构描述。告湿阎舆咀芬配锚谍朱愧瞩蹄八鳞躺符逝且侵媒吨篮单斋沿讶闯乡凯派稿VHDL设计初步VHDL设计初步u.结构体的行为描述结构体的行为描述(behavioral) 结构体的行为描述表示输入与输出间转换的关系,结构体的行为描述表示输入与输出间转换的关系,是对设计实体按算法的路径来进行描述的。行为描述是对设计实体按算法的路径来进行描述的。行为描述在在 EDA 工程中称为高层次描述或高级描述。工程中称为高层次描述或高级描述。看例题!看例题!例:例:如图所示的如图所示的半加器半加器,其功,其功能真值表已经给出,写出它的能真值表已经给出,写出它的行为描述行为描述。半加器半加器

29、abcsabcs0000000011111110己淬社猜垣炼绕舱艳木农育兜熙蓝撅侮羊钥川僵蛆卓踞逝锻马嫉揩徘桩锗VHDL设计初步VHDL设计初步半加器真值表半加器真值表:abcs0000000011111110半加器半加器abcs (ENTITY部分省略)部分省略) ARCHITECTURE alg_ha OF half_adder IS BEGIN PROCESS (a , b) BEGIN IF a=0 AND b=0 THEN c=0 ; s=0 ELSIF a=1 AND b=1 THEN c=1 ; s=0; ELSE c=0 ; s=1; END IF; END PROCESS;

30、END alg_ha; 高层次的功能描高层次的功能描述,不必考虑在述,不必考虑在电路中到底是怎电路中到底是怎样实现的。样实现的。拓骂票裳攀浊您帮咬梗蝉葵泌渺香潮吊放右聪洼铡序淌淬坯增瑞肝晋孙填VHDL设计初步VHDL设计初步u.结构体的数据流描述结构体的数据流描述(dataflow) 它反映了从输入数据到输出数据之间所发生的它反映了从输入数据到输出数据之间所发生的逻辑变换,或者说描述了数据流程的运动路径、运动逻辑变换,或者说描述了数据流程的运动路径、运动方向和运动结果。方向和运动结果。u.结构体的结构化描述结构体的结构化描述(structural) 结构化描述给出了实体内部结构、所包含的模结构

31、化描述给出了实体内部结构、所包含的模块或元件间互连关系;与实体外部引线的对应关系。块或元件间互连关系;与实体外部引线的对应关系。练习:练习: 试用上面的两种方法描述半加器的功能。试用上面的两种方法描述半加器的功能。半加器半加器abcs卷慧哇绽宙蝗帜第豫拴栋憾宦镀矾霄垣盛譬讼未直刹语藉草弟什脓脚猎鹅VHDL设计初步VHDL设计初步结构体中三种描述方式的比较结构体中三种描述方式的比较布尔函数定义布尔函数定义明白明白连接关系清晰,连接关系清晰,电路模块化清电路模块化清晰晰 优优 点点小门数设计小门数设计不易描述复杂电路,不易描述复杂电路,修改不易修改不易数据流描述数据流描述电路层次化设计电路层次化设

32、计电路不易理解、繁电路不易理解、繁琐、复杂琐、复杂结构化描述结构化描述 适用场合适用场合 缺缺 点点描述方式描述方式电路特性清楚电路特性清楚明了明了大型复杂的电路模大型复杂的电路模块设计块设计进行综合效率相对进行综合效率相对较低较低行为描述行为描述但鹰蚜郎革误异揍摸毖均土滤晌审漂抖谐养痊研舆诸造灌芜糜舜吭瞧跳侠VHDL设计初步VHDL设计初步 信号赋值符信号赋值符 “=” 表达式中的等号表达式中的等号“=”没没有赋值的含义,只是一种有赋值的含义,只是一种数据比较符号。数据比较符号。 1.3 赋值符号和数据比较符号赋值符号和数据比较符号 1 多路选择器的多路选择器的VHDL描述描述例例1.1VH

33、DL描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明 ARCHITECTURE one OF mux21 ISBEGIN PROCESS (a,b,s) BEGIN IF s = = 0 THEN y = = a ; ELSE y = = b ; END IF; END PROCESS;END ARCHITECTURE one ; 冕宿讲赫惶官坦定舍蜕缉嗽骏孜构炽攘傀笨隙忠洲洪愈甭蚂瞥啄爱杭哥饥VHDL设计初步VHDL设计初步1.4 逻辑操作符逻辑操作符 1 多路选择器的多路选择器的VHDL描述描述例例1.1VHDL描述中出现的相关语句结构和语法说明描述中出现的相关语句结构

34、和语法说明y = (a ANDAND (NOTNOT s) OROR (b ANDAND s) ; ARCHITECTURE behave OF mux21 ISBEGINEND behave; VHDL共有共有7种基本逻辑操作符:种基本逻辑操作符: AND(AND(与与与与) )、OR(OR(或或或或) )、NOT(NOT(取反)、取反)、取反)、取反)、NAND (NAND (与非与非与非与非) )、 NOR( NOR(或非或非或非或非) )、XOR(XOR(异或异或异或异或) )、XNOR(XNOR(同或同或同或同或) ) 要求数据类型:要求数据类型: BIT BOOLEAN STD_L

35、OGIC狙茁冶本友码担慧叮麦屑度峻遵残钡给绘涎绸辑豫筒狐臆幢凰辅菊绑樊耗VHDL设计初步VHDL设计初步ARCHITECTURE one OF mux21 IS BEGIN y = a WHENWHEN s = 0 ELSEELSE b ;END ARCHITECTURE one ; 1.5 WHEN_ELSE条件信号赋值语句条件信号赋值语句 1 多路选择器的多路选择器的VHDL描述描述例例1.1VHDL描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明赋值目标赋值目标 = 表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式表达式 WHEN 赋值条件赋值条件 ELSE

36、 表达式表达式 ; 漳灭汰表境晋辅泉吕菜疮渭镣滦渭钡帛垢摔吹硕机间资路斋勉岁却栏视拨VHDL设计初步VHDL设计初步在在VHDL中中,所所有有的的顺顺顺顺序序序序语语语语句句句句,如如“IF_THEN_ELSE_END IF”,都必须放在由都必须放在由“PROCESSEND PROCESS”引导的进程结构中。引导的进程结构中。 在在一一个个结结构构体体(ARCHITECTURE)中中可可以以包包含含任任意意个个进进程程语语句句,所所有有的的进进程程语语句句都都是是并并并并行行行行语语语语句句句句,而而进进程程PROCESS引引导导的的内内部部语句结构属于语句结构属于顺序语句顺序语句顺序语句顺序

37、语句。1.6 进程语句和顺序语句进程语句和顺序语句 1 多路选择器的多路选择器的VHDL描述描述例例1.1VHDL描述中出现的相关语句结构和语法说明描述中出现的相关语句结构和语法说明枚浅驮艳遮七揩吮挞笔筐甄檀径某时佑蒲千妇贤惯釉斯语侗稠宗伙糜汾剁VHDL设计初步VHDL设计初步1.7 IF语句语句IF语句与条件信号赋值语句功能相当,有两种基本语句与条件信号赋值语句功能相当,有两种基本格式:格式:1.1.两分支两分支IFIF语句:语句: IF IF 条件表达式条件表达式 THEN THEN 顺序语句;顺序语句; ELSE ELSE 顺序语句;顺序语句; END IFEND IF; ;1 多路选择

38、器的多路选择器的VHDL描述描述隘蟹阜扁圆础奴疟厨瑚秆赤括飞夺拧删靠解磨合酞愁姚剔艳坐盒箔循操牡VHDL设计初步VHDL设计初步2.多分支IF语句:IF 条件表达式条件表达式 THEN 顺序语句;顺序语句;ELSIF 条件表达式条件表达式 THEN 顺序语句顺序语句; ;ELSE 顺序语句;顺序语句;END IF;1 多路选择器的多路选择器的VHDL描述描述湿径檀雅赖输淆秦脯萄洋鞭蝉撼遗宗中窿螺较刑硅荚泰品曾印娟蹭俄州模VHDL设计初步VHDL设计初步1.8 WITH . SELECT 语句用WITH . SELECT语句描述2选1多路选择器ENTITY mux21mux21 IS PORT

39、(a, b : IN STD_LOGIC; S : IN STD_LOGIC; y : OUT STD_LOGIC); END mux21mux21; ARCHITECTURE one OF mux21 ISBEGIN WITH s SELECT y = a WHEN 0; b WHEN OTHERS ;END one ; 目伦偷葫奇畏宦汲及滦穿再邱厕砍癌篆璃莱唤稚鹊滨对兢枢掐星礼罪顿颇VHDL设计初步VHDL设计初步选择信号赋值语句的基本格式为:WITH 条件表达式条件表达式 SELECT目标信号名=表达式 WHEN 条件; 表达式 WHEN 条件; 表达式 WHEN 条件;选择信号赋值语句

40、属于并行语句。1.8 WITH . SELECT 语句涪突抛抵系膛晒较钒绍搂吸颠真掠虐盏偶猩泣沉颠积奠距呻棒暖洪刁势捶VHDL设计初步VHDL设计初步1 小结小结在在2选选1的的VHDL描述中出现的语言现象归纳:描述中出现的语言现象归纳:实体:实体: Entity结构体:结构体:Architecture端口定义:端口定义: Port( )端口模式:端口模式:In/Out/Inout数据类型:数据类型:Bit、Std_Logic信号赋值符:信号赋值符:=条件比较符:条件比较符:=逻辑操作符:逻辑操作符:ANDIF条件语句:条件语句:IFEND IF并行条件语句:并行条件语句:WHENELSE进程

41、语句:进程语句:ProcessEnd Process顺序语句:顺序语句:由进程语句引导由进程语句引导并行语句:简单赋值语句并行语句:简单赋值语句 when.else语句语句 with .select语句语句议阶波嫩科棘移蒙屈睦犀情姨蕊堤唉成宿赵嘴嵌肥待侥蝴抛贼甄吩藤锣螟VHDL设计初步VHDL设计初步2 时序电路的时序电路的VHDL描述描述例例2.1 D触发器的触发器的VHDL描述描述 最简单、最具有代表性的时序电路是最简单、最具有代表性的时序电路是D触发器。触发器。对对对对D D触发器的描述包含了触发器的描述包含了触发器的描述包含了触发器的描述包含了VHDLVHDL对时序电路的最基本和典型对

42、时序电路的最基本和典型对时序电路的最基本和典型对时序电路的最基本和典型的表达方式,也包含了的表达方式,也包含了的表达方式,也包含了的表达方式,也包含了VHDLVHDL中许多最具特色的语言现中许多最具特色的语言现中许多最具特色的语言现中许多最具特色的语言现象。象。象。象。(实体(实体Entity) 电路功能描述电路功能描述(结构体(结构体Architecture)?DCLKQDFF1黑梯半又盔蓑抱寇蓬蝴呆受刨谢降栗讨苛垂惺喜恢翌犊耳殷祟改支辞鬃汞VHDL设计初步VHDL设计初步LIBRARY LIBRARY IEEE ;IEEE ;USE USE IEEE.STD_LOGIC_1164.ALL

43、; IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS - 端口声明端口声明 PORT (CLK, D : IN STD_LOGICSTD_LOGIC ; Q : OUT STD_LOGICSTD_LOGIC );END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS -结构体描述结构体描述 SIGNALSIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点BEGIN PROCESS (CLK) - 进程进程 BEGIN IF CLKEVENT AND CLK

44、= 1CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号)END ARCHITECTURE bhv; 例例2.1 D触发器的触发器的VHDL描述描述 VHDL电路描述与电路描述与设计平台和硬件实现对设计平台和硬件实现对象象 (组合或时序逻辑组合或时序逻辑) 无无关。关。DCLKQDFF1张橡瓢寝襄肾群野莫竭毕钵碰歌青当嘉绦务体盒棵定雹志抱何趟笺卉枕搏VHDL设计初步VHDL设计初步例例2.1中中D触发器的触发器的VHDL

45、描述的语言现象说明描述的语言现象说明 2.1 完整完整VHDL程序程序基本构成基本构成VHDL设计设计VHDL文件文件库和程序包库和程序包 声声明明在在设设计计或或实实体体中中将将用用到到的的常常数数,数数据据类类型型,元件及子程序等元件及子程序等实体(实体(Entities) 声声明明到到其其实实体体及及其其设设计计的的接接口口,即即定定义义本本设计的输入设计的输入/出端口出端口结结构构体体(Architectures) 定定义义了了实实体体的的实实现现。即电路功能的具体描述即电路功能的具体描述碾锻衰幕绊辐醛香廖的疽隔尽骏灯掳脂宝殊瑟林因苫务磺滋灭晓坪催侍帝VHDL设计初步VHDL设计初步库

46、库(Library)和程序包和程序包(Package) 程程程程序序序序包包包包:定定义义了了一一组组数数据据类类型型说说明明、常常量量说说明明、元元件件说说明明和子程序说明。以供其它多个设计实体引用。和子程序说明。以供其它多个设计实体引用。 库:库:库:库:是专门存放预先编译好的程序包的地方,这样它们就可是专门存放预先编译好的程序包的地方,这样它们就可以在其它设计中被调用。以在其它设计中被调用。 库库库库/ /程程程程序序序序包包包包就就是是为为了了使使一一组组类类型型说说明明,常常量量说说明明和和子子程程序序说说明明对对多多个个设设计计实实体体都都成成为为可可见见的的而而提提供供的的一一种

47、种结结构构。它它们们如如同同C语语言言中中的的*.h文文件件,定定义义了了一一些些类类型型说明,函数一样。说明,函数一样。劲滋变卞眩针事龚褂捂傈双溅闷屈笼炼嫩蓟兄靖商轧酱饱连膛改津洱罐厄VHDL设计初步VHDL设计初步 例如:例如: LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; IEEE是是IEEE标标准准库库的的标标志志名名,两两个个USE语语句句使使得得以以下下设设计计可可使使用用程程序序包包std_logic_1164, std_logic_unsigned中中所所有有预定义的内容,

48、如预定义的内容,如std_logic,in,out的定义等。的定义等。格式:格式: LIBRARY ; USE .ALL;库库(Library)和程序包和程序包(Package)曲臼掩晰滩堪嫉妨秃疽啪互碍簧碉姐酬欲婶厩和佬哎箔隧蝴慧己式冷搅洋VHDL设计初步VHDL设计初步常用标准库常用标准库常用标准库常用标准库stdstd和和和和ieeeieee库中的程序包库中的程序包库中的程序包库中的程序包库库(Library)和程序包和程序包(Package)亦灿蕉田扎骇蚤秉帛慰颇镣纶伎罗厨捎世孜纤成部靖爵核杀切嘉贺冲阅竟VHDL设计初步VHDL设计初步BITBIT数据类型定义:数据类型定义:数据类型定

49、义:数据类型定义: TYPE BIT IS(0,1); 即即BIT数据类型仅可取值数据类型仅可取值0或或1;STD_LOGICSTD_LOGIC数据类型定义:数据类型定义:数据类型定义:数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-); 工业标准逻辑类型,取值工业标准逻辑类型,取值U,X,0,1,Z, W, L, H和和- U-未初始化的;未初始化的; X-强未知的;强未知的;0,1-强强0,强,强1 ;Z高阻态;高阻态; W弱未知的;弱未知的; L弱弱0; H弱弱1; - 忽略忽略2.2 标准逻辑位数据类型标准逻辑位数据类型STD_LOGIC ENT

50、ITY DFF1DFF1 IS - 端口声明端口声明 PORT (CLK, D : IN STD_LOGICSTD_LOGIC ; Q : OUT STD_LOGICSTD_LOGIC );END ENTITY DFF1DFF1;ENTITY mux21mux21 IS PORT (a, b, : IN BITBIT ; S : IN BITBIT ; y : OUT BITBIT ); END ENTITY mux21mux21 ; 韧黔坡哭口烙淬蕴哟虾搔燥魏乏屁鲜梁吴敏论阅宿潮劫酗湾膘掠畦炯独尘VHDL设计初步VHDL设计初步ARCHITECTURE bhv OF DFF1 ISARCHI

51、TECTURE bhv OF DFF1 IS SIGNAL Q1 SIGNAL Q1:STD_LOGICSTD_LOGIC;BEGINBEGIN2.3 信号定义和数据对象信号定义和数据对象 信号(信号(信号(信号(SignalSignal):):):): 信号的使用和定义范围是实体、结构体和程序包,信号的使用和定义范围是实体、结构体和程序包,在进程在进程和子程序的顺序语句中不允许定义信号。和子程序的顺序语句中不允许定义信号。(只有信号才能把进(只有信号才能把进程外的信息带入进程内部,或将进程内的信息带出进程)程外的信息带入进程内部,或将进程内的信息带出进程)SIGNAL SIGNAL 信号名信

52、号名信号名信号名: : 数据类型数据类型数据类型数据类型 := := 初始值初始值初始值初始值; ;信号赋值语句:信号赋值语句:信号赋值语句:信号赋值语句:目标信号名目标信号名目标信号名目标信号名=表达式表达式表达式表达式; ;漾达粘筑桶胶扛拓再逛溅儡卸靛疟伦宦循承授溢醉鲁督瓣菊衬族盘变哺伦VHDL设计初步VHDL设计初步VARIABLE VARIABLE 变量名变量名变量名变量名: : 数据类型数据类型数据类型数据类型 := :=初始值初始值初始值初始值; ;变量赋值语句:变量赋值语句:变量赋值语句:变量赋值语句: 目标变量名目标变量名目标变量名目标变量名:=:=表达式表达式表达式表达式;

53、;ARCHITECTURE bhv OF DFF1 ISARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 SIGNAL Q1:STD_LOGICSTD_LOGIC;BEGINBEGIN2.3 信号定义和数据对象信号定义和数据对象 变量(变量(变量(变量(VariableVariable):):):): 在在VHDL中,变量是一个局部量,作为临时的数据存储单中,变量是一个局部量,作为临时的数据存储单元,元,只能在进程和子程序的顺序语句中使用只能在进程和子程序的顺序语句中使用。变量定义中的初。变量定义中的初始值仅对仿真有效,实际的综合器并不支持设置初始值。始值仅对仿真有效

54、,实际的综合器并不支持设置初始值。涡骋丧靖裳器偿姚傍诱洽厘盼苍杨择中年齿氖亩与卫峪哩浙讨顽沉庄钻理VHDL设计初步VHDL设计初步CONSTANT CONSTANT 常量名常量名常量名常量名: : 数据类型数据类型数据类型数据类型:= := 表达式表达式表达式表达式; ;ARCHITECTURE bhv OF DFF1 ISARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 SIGNAL Q1:STD_LOGICSTD_LOGIC;BEGINBEGIN2.3 信号定义和数据对象信号定义和数据对象 常量(常量(常量(常量(ConstantConstant):):):):

55、常量的定义主要是为了程序更容易阅读和修改。在所有的常量的定义主要是为了程序更容易阅读和修改。在所有的VHDL结构中都可以定义常量,如实体、结构体、程序包、进结构中都可以定义常量,如实体、结构体、程序包、进程和子程序等。常量是一个恒定不变的值。程和子程序等。常量是一个恒定不变的值。茹重脓置浪擦第值拳磋哟灯祥随柿锣薛乏考烂粗还呐认胯起誊云普需慷抬VHDL设计初步VHDL设计初步 EVENT EVENT (CLKEVENTCLKEVENT表示表示表示表示 CLK CLK信号发生变化)信号发生变化)信号发生变化)信号发生变化)2.4 上升沿检测表达式和信号属性函数上升沿检测表达式和信号属性函数EVEN

56、T PROCESS (CLK) - 进程进程 BEGIN IF CLKEVENT CLKEVENT ANDAND CLK = 1 CLK = 1 THEN Q1 = D ; END IF; END PROCESS ;边沿检测语句边沿检测语句用信号属性函数用信号属性函数用信号属性函数用信号属性函数EVENTEVENT来测定某信号的跳变边沿,即来测定某信号的跳变边沿,即来测定某信号的跳变边沿,即来测定某信号的跳变边沿,即铱烂翠滓窘府吉炒骨玻蚌疆副撑力配搽楼瑶卧漏屑话动皿醚祭狐缀爹少唇VHDL设计初步VHDL设计初步2.5 不完整条件语句与时序电路不完整条件语句与时序电路 LIBRARY IEEE

57、;LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS - DFF 端口声明端口声明 PORT (CLK, D : IN STD_LOGICSTD_LOGIC ; Q : OUT STD_LOGICSTD_LOGIC );END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNALSIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) - 进程进程 BEGIN IF CLKEVENT AND CLK

58、= 1CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ARCHITECTURE bhv; IF IF语句中没有利用语句中没有利用语句中没有利用语句中没有利用ELSEELSE明确明确明确明确指出当指出当指出当指出当IFIF语句不满足条件时如何语句不满足条件时如何语句不满足条件时如何语句不满足条件时如何操作,即不完整条件语句。操作,即不完整条件语句。操作,即不完整条件语句。操作,即不完整条件语句。IFIF语句表示:语句表示:语句表示:语句表示:CLKEVENT AND CLK = 1YesNoQ1 = D

59、; ?茁抹栗丫顽士泽优冻觉馅殖店妙幂罪业寒佑参斩代字冕巳炔屿号谰哲愧雪VHDL设计初步VHDL设计初步 ARCHITECTURE one OF mux21 ISBEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS;END ARCHITECTURE one ; -a,b,s 为敏感信号表为敏感信号表 完整的条件语完整的条件语完整的条件语完整的条件语句只能构成组合逻句只能构成组合逻句只能构成组合逻句只能构成组合逻辑电路。辑电路。辑电路。辑电路。IFIF语句表示:语句表示:语句表示:语句表

60、示:S=0YesNoy = a;y b1 THEN q1 = 1 ; ELSIF a1 b1 THEN q1 b1 THEN q1 = 1 ; ELSE q1 = 0 ; END IF; END PROCESS ;END ;例例b:EDA软件综合结果软件综合结果掣会老励战民护窥扣渐痪舱让垃醚棵摆竞逮齐颁环棍枚蒜啄启剃锋菠不辽VHDL设计初步VHDL设计初步2.6 实现时序电路的实现时序电路的VHDL不同表述不同表述 LIBRARY IEEE ;LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_1164.ALL ; EN

61、TITY DFF1 IS - DFF 端口声明端口声明 PORT (CLK, D : IN STD_LOGICSTD_LOGIC ; Q : OUT STD_LOGICSTD_LOGIC );END ENTITY DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNALSIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK) - 进程进程 BEGIN IF CLKEVENT AND CLK = 1CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ARCH

62、ITECTURE bhv; CLK CLK信号定义为信号定义为信号定义为信号定义为STD_LOGICSTD_LOGIC数据类型,数据类型,数据类型,数据类型,有有有有9 9种取值,该描述并不种取值,该描述并不种取值,该描述并不种取值,该描述并不能保证能保证能保证能保证CLKCLK是从是从是从是从“0”“0”到到到到“1”“1”的上升沿跳变。的上升沿跳变。的上升沿跳变。的上升沿跳变。垣厌诗雅惨弊鳖尖也陵凝犀宰撑砸替吼江踌谱屹兢噎瘟烂遏堰赠煎烯笆乱VHDL设计初步VHDL设计初步.PROCESS (CLK) BEGIN IF CLKEVENT AND (CLK=1) CLKEVENT AND (C

63、LK=1) ANDAND (CLKLAST_VALUE=0) (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ; .PROCESS (CLK)BEGIN - 同上同上 IF CLK=1 CLK=1 ANDAND CLKLAST_VALUE=0 CLKLAST_VALUE=0 THEN Q = D ; END IF; END PROCESS ; 2.6 实现时序电路的实现时序电路的VHDL不同表述不同表述 CLKLAST_VALUE=0CLKLAST_VALUE=0为真,表为真

64、,表为真,表为真,表示示示示CLKCLK在变化之前时刻为在变化之前时刻为在变化之前时刻为在变化之前时刻为00。夕锻瑶啃痛顶妄狗琢鲁聪曹值灵绷怔峙硅湃奴帮肄娶戈敌蛙捻萍坝内欺屡VHDL设计初步VHDL设计初步LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN

65、 PROCESS (CLK) BEGIN IF rising_edge(CLK)rising_edge(CLK) THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END ; Rising_edge( ) Rising_edge( )是是是是IEEEIEEE库中库中库中库中STD_LOGIC_1164STD_LOGIC_1164标准标准标准标准程序包内预定义的函数,该程序包内预定义的函数,该程序包内预定义的函数,该程序包内预定义的函数,该函数只能用于标准逻辑位数函数只能用于标准逻辑位数函数只能用于标准逻辑位数函数只能用于标准逻辑位数据类型据类型据类型据类

66、型STD_LOGICSTD_LOGIC的信号。的信号。的信号。的信号。因此,在实体前必须打开因此,在实体前必须打开因此,在实体前必须打开因此,在实体前必须打开STD_LOGIC_1164STD_LOGIC_1164程序包。程序包。程序包。程序包。屑急帽颧神憎设洪宴衷撅淤张新疤迫碉拐凶腋为糊威荚垄汉闽饵裤公靖舶VHDL设计初步VHDL设计初步.PROCESS BEGIN wait untilwait until CLK = 1 ; Q = D ;END PROCESS; 当进程中使用当进程中使用wait语句后,就不必列出敏语句后,就不必列出敏感信号表。感信号表。2.6 实现时序电路的实现时序电路

67、的VHDL不同表述不同表述 幌想赔崭愉瞎泅寅澈誉富斩使冬芥有豹斯秆拌尝块歹肯鸭报睛症普岛蓬辕VHDL设计初步VHDL设计初步.PROCESS (CLKCLK)BEGIN IF CLK = 1CLK = 1 THEN Q = D ; END IF; END PROCESS ; 将将将将CLKCLK放入敏感信号表中,放入敏感信号表中,放入敏感信号表中,放入敏感信号表中,CLKCLK边沿的检测由边沿的检测由边沿的检测由边沿的检测由PROCESSPROCESS和和和和IFIF语句结合实现。语句结合实现。语句结合实现。语句结合实现。注:注:注:注:D D信号并没有在敏感表中。信号并没有在敏感表中。信号并

68、没有在敏感表中。信号并没有在敏感表中。上升沿触发上升沿触发DFF的仿真波形:的仿真波形:2.6 实现时序电路的实现时序电路的VHDL不同表述不同表述 鸭肝纲椭涵圆园搓亦亥天叠滇梯跨构扯诊述桓盘讯甸磁铝框膨立刀接萤废VHDL设计初步VHDL设计初步.PROCESS (CLKCLK,D D) BEGIN IF CLK = 1CLK = 1 THEN Q = D ; END IF; END PROCESS ; 电平触发电平触发电平触发电平触发DFFDFF,即在,即在,即在,即在CLKCLK为高电平为高电平为高电平为高电平11时,输出时,输出时,输出时,输出QQ随随随随D D的变化而变化,而的变化而变

69、化,而的变化而变化,而的变化而变化,而CLKCLK为为为为00时输出保持不变。时输出保持不变。时输出保持不变。时输出保持不变。 注:注:注:注:D D信号在敏感表中。信号在敏感表中。信号在敏感表中。信号在敏感表中。电平触发电平触发DFF的仿真波形:的仿真波形:2.6 实现时序电路的实现时序电路的VHDL不同表述不同表述 赃赤负贷浚霉昨颐蔷筏韭潭削耸歧舅嚎继噬侗故卵勘倍军肿赢翟烛咏寝枯VHDL设计初步VHDL设计初步 如果设如果设clk为时钟信号输入端,以下四条为时钟信号输入端,以下四条WAIT语句所设的进程启动条件都是时钟上跳沿,所以语句所设的进程启动条件都是时钟上跳沿,所以它们对应的硬件结构

70、是一样的。它们对应的硬件结构是一样的。WAIT UNTIL clk=1; WAIT UNTIL RISING_EDGE(clk); WAIT UNTIL clkEVENT AND clk=1; WAIT UNTIL NOT clkSTABLE AND clk=1;2.6 2.6 实现时序电路的实现时序电路的VHDL不同表述不同表述 矗椽昧沁雏誓蔗朱扼终鹏液密购技首捉逊贪锥儒失涂僧脉蝴罐慷额瑞淳倦VHDL设计初步VHDL设计初步2 小结小结VHDL VHDL 库:库:库:库:LibraryLibrary语句,包括语句,包括语句,包括语句,包括IEEEIEEE库、标准库库、标准库库、标准库库、标准

71、库STDSTD、工作库、工作库、工作库、工作库WorkWork等;等;等;等;程程程程 序序序序 包:包:包:包:USEUSE语句,如语句,如语句,如语句,如Std_logic_1164Std_logic_1164程序包、程序包、程序包、程序包、StandardStandard程序包程序包程序包程序包等;等;等;等;数据类型:数据类型:数据类型:数据类型:Std_logicStd_logic,定义值中包括,定义值中包括,定义值中包括,定义值中包括00、11、ZZ和和和和XX等共等共等共等共9 9种取值;种取值;种取值;种取值;数据对象:数据对象:数据对象:数据对象:信号信号信号信号Signal

72、Signal、变量、变量、变量、变量VariableVariable、常量、常量、常量、常量ConstantConstant;信号属性:信号属性:信号属性:信号属性:信号属性函数信号属性函数信号属性函数信号属性函数EVENTEVENT、LAST_VALUELAST_VALUE;时钟检测:时钟检测:时钟检测:时钟检测:上升沿检测上升沿检测上升沿检测上升沿检测Clkevent AND Clk=1Clkevent AND Clk=1、Rising_edge( )Rising_edge( )。时序电路:时序电路:时序电路:时序电路:不完整条件语句产生时序电路。不完整条件语句产生时序电路。不完整条件语句

73、产生时序电路。不完整条件语句产生时序电路。旱猜挝讨欣泛膳谤斑捎染怜续牺曾破刻颗振稗携邪杉授淖若昨矽西棚豌属VHDL设计初步VHDL设计初步3 更复杂电路的更复杂电路的VHDL描述描述CLKQn 时序电路中,一般计数器的输入时序电路中,一般计数器的输入/输出信号包括:输出信号包括:?EntityArchitecture电路设计电路设计3.1 计数器的计数器的VHDL描述描述桩咯逞胞唇耐送檄红巾存募住抚炳丘驹芝厚巫让庆按堕多余季环嫂穿基斋VHDL设计初步VHDL设计初步ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFERBUFFER INTEGER ran

74、ge 15 downto 0 ) ; INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = Q + 1 ;Q = Q + 1 ; END IF; END PROCESS ;END bhv; 【例【例1】: 4位二进制加法计数器位二进制加法计数器注意注意注意注意:( (1) Q1) Q的端口模式为的端口模式为的端口模式为的端口模式为BUFFERBUFFER; (2) Q (2) Q的数据类型为的数据

75、类型为的数据类型为的数据类型为INTEGERINTEGER。注意注意注意注意CLKQn?想硬踪篆牲吞募叛涵美监捞怂桑疾摘明匡客润峭孩肪镣浚曝缚篇可糜胞兴VHDL设计初步VHDL设计初步ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFERBUFFER INTEGER range 15 downto 0 ) ; INTEGER range 15 downto 0 ) ; END CNT4; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q

76、 = Q + 1 ;Q = Q + 1 ; - -如何理解?如何理解?如何理解?如何理解? END IF; END PROCESS ;END bhv; 【例【例1】: 4位二进制加法计数器位二进制加法计数器注意注意注意注意注意注意注意注意:在使用整数时,:在使用整数时,:在使用整数时,:在使用整数时,VHDLVHDL综合器要综合器要综合器要综合器要求必须使用求必须使用求必须使用求必须使用“Range”“Range”限定范围,限定范围,限定范围,限定范围,否则无法综合。否则无法综合。否则无法综合。否则无法综合。踢串溺忧辫哥躲魂阉粤傣磨恒腊瓦贿撂沉场呵舷戎从橱锌癸柏绊锭禹戒逝VHDL设计初步VHD

77、L设计初步 VHDL VHDL中规定,算术操作符中规定,算术操作符中规定,算术操作符中规定,算术操作符“+”“+”、“-”“-”的数据类的数据类的数据类的数据类型(除特殊说明,如重载函数)只能是整型型(除特殊说明,如重载函数)只能是整型型(除特殊说明,如重载函数)只能是整型型(除特殊说明,如重载函数)只能是整型“INTEGER”“INTEGER”。1 十进制整数十进制整数35 十进制整数十进制整数10E3 十进制整数十进制整数16#D9# 十六进制整数十六进制整数8#562# 八进制整数八进制整数2#11001001# 二进制整数二进制整数整数的表达不加整数的表达不加引号,而逻辑位引号,而逻辑

78、位的数据必须加引的数据必须加引号,如号,如1、0、“101”。整数(整数(Integer)类型)类型VHDL中整数常量的书写方式:中整数常量的书写方式:略坚腮孙沸炮机真任厩浪绅禄发凳波逊凑盖简汕裳逼拇诞佛靖帧蕴沽梧惕VHDL设计初步VHDL设计初步3.2 计数器设计的其他表述方法计数器设计的其他表述方法LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL ; - 运算符重载运算符重载ENTITY CNT4 IS PORT ( CLK

79、: IN STD_LOGICSTD_LOGIC ; Q : OUTOUT STD_LOGIC_VECTOR(3 DOWNTO 0)STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ;Q1 = Q1

80、 + 1 ; -“+” 运算符重载运算符重载 END IF; END PROCESS ; Q = Q1 ;Q = Q1 ;END ARCHITECTURE bhv; 陛肿遭挫馁宛琅荒隘杉衫颖交聋专榆伸籽今氢予驰清恕惮鸟家秀坞冠汞猩VHDL设计初步VHDL设计初步3.2 计数器设计的其他表述方法计数器设计的其他表述方法LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL ; - 运算符重载运算符重载ENTITY CNT4 IS PORT

81、 ( CLK : IN STD_LOGICSTD_LOGIC ; Q : OUTOUT STD_LOGIC_VECTOR(3 DOWNTO 0)STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ;

82、Q1 = Q1 + 1 ; -“+” 运算符重载运算符重载 END IF; END PROCESS ; Q = Q1 ;Q = Q1 ;END ARCHITECTURE bhv; EDA软件综合结果软件综合结果组合电路组合电路加加1逻辑逻辑4位二进制位二进制锁存器锁存器输出反输出反馈馈锁存时锁存时钟钟镣膝涯牡肺稀鞋啸锡育苟套邯淑耳代腆持韧剧牲鼠名逢时情襄拇未乡烷倍VHDL设计初步VHDL设计初步3.2 计数器设计的其他表述方法计数器设计的其他表述方法LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.

83、ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL ; - 运算符重载运算符重载ENTITY CNT4 IS PORT ( CLK : IN STD_LOGICSTD_LOGIC ; Q : OUTOUT STD_LOGIC_VECTOR(3 DOWNTO 0)STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY CNT4; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);STD_LOGIC_VECTOR(3 DOWNTO 0);

84、BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ;Q1 = Q1 + 1 ; -“+” 运算符重载运算符重载 END IF; END PROCESS ; Q = Q1 ;Q 0); -计计数数器器复复位位(高有效)(高有效) ELSIF (clkEVENT AND clk = 1) THEN -检测时钟上升沿检测时钟上升沿 IF (en=1) THEN -检检测测是是否否允允许许计计数数(不不完完全全条条件件语语句)句) IF cqi 9 THEN cqi :=cqi+1; -允许计数,且计数允许计数,且计数

85、0); -计计数数状状态态=9,下下一一状状态清零态清零 END IF; END IF; END IF; IF cqi = 9 THEN co = 1; -计数状态计数状态=9,输出进位信号,输出进位信号 ELSE co =0; END IF; qcnt 0); -计计数数器器复复位位(高有效)(高有效) ELSIF (clkEVENT AND clk = 1) THEN -检测时钟上升沿检测时钟上升沿 IF (en=1) THEN -检检测测是是否否允允许许计计数数(不不完完全全条条件件语语句)句) IF cqi 9 THEN cqi :=cqi+1; -允许计数,且计数允许计数,且计数0)

86、; -计计数数状状态态=9,下下一一状状态清零态清零 END IF; END IF; END IF; IF cqi = 9 THEN co = 1; -计数状态计数状态=9,输出进位信号,输出进位信号 ELSE co =0; END IF; qcnt X) (OTHERS=X) SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ; 相关语法说明相关语法说明态港犁卑曲框焊芹仁旭疲棘赘险塞伶辙犹摩瞧陈幻碟滦汾办禁意楔僧滞袍V

87、HDL设计初步VHDL设计初步3.3 不同工作方式的时序电路设计不同工作方式的时序电路设计 例例例例3.3.23.3.2:设计一个带有并行输入置数,串行输出的移位寄存器。:设计一个带有并行输入置数,串行输出的移位寄存器。:设计一个带有并行输入置数,串行输出的移位寄存器。:设计一个带有并行输入置数,串行输出的移位寄存器。library ieee;use ieee.std_logic_1164.all;ENTITY shifter IS-实体声明实体声明实体声明实体声明 PORT( clk, load : IN std_logic; din : IN std_logic_vector(7 down

88、to 0); qb : OUT std_logic);END ENTITY shifter;炎齿患枉邓聋邱则范惭栓蛙理淬肛娶泛定冀憾蓟枪级巩犀蔫奇查烟刮叮淘VHDL设计初步VHDL设计初步ARCHITECTURE behave OF shifter IS -结构体描述结构体描述结构体描述结构体描述BEGIN PROCESS (clk,load) VARIABLE reg8 : std_logic_vector(7 downto 0); BEGIN IF clkEVENT AND clk = 1 THEN IF load=1 THEN reg8 :=din; -由(由(LOAD=1)装载新数据)

89、装载新数据 ELSE - load=0, - load=0, 移位操作移位操作移位操作移位操作 reg8(6 downto 0) :=reg8 (7 downto 1); END IF; END IF; qb = reg8(0) ; - 串行输出最低位串行输出最低位 END PROCESS; END ARCHITECTURE behave;移位寄存器时序波形仿真结果移位寄存器时序波形仿真结果亚慰孙启诛菲猛疾讫渊仇滤钙桂碴步皮丽瞒龙欺袖妻好顶圆窜漫志唇茹驯VHDL设计初步VHDL设计初步3.4 1位二进制全加器的位二进制全加器的VHDL描述描述 1位二进制全加器引脚图位二进制全加器引脚图1位二进

90、制全加器实现原理图位二进制全加器实现原理图1位二进制位二进制半加器半加器萧烟财娃批奶辨哉瘩刷因辐迫之挟津宪辙徐艰脊石怠盏涝剁绊槛迢虞磷雅VHDL设计初步VHDL设计初步3.4.1 半加器的半加器的VHDL描述描述 1001010110001100cosoba半加器真值表半加器真值表 coasobnotxnor2and2半加器电路图半加器电路图3.4 1位二进制全加器的位二进制全加器的VHDL描述描述 so=?co=?霓遮经从仪未晰祝泻劲蛰例洗适浪鳞修彝梆鼎耐狰忿震弛解匆蜀胡携眠雌VHDL设计初步VHDL设计初步-半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法LIBRARY IE

91、EE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS -实体声明实体声明 PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT (a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 3.4.1 半加器的半加器的VHDL描述描述 摔宗绕水盯霄硬眼犹迟祥片烽撵岂秦诧牙放牲喉荔径书案拉顷姻抿骂吁羌VHDL设计初步VHDL

92、设计初步-半加器描述半加器描述(2):真值表描述方法(:真值表描述方法(1) -这里省略库和实体声明部分这里省略库和实体声明部分ARCHITECTURE fh1 OF h_adder is SIGNALSIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; BEGIN abc = a & b ; -aabc = so=0; co= so=1; co= so=1; co= so=0; co = NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ; 链姚窖料血烬结晰存辖了肮佐铱噪衬腑怜举裂绪煌买齐逞坍椿腰纲城诗皮V

93、HDL设计初步VHDL设计初步VHDL描述中的基本结构与语法:描述中的基本结构与语法:VHDL运算符运算符 &:连接运算符:连接运算符 &连连接接,将将两两个个对对象象或或矢矢量量连连接接成成维维数数更大的矢量更大的矢量, 它可给代码书写带来方便。它可给代码书写带来方便。 例例如如,为为表表达达a=1 and b=0 and c=1概概念念,可可定定义义一一个个变变量量: vabc=a & b & c;则可用则可用 vabc=“101”表达上述内容。表达上述内容。容嗜懈途气速福姓骆秃渍引肌主赃肩拦莆揭蜡旭辅淬锑蠢垛阎愧厢挫活吏VHDL设计初步VHDL设计初步-半加器描述半加器描述(3):真值表

94、描述方法(:真值表描述方法(2) -这里省略库和实体声明部分这里省略库和实体声明部分ARCHITECTURE fh1 OF h_adder IS SIGNAL abc, cso : std_logic_vector(1 downto 0) ;SIGNAL abc, cso : std_logic_vector(1 downto 0) ;BEGIN abc = a & b; co = cso(1) ; so = cso(0);co = cso(1) ; so cso cso cso cso null ; -或或“00” END CASE; END PROCESS;END fh1;腮幅戮根阶卢筷亿

95、缓凶泌责矣剔临引辆卤砰鸽炊靖醇取严模帮傀笨厨戎腻VHDL设计初步VHDL设计初步-“或门或门”逻辑描述逻辑描述LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; -库、函数包调用库、函数包调用ENTITY or2a IS -实体声明实体声明 PORT (a, b : IN STD_LOGIC; c : OUT STD_LOGIC );END ENTITY or2a;ARCHITECTURE one OF or2a IS -结构体描述结构体描述 BEGIN c = a OR b ;c ain, b=bin, co=d, so=e); U2:h_adder PO

96、RT MAP(a=e, b=cin, co=f, so=sum); U3:or2a PORT MAP(a=d, b=f, c=cout); - -元件例化元件例化元件例化元件例化END ARCHITECTURE fd1;痒炮惮张纵莫誉闺涕券汗挟稗凑狂仍栋凳钱固芹驭惨紫忻甸贯抛雌韧澳爱VHDL设计初步VHDL设计初步(1) CASE语句语句 CASE CASE IS IS When When = = ; . ; ; . ; ; When When = = ; . ; ; . ; ; . . WHEN OTHERS = ;END CASE END CASE ; VHDL描述中的基本结构与语法:描述

97、中的基本结构与语法:离孵步驻溺抿辞蝶驶滓赘胁荒谢离蝎乖窿钓任筑抄拴缀它磁讶划坐柔匿射VHDL设计初步VHDL设计初步(2) LOOP语句语句VHDL描述中的基本结构与语法:描述中的基本结构与语法:1) FOR类型类型FOR类型的类型的LOOP语句的书写格式为:语句的书写格式为:标号标号: FOR 循环变量循环变量 IN 离散范围离散范围 LOOP 顺序处理语句;顺序处理语句; END LOOP 标号标号;嗽辽苔绥揉怒元石默倦早鼎逝堡秽尖辊卒配尘最独救巩逮疽本进颗卫拜蛮VHDL设计初步VHDL设计初步 其中标号是可选项;循环变量是一个临其中标号是可选项;循环变量是一个临时变量,属时变量,属LOO

98、P语句的局部变量,不需要语句的局部变量,不需要事先定义;离散范围用来指定事先定义;离散范围用来指定LOOP语句中语句中的顺序语句被执行的次数。循环变量从离的顺序语句被执行的次数。循环变量从离散范围的初值开始,每执行一次顺序处理散范围的初值开始,每执行一次顺序处理语句加语句加1,直到离散范围的最大值。,直到离散范围的最大值。VHDL描述中的基本结构与语法:描述中的基本结构与语法:撅樱戴软宝校祁谈鄂栈诫树匹井昼涣婪紫拇安居命慕菊诵冬滩日洱篓莆壹VHDL设计初步VHDL设计初步 2)WHILE类型类型WHILE类型的类型的LOOP语句的书写格式为:语句的书写格式为:标号标号: WHILE 条件条件

99、LOOP 顺序处理语句;顺序处理语句; END LOOP 标号标号; WHILE类型的类型的LOOP语句给出了循环执行顺序语句语句给出了循环执行顺序语句的条件,如果条件为真,则进行循环;如果条件为假,则的条件,如果条件为真,则进行循环;如果条件为假,则退出循环。一般综合器通常不支持退出循环。一般综合器通常不支持WHILE类型语句。类型语句。VHDL描述中的基本结构与语法:描述中的基本结构与语法:翁衫巡望诣躁尖抗遂率遣傻扇接往婶顺甫刷滔洗国侯和浅挎鼻套亚倘殉给VHDL设计初步VHDL设计初步STD_LOGIC_VECTOR STD_LOGIC 在在使使用用STD_LOGIC_VECTOR中中,必

100、必须须注注明明其其数数组宽度,即位宽,如:组宽度,即位宽,如: B : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)(7 DOWNTO 0) ; SIGNAL A :STD_LOGIC_VECTOR (1 TO 4)(1 TO 4) ; B = 01100011 ; - B(7)为为 0 B(4 DOWNTO 1) = “0001 ; - B(4)为为 0 B(7 DOWNTO 4) = A ; - B(6)等于等于 A(2) (3) 标准逻辑矢量数据类型标准逻辑矢量数据类型 彰烧之墟诵恰粪拇姥巧松豁杭鞍荐赘久肪氯荚睹炭鸭纸闷积闯毙愁坚递凌VHDL设计初步VHDL设计初步

101、SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;. a 连接端口名,连接端口名,.); (5) 元件声明及例化语句元件声明及例化语句U1:h_adder PORT MAP(a=ain, b=bin, co=d, so=e);涉娟短急优嚎辅纲袁详骸魄泄蒋摔皆恋来峻峙安淖混姜后绎涧卉伏拄蛋民VHDL设计初步VHDL设计初步1、状态机分类:、状态机分类:按输出按输出方式分方式分Mealy型型Moore型型输出仅为当前状态的输出仅为当前状态的函数函数输出是当前状态和输输出是当前状态和

102、输入的函数入的函数按结按结构分构分单单 进进 程程多多 进进 程程主进程和辅进程合一主进程和辅进程合一分时序、组合主进程,分时序、组合主进程,辅助进程辅助进程4 有限状态机设计有限状态机设计 4.1 一般有限状态机的设计一般有限状态机的设计 时序电路可以称为有限状态机时序电路可以称为有限状态机(Finite State Machine, FSM),以此命,以此命名的原因是可以使用有限数量的状态表示时序电路的功能行为。名的原因是可以使用有限数量的状态表示时序电路的功能行为。抗比祟茫综驼辕黍捶瓢允党铭闷雅亏凸拆征耸醚枪镀眩玉枚纯傍答甄京肛VHDL设计初步VHDL设计初步按状态按状态表达分表达分符号

103、状态机符号状态机确定编码状态机确定编码状态机S0,S1,S2,000,001,010, 按编码按编码方式分方式分顺序编码顺序编码一位热码一位热码二进制顺序编码等二进制顺序编码等00001,00010,00100, 其它编码其它编码格雷码,循环码,等格雷码,循环码,等4 有限状态机设计有限状态机设计喉修筹猿片似殷暴此狞辕星弓酞左称肌卓票榨栈庶邵掣叙甚嵌双着利搭杠VHDL设计初步VHDL设计初步2、用户自定义数据类型、用户自定义数据类型4 有限状态机设计有限状态机设计4.1 一般有限状态机的设计一般有限状态机的设计枚举类型,其书写格式为:枚举类型,其书写格式为:TYPE 数据类型名数据类型名 IS

104、 (元素,元素,元素,元素,);例如:描述一周每一天状态的逻辑电路例如:描述一周每一天状态的逻辑电路时,可定义如下:时,可定义如下:TYPE week IS(sun,mon,tue,wed,thr,fri,sat);奔绸鱼镍盘避灭污餐画怀楔俭奖吸宅玻章诺惊解精弗券申暂抹斤隆拧玖墩VHDL设计初步VHDL设计初步TYPE m_state IS (st0,st1,st2,st3,st4,st5);SIGNAL present_state,next_state : m_state;4 有限状态机设计有限状态机设计再例如,某控制器的控制过程可用五个状态表示,则可定义一再例如,某控制器的控制过程可用五个

105、状态表示,则可定义一个名为个名为m_state的数据类型:的数据类型:如该控制器需要用到如该控制器需要用到present_state,next_state 的信号,这两个的信号,这两个信号的数据类型为信号的数据类型为m_state ,则可定义为:,则可定义为:此后,在结构体中就可以对此后,在结构体中就可以对present_state,next_state赋值,如:赋值,如:present_state=st4歪汞辗汐盈裴冕氢搜悸爬摹饥试钙的曳昧省全褂锨庐斟患奋怀亚斗痒欠酝VHDL设计初步VHDL设计初步3、一般状态机的设计、一般状态机的设计a、说明部分、说明部分例如:例如: SIGNAL cur

106、rent_state,next_state : m_state; ARCHITECTURE beh OF s_machine IS TYPE m_state IS (st0,st1,st2,st3,st4,st5);4 有限状态机设计有限状态机设计4.1 一般有限状态机的设计一般有限状态机的设计碰铺尤筹闯胸雁一撼琵布渠霜佑肆妄彭羌茂捍抬趴虹拌蹈童斜梅甲想旁佃VHDL设计初步VHDL设计初步b、主控时序进程、主控时序进程 该部分是在该部分是在CLK控制下,进行状态转换控制下,进行状态转换: current_state = next_state ;c、主控组合进程、主控组合进程 该部分是确定该部分

107、是确定current_state,next_state的取的取值,为时序进程提供参数;进行状态转换条件的值,为时序进程提供参数;进行状态转换条件的判定;进行输出判定。判定;进行输出判定。d、辅助进程、辅助进程 该部分是配合主控时序进程或主控组合进程,该部分是配合主控时序进程或主控组合进程,完成某种完成某种算法算法、输出输出数据锁存数据锁存等。等。骂雹底蝎绽箕魏跳超朗蓉访剂遵咎拾砧沂烃稍淋竿酉楼茵倘碘厄梳岁撒臀VHDL设计初步VHDL设计初步RSTS0/5S2/12S3/14S1/80000elseelseelse1111else State_inputsState/outputclkreset

108、State inputs24Comb_outputs状态机4 有限状态机设计有限状态机设计4.2 双进程双进程Moore型有限状态机的设计型有限状态机的设计尸病炕躬民作库骂峪毖胃岸取息获沼愉虚镣首荣栈滩铭阁脏叶颓筹颗么宪VHDL设计初步VHDL设计初步Library ieee; Use ieee.std_logic_1164.all;Entity s_machine is Port ( clk, reset : in std_logic; State_inputs : in std_logic_vector(0 to 1); comb_outputs : out integer range 0

109、 to 15); End s_machine; Architecture behv of s_machine is type fsm_st is (s0,s1,s2,s3); type fsm_st is (s0,s1,s2,s3); Signal current_state, next_state : fsm_st; Signal current_state, next_state : fsm_st; clkresetState inputs24Comb_outputs状态机蕴侈逾壳禾盈兼湃酿腥展蔬啄速彻城薪痉搭惭眯榔阶绰键逸磕宿锨饰瓣舰VHDL设计初步VHDL设计初步Beginreg: p

110、rocess (reset, clk)begin if reset =1 then current_state = s0;elsif (clkevent and clk =1 ) then current_state comb_outputs = 5; if state_inputs =“00” then next_state = s0; else next_state comb_outputs = 8; if state_inputs =“00” then next_state = s1;else next_state comb_outputs = 12; if state_inputs =

111、“11” then next_state = s0;else next_state comb_outputs = 14; if state_inputs =“11” then next_state = s3;else next_state = s0; end if;end case;end case;end process;end behv;RSTS0/5S2/12S3/14S1/80000elseelseelse1111else系煌剐反胶赖酋酌赠慎宽根潍窘丝阀舌蕉挚褐颤镜衅街铡腕鬃宣拙水掉蘑VHDL设计初步VHDL设计初步Mealy型型输出是当前状态和输入的函数输出是当前状态和输入的函数例:

112、例: “1110”序列检测器设计序列检测器设计0/11/01/0sa1/00/00/00/0sbscsdx/z1/04 有限状态机设计有限状态机设计4.3 Mealy型有限状态机的设计型有限状态机的设计陈砌歧蕾甩仪隆得戊踞蔷长颐观涩涟吕邓焉撞钱给闻宁缚究蓬灵阂贝碾终VHDL设计初步VHDL设计初步LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY statem IS PORT ( clk : IN std_logic; x,reset : IN std_logic; z: out std_logic );END statem;0/11/01/0sa1

113、/00/00/00/0sbscsdx/z1/0例:例: “1110”序列检测器设计序列检测器设计柔窄裔爬携词窗煌曳澜潍奢幽方侩穗遁姬聊笛悉琶烃诗鹤净距邢苯刮亩症VHDL设计初步VHDL设计初步ARCHITECTURE behave OF statem ISTYPE STATE_TYPE IS (sa, sb, sc,sd);SIGNAL state: STATE_TYPE;BEGIN PROCESS (clk,reset) BEGIN IF reset = 1 THEN state IF x=1 THEN state = sb; ELSE state IF x=1 THEN state = s

114、c; ELSE state IF x=1 THEN state=sd; ELSE state IF x=1 THEN state = sd; ELSE state=sa; END IF;END CASE; END IF; -reset END PROCESS; z=1 when state=sd and x=0 else 0; END ARCHITECTURE behave;0/11/01/0sa1/00/00/00/0sbscsdx/z1/0峪扫疽兑孝赫国芥苑雾幼岿诊名贫堰沛欠嘛鲤斗莎英漾留碟囱凭裴涤贝种VHDL设计初步VHDL设计初步 2006 Altera CorporationFini

115、te State Machine (FSM) - State DiagramRESETnw = 1Tap1select = 0first = 1Idlenxt = 0first = 0Tap2select = 1first = 0Tap3select = 2Tap4select = 3nxt = 1nw = 1nw = 0Inputs: reset nwOutputs: select first nxt幅截肌腿两瞪戌贪帝浮氦详偶瞳放舅弧骄锄眷浑模铣粥汰抿守寒嫡并狠工VHDL设计初步VHDL设计初步105 2006 Altera CorporationWriting VHDL Code for

116、FSMnTo Determine Next State Transition/Logic:-Use a CASE Statement Inside IF-THEN Statement That Checks for the Clock ConditionlRemember: State Machines Are Implemented Using RegistersnTo Determine State Machine Outputs:-Use Conditional and/or Selected Signal Assignments-Or Use a Second Case Stateme

117、nt to Determine the State Machine Outputs蔗淀榔巢呵烫拈袄涧郡孕香纬兑永妻盼畅帛航步雀与赡配瞬勾瓷由泊拐圾VHDL设计初步VHDL设计初步106 2006 Altera CorporationFSM VHDL Code - Enumerated Data TypeRESETnw = 1Tap1select = 0first = 1Idlenxt = 0first = 0Tap2select = 1first = 0Tap3select = 2Tap4select = 3nxt = 1nw = 1nw = 0Enumerated Data TypeLIBR

118、ARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_unsigned.all;USE IEEE.std_logic_arith.all;ENTITY state_m2 ISPORT(clk, reset, nw : in std_logic;sel: out std_logic_vector(1 downto 0);nxt, first: out std_logic);END state_m2;ARCHITECTURE logic OF state_m2 ISTYPE state_type IS (idle, tap1, tap2,

119、tap3, tap4);SIGNAL filter : state_type;Inputs: reset nwOutputs: select first nxt咬裕树槐些鬃佑邀齐庄拭览具粉肠蚕班理于誊裂慨感琶泉适乾晃手省剔崇VHDL设计初步VHDL设计初步107 2006 Altera CorporationFSM VHDL Code - Next State LogicRESETnw = 1Tap1select = 0first = 1Idlenxt = 0first = 0Tap2select = 1first = 0Tap3select = 2Tap4select = 3nxt = 1n

120、w = 1nw = 0BEGINPROCESS (reset, clk)BEGINIF reset = 1 THENfilter IF nw = 1 THENfilter filter filter filter IF nw = 1 THENfilter = tap1;ELSEfilter = idle;END IF;END CASE;END IF;END PROCESS;拔鹊耽锄沉铜赘瘩碉剥累泽丽督浙噪淋村泳关扳径慨门码殷扫狡棋械议澳VHDL设计初步VHDL设计初步108 2006 Altera CorporationFSM VHDL Code - Outputsnxt = 1 WHEN f

121、ilter=tap4 ELSE 0;first = 1 WHEN filter=tap1 ELSE 0;WITH filter SELECT sel nxt = 0;first sel = 00;first sel = 01;first sel sel = 11;nxt = 1;END CASE; END PROCESS output;END logic;RESETnw = 1Tap1select = 0first = 1Idlenxt = 0first = 0Tap2select = 1first = 0Tap3select = 2Tap4select = 3nxt = 1nw = 1nw

122、= 0随昂寓谢烹茧矽狠墙争皋硷疗霜岔靴袜拿神值鸵努喷绅呈养夷郡辣研戒稿VHDL设计初步VHDL设计初步110习习 题题 (Ex-1Ex-1)画出下例实体描述对应的原理图符号元件:)画出下例实体描述对应的原理图符号元件:)画出下例实体描述对应的原理图符号元件:)画出下例实体描述对应的原理图符号元件:ENTITY buf3s IS - 实体实体1: 三态缓冲器三态缓冲器 PORT (input : IN STD_LOGIC ; - 输入端输入端 enable : IN STD_LOGIC ; - 使能端使能端 output : OUT STD_LOGIC ) ; - 输出端输出端END buf3x

123、 ;ENTITY mux21 IS -实体实体2: 2选选1多路选择器多路选择器 PORT (in0, in1, sel : IN STD_LOGIC; output : OUT STD_LOGIC); END ENTITY mux21;层育省棍杜惟谬怠辗屿缎该噪迸哀厚诉闹粤凉声锁即党邀拄衡嗽醚豺嘴萤VHDL设计初步VHDL设计初步(Ex-2Ex-2)图图中中所所示示的的是是4选选1多多路路选选择择器器,试试分分别别用用IF_THEN语语句句和和WITH.SELECT语语句句的的 表表 达达 方方 式式 写写 出出 此此 电电 路路 的的VHDL程序。程序。 选选择择控控制制的的信信号号s1和

124、和s0为为STD_LOGIC_VECTOR类型;类型; 当当s1=0,s0=0;s1=0,s0=1; s1=1, s0=0和和 s1=1,s0=1分分别别执执行行y=a、y=b、y=c、y=d。 习习 题题 钓李抡匙羡兜鸦蹭深纽疵渠贮称恢魂必信锌突夷侈盘檀谅腐硷卒角椅冕嫉VHDL设计初步VHDL设计初步(Ex-3Ex-3)图图中中所所示示的的是是双双2选选1多多路路选选择择器器构构成成的的电电路路MUXK,对对于于其其中中MUX21A,当当s=0和和1时时,分分别别有有y=a和和y=b。试试在在一一个个结结构构体体中中用用两两个个进进程程来来表表达达此此电电路路,每每个个进进程程中中用用CAS

125、E语句描述一个语句描述一个2选选1多路选择器多路选择器MUX21A。 习习 题题 侥贩绵跃澈峰壶滦跪著浆么去财鹿喜丑集晃丸瘤菠矢闷至观湍掖狱缮妊杨VHDL设计初步VHDL设计初步(Ex-4Ex-4)图图中中是是一一个个含含有有上上升升沿沿触触发发的的D触触发发器器的的时时序电路,试写出此电路的序电路,试写出此电路的VHDL设计文件。设计文件。 习习 题题 谩势燃歌党檬彩坡妻镰氨裸蔼壕医调哺戚醛限滴糜由端阑饮充薪弃啃滨灶VHDL设计初步VHDL设计初步(Ex-5Ex-5)给出给出1位全减器的位全减器的VHDL描述。要求:描述。要求: (1)首首先先设设计计1位位半半减减器器,然然后后用用例例化化

126、语语句句将将它它们们连连接接起起来来,图图中中h_suber是是半半减减器器,diff是是输输出出差差,s_out是是借借位位输输出出,sub_in是借位输入。是借位输入。 (2)以以1位位全全减减器器为为基基本本硬硬件件,构构成成串串行行借借位位的的8位位减减法法器器,要要求求用用例例化化语语句句来来完完成成此此项项设设计计(减减法法运运算算是是 x y - sun_in = diffr)。 习习 题题 敝快遇屯谊仔索凶侦宰敛蚜粮侈袒榷沁镁甭菩牌臣毯溶奠品捉框踏拒些呜VHDL设计初步VHDL设计初步(Ex-6Ex-6)根根据据下下图图,写写出出顶顶层层文文件件MX3256.VHD的的VHDL

127、设设计计文件。文件。 (Ex-7Ex-7)设设计计含含有有异异步步清清零零和和计计数数使使能能的的16位位二二进进制制加加减减可可控计数器。控计数器。 习习 题题 堕郑列刨古播吃杀商捧膛构慧渠佐耸上碟假港蝴百豪伪啦傲乞谊赔挽杂冉VHDL设计初步VHDL设计初步数字信号的发送和接收电路数字信号的发送和接收电路序列产生器序列产生器数字锁数字锁汽车尾灯控制电路汽车尾灯控制电路交通灯控制器交通灯控制器三层电梯控制器三层电梯控制器竞赛抢答计时器竞赛抢答计时器EDA实验题目实验题目出租车计费器出租车计费器秒表秒表智能数字钟智能数字钟电子琴电子琴乐曲演奏自动演奏器乐曲演奏自动演奏器流水灯流水灯自动售票机自动售票机坟拔京沪养瘦崭馋籽倪大皮饭剃蓑宣害纸傲锹颧床姻净榷盼私陆饼极肯钧VHDL设计初步VHDL设计初步

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号