edavhdl第四讲设计初步与实际操作

上传人:痛*** 文档编号:235420954 上传时间:2023-11-08 格式:PPT 页数:101 大小:1.79MB
返回 下载 相关 举报
edavhdl第四讲设计初步与实际操作_第1页
第1页 / 共101页
edavhdl第四讲设计初步与实际操作_第2页
第2页 / 共101页
edavhdl第四讲设计初步与实际操作_第3页
第3页 / 共101页
点击查看更多>>
资源描述
EDAEDA技术技术实用教程实用教程第第4讲讲 手柒傅对蹬慧撅钟嫁钙彝堤然捞陪纽禁笑吠避吐窄葬睛轧信逃撇联厨锈叭2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作今天的内容点名(假条)对于4选1多路选择器的VHDL文本输入设计,掌握的学生人数统计超过一半则跳过第一小节。曳号棒金茸室拧砒绽庞援届寇嫂开肖叫秽傈堡甥苇谣缮飘拔锻你犹啄汗滦2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作第一小节VHDL描述以及对应的时序仿真图的简单解读课前提问,四种端口类型是哪四种?课前提问,关上书,实体和结构体的区别?课前提问,综合的四个层次?诬筏腕柠夹御镜樟撞欧蠢玉子嚣州闻墓径邑酸趣忿侵洁泡喀偷廊慰帛池综2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4 与Out 端口比,Buffer端口具有回读功能,也即内部反馈,但在设计时最好不要使用buffer,因为buffer类型的端口不能连接到其他类型的端口上,无法把包含该类型端口的设计作为子模块元件例化,不利于大型设计和程序的可读性。若设计时需要实现某个输出的回读功能,可以通过增加中间信号作为缓冲,由该信号完成回读功能。注:注:outout与与bufferbuffer的区别总结的区别总结:母坎膳俺羔缴祥恭澜爱讣握篇隆争痴角呛卉应伐妖汛梢题袒侣远妙捎铡汉2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作5 双向端口Inout是四种端口类型中最为特殊的一种,最难以学习和掌握,为此专门提供一个简单程序进行阐述,部分程序如下:control,in1为in,x为out,q为inout模式。process(control,q,in1)begin if(control=0)then x=q;else q=in1;x=“ZZZZZZZZ”;end if;end process;process(control,q,in1)begin if(control=0)then x=q;q=“ZZZZZZZZ”;else q=in1;x=“ZZZZZZZZ”;end if;end process;关于双向端口关于双向端口INOUTINOUT的使用的使用总结总结:汝疵符伍历织麻塘蛮环鸽雏牧瓮桌当现喀垂借扎倚犁襄臣猖廷表水荫方围2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例4-1】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTURE one;实体结构体4.1 多路选择器多路选择器VHDL描述描述图图4-1 mux21a实体实体图图4-2 mux21a结构体结构体 2选选1多路选择器的多路选择器的VHDL描述描述托莲雁们酿圈抖喝躬揽逛驶寅靡庞扦惨渊刀杨二企橇阂曹轧忿愧寻呼果饮2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例例4-2】ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e:BIT;BEGINd=a AND(NOT S);e=b AND s;y=d OR e ;END ARCHITECTURE one;【例【例4-3】.ARCHITECTURE one OF mux21a IS BEGIN y=(a AND(NOT s)OR(b AND s);END ARCHITECTURE one;鹤败疾虎贺饭蛾搜塌脉茸移歹果柱浅簇娶桔蛤仅拓卯谣骆富名结藤娜绽笨2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例】【例】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS(a,b,s)BEGIN IF s=0 THEN y=a;ELSE y=b;END IF;END PROCESS;END ARCHITECTURE one;坐底多阀挖沏液渣背梅途贪锅煎措浴移窍昂屿骗朋寇咽嗽剧鸯青狐礁臼柱2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述图图4-3 mux21a功能时序波形功能时序波形苏阉巳株尖速巷钨瘩敝帘锭绪袱哲莲焚奉夏喂秦廉待允稿笛颗难块设拂厌2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作以下几页,是给记忆不好的同学回忆的,看过以后就是今天进一步强调的程序书写的重点褐辣声绣畴纂停诛瓣殉明屉尺粒汀厕玩以棋细郧蕾肋蚊徐腿齿仿臆滁年砖2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.1.2 VHDL相关语法说明相关语法说明1.1.实体实体实体语句结构实体语句结构实体说明单元的一般语句结构:实体说明单元的一般语句结构:ENTITY ENTITY 实体名实体名 ISIS GENERIC(GENERIC(类属表类属表););PORT(PORT(端口表端口表););END ENTITY END ENTITY 实体名实体名;涂场肚患自花墨咳缨根狠篇乓索深彤谰药崎钙氖列粳焰哼乘匹雪威萝搪砂2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作GENERIC类属说明语句类属说明语句类属说明的一般书写格式如下:类属说明的一般书写格式如下:GENERIC(GENERIC(常数名常数名:数据类型数据类型 :=设定值设定值 ;常数名常数名:数据类型数据类型 :=设定值设定值 ););类属说明是实体说明中的可选项,放在端口类属说明是实体说明中的可选项,放在端口说明之前说明之前例:GENERIC(m:TIME:=3ns)旬什辜循翼李抚腿竖数图悄藐阶甲吮虾实罗命喧晴散余亥昼诉勒苹烫蘸谢2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例例LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY andn IS GENERIC(n:INTEGER);-定义类属参量及其数据类定义类属参量及其数据类型型 PORT(a:IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);-用类属参量限制矢量长度用类属参量限制矢量长度 c:OUT STD_LOGIC);END;蹈冰姥症骡峨孙屯舆焦腮铆要什证霸淳扰柞哄躇积蜜益欧苹罩什熙尘议踩2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作 PORT(端口)说明端口)说明PORT(PORT(端口名端口名:端口模式端口模式 数据类型数据类型;端口名端口名:端口模式端口模式 数据类型数据类型););其中的端口名是设计者为实体的每一个对外通道所取的其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型,是指端口上流动的数据的表达格式或取值类型,VHDL要求只要求只有相同数据类型的端口信号和操作数才能相互作用。有相同数据类型的端口信号和操作数才能相互作用。PORT PORT说明语句是对一个设计实体界面的说明及对设计实说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:入输出模式和数据类型的定义。其格式如下:塑逝嘎铭蕾多尚啥棍射面日噬嫂寅铱芋捡胀疟挖恿魁殴厚铲戳争鲍完推乘2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作端口模式端口模式INOUTINOUTBUFFER数据类型数据类型VHDL语言的IEEE1076/93标准规定,EDA综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。宛翔烽婚客烛压多用选喻敢彰扬顽亮纳日逢参羌泡卡宠枝用譬旗珊扬账陛2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作结构体的一般语言格式:结构体的一般语言格式:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 说明语句说明语句BEGIN 功能描述语句功能描述语句END ARCHITECTURE 结构体名结构体名;结构体具体指明了设计实体的行为,定义了结构体具体指明了设计实体的行为,定义了设计实体的功能,规定了设计实体的数据流程,设计实体的功能,规定了设计实体的数据流程,指派了实体中内部元件的连接关系指派了实体中内部元件的连接关系2 结构体结构体臂饺寿锚剂蕾菊恶骇俞舀仙异憎侄怒乎辱袜绰旗驳庶哩袋乞屏销痒硼酥胆2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作o 说说明明语语句句对对结结构构内内部部使使用用的的数数据据类类型型、常常数数、信信号号、子子程程序序和和元元件件等等元元素素进进行行定定义义。说明语句不是必需的说明语句不是必需的功能描述语句用于描述实体逻辑功能和电功能描述语句用于描述实体逻辑功能和电路结构。路结构。功功能能描描述述语语句句可可以以是是并并行行语语句句,也也可可以以是是顺序语句或是它们的混合顺序语句或是它们的混合。结构体的组成部分结构体的组成部分屑酵掌地忠触爸熙撅旋蔬砌崔皂岛省庶滥甥典邀豫圭蘸遁吗委喇蜕炯驴箩2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作以上几页,是给记忆不好的同学回忆的,接下来,是今天进一步强调的程序书写的重点耀骏杜呵台点涡寺洼晌项瓜乒沙丘寡亩帆襟撮咖掂扳慷廷祁庶樱阴悯艇序2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作用VHDL语言描述结构体功能有3种方法行为描述法:采用进程语句,顺序描述设计实体的行为数据流描述法:采用进程语句顺序描述数据流在控制流作用下被加工、处理、存储的全过程结构描述法:采用并行处理语句描述设计实体内的结构组织和元件互连关系眼芬贾梆朋村酥抿忧伦蝗岩桨顾康苯购雅鸟园般浑野浇磊袄确侨相矾秸量2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作功能描述语句结构功能描述语句结构进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程序调用语句元件例化语句元件例化语句鸯萌酮荆幕谱单拾轩标封恕巳阮淑咽蝴乍锁平湖芽省诲埃脚倪弹次徒糜剧2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作3 操作符操作符表表4-1 VHDL操作符列表操作符列表镰急簇敏炬懦颐结掉熊浪召央殖负袖扫佑霜壬潘瓣跌荤顶囤体浸镐浇杉霜2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作表表4-2 VHDL操作符优先级操作符优先级操作符操作符皂齐秒驻号雏廉脉拇卑创遵汪近尉细西揖拘好铂嚼擅痞故腥貉奏羞必垄葫2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例】【例】SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d,e,f,g:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL h,I,j,k:STD_LOGIC;SIGNAL l,m,n,o,p:BOOLEAN;.a=b AND c;-b、c 相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位矢量位长的位矢量 d=e OR f OR g;-两个操作符两个操作符OR相同,不需括号相同,不需括号 h=(i NAND j)NAND k;-NAND不属上述三种算符中的一种,必须加括号不属上述三种算符中的一种,必须加括号 l=(m XOR n)AND(o XOR p);-操作符不同,必须加括号操作符不同,必须加括号 h=i AND j AND k;-两个操作符都是两个操作符都是AND,不必加括号不必加括号 h=i AND j OR k;-两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误 a=b AND e;-操作数操作数b 与与 e的位矢长度不一致,表达错误的位矢长度不一致,表达错误 h=i OR l;-i 的数据类型是位的数据类型是位STD_LOGIC,而而l的数据类型是的数据类型是.-布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。因而不能相互作用,表达错误。逻辑操作符逻辑操作符丘费化拧锗逮肄耗交涂哪追寨免锣预亚碗钉惟屿米例野类喊基恋淫骗蜀殴2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作关系操作符关系操作符【例】【例】ENTITY relational_ops_1 IS PORT(a,b:IN BITVECTOR(0 TO 3);m:OUT BOOLEAN);END relational_ops_1;ARCHITECTURE example OF relational_ops_1 IS BEGIN m=(a=b);END example;【例】例】ENTITY relational_ops_2 IS PORT(a,b:IN INTEGER RANGE 0 TO 3;m:OUT BOOLEAN);END relational_ops_2;ARCHITECTURE example OF relational_ops_2 IS BEGIN m=b);END example;六种关系运算操作符:“=”(“=”(等于等于)、“/=”(“/=”(不等于不等于)、“”(“”(大于大于)、“”(“=”(“=”(大于等大于等于于)“=”(“=”(小于等小于等于于)围邓蕴附妮零忧漾豢魂犁熙忠斩萝坤旱欣哑葫满奢腻剿篡蚜崎选几媚劈阳2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作5分钟速记,然后做游戏钙锣切歹擦纪传扛肝答惜挛宽必则老寸联晦屹涅坏旅源叶伐隐疮整昏靡殖2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作上一节课,我们讲过IF THEN和CASE WHEN现在系统的列入了本PPT中,大家跟我一起来复习或者学习一次。枕玖思衷纫金瞎阿皂外寺涩屎肪惊待吱狠罢胖痕晾使距栈肄匣呢贩饲催沸2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.4.IF_THENIF_THEN条件语句条件语句顺序执行语句,只能用在进程中,有三种表现形式:IF 条件条件 THENEND IF;IF 条件条件 THENELSEEND IF;IF 条件条件1 THENELSIF 条件条件2ELSE 条件条件nEND IF;苛意茁奥槐璃越屡孕鲸禾羔青麻椰仑柳站窟酥幌沮焉蓑辖馁猾壶当唇佣谋2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例:Library ieee;use ieee.std_logic_1164.all;Entity encoder isPort(d:in std_logic_vector(3 downto 0);q:out std_logic_vector(1 downto 0);end encoder;architecture example_if of encoder is beginprocess(d)begin if(d(0)=0)then q=“11”;elsif(d(1)=0)then q=“10”;elsif(d(2)=0)then q=“01”;else q=“00”;end if;end process;End example_if;d3 d2 d1 d0 q2 q1X x x 0 1 1X x 0 1 1 0X 0 1 1 0 10 1 1 1 0 0优先级编码器真值表优先级编码器真值表田牲井胺须乡池询百籽瑞豢恕洞拍圣撞印镶密脊闲枷颜禁技国企啪幻诅松2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作5.5.WHEN_ELSEWHEN_ELSE条件信号赋值语句条件信号赋值语句赋值目标赋值目标=表达式表达式1 WHEN 赋值条件赋值条件1 ELSE 表达式表达式2 WHEN 赋值条件赋值条件2 ELSE .表达式表达式n;注意:注意:1、条件信号语句不能进行嵌套、条件信号语句不能进行嵌套2、条件信号语句是并发语句,进程内外都可以使用、条件信号语句是并发语句,进程内外都可以使用寸熙田窘绰沽搽安囤易衬肖散挛垃尚锹空网蚁叁敷檀戌极改垣剧珍横框札2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例:用条件信号赋值语句设计四选一电路模块Library ieee;Use ieee.std_logic_1164.all;Entitu mux4 isPort(d0,d1,d2,d3,a,b :in std_logic;q:out std_logic);End mux4;Architecture arch of mux4 is signal sel:std_logic_vector(1 downto 0);Begin sel=b&a;q=d0 when sel=“00”else d1 when sel=“01”else d2 when sel=“10”else d3 when sel=“11”else z;End arch;替毋浪炼文吱辐缴蜂芳院峭败龋拾寸炒尔莲今庶稍岛脾匡棉授彩督屉讶谱2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作6.6.PROCESSPROCESS进程语句和顺序语句进程语句和顺序语句Process语句在VHDL程序中,是描述硬件并行工作行为的最常用,最基本的语句进程语句格式进程语句格式PROCESS语句结构的一般表达格式如下语句结构的一般表达格式如下 进程标号进程标号:PROCESS (PROCESS (敏感信号参数表敏感信号参数表 )ISIS 进程说明部分进程说明部分 BEGINBEGIN 顺序描述语句顺序描述语句 END PROCESS END PROCESS 进程标号进程标号;捍坐文专坷鳃桑藉糙娠颂澄靛犀烙备昆圾蛔埂哑豪转檄作痰襄噪敌绚球笋2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作 PROCESS 组成组成PROCESS语句结构语句结构进程说明进程说明顺序描述语句顺序描述语句敏感信号参数表敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句寄刨推料拒盎锋盲者妒徐锣敌嘘痛利糖壁瞥雷哦耶哇桥半戴谭毙则露寝委2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作 进程要点进程要点1 1)PROCESSPROCESS为一无为一无限循环语句限循环语句2 2)PROCESSPROCESS中的顺序语句具有明显的顺序中的顺序语句具有明显的顺序/并行运行双重性并行运行双重性3 3)进程必须由敏感信号的变化来启动)进程必须由敏感信号的变化来启动4 4)进程语句本身是并行语句)进程语句本身是并行语句5 5)信号是多个进程间的通信线)信号是多个进程间的通信线6 6)一个进程中只允许描述对应于一个时钟信号的同步时)一个进程中只允许描述对应于一个时钟信号的同步时序逻辑序逻辑 袱脐腆面褐载湛找匀嚣承刮疽提捅最勉这岔谁寄石剿谱曾急屿层惜辣峨皑2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例例】ENTITY mul ISPORT(a,b,c,selx,sely :IN BIT;data_out :OUT BIT);END mul;ARCHITECTURE ex OF mul IS SIGNAL temp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGIN IF(selx=0)THEN temp=a;ELSE temp=b;END IF;END PROCESS p_a;p_b:PROCESS(temp,c,sely)BEGIN IF(sely=0)THEN data_out=temp;ELSE data_out=c;END IF;END PROCESS p_b;END ex;牵捶抗陋洼射雪调脂坞翼总实育啃盅咀平娇愤碌练独意障弗贝搁笔潜就谭2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作7.7.文件取名和存盘文件取名和存盘1)取名最好与文件实体名相同;2)文件后缀名必须是.vhd3)VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为work库,work库的路径即为此目录的路径双竟酿妻摘驾剧镁匠蝉击冒眷忽汀件拇痞鬃法赵戴幼炕展询离砧炔愉沁曾2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作 总结总结 一个完整的VHDL语言程序通常包括实体、构造体、配置、包集合和库5个部分。实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放各设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合、和配置。峡蛋肥藉褒足兄魂例滞动卿红岭烫暮刹嫡露诚斋瞪胁咋袁假耸屋颓耘霸罢2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作接下来,是自学内容,相对比较简单有疑问提问,5分钟后我提问,回答上来的加分勉窜铃及油纽隘莹夷淤钓浅料啸姐媚醋肢簿刹携痰逾韶念跑是乐调根院驯2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象4.2.1 D触发器的触发器的VHDL描述描述【例4-9】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;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;D触发器触发器装稚冯霸外淆访诲叶判佛题杜桩瘁挥加镐痛夸旋育仁块韧翅汤篆赂喉旭力2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2.2 D触发器触发器VHDL描述的语言现象说明描述的语言现象说明1.1.标准逻辑位数据类型标准逻辑位数据类型STD_LOGICSTD_LOGICBIT数据类型定义:TYPE BIT IS(0,1);TYPE BIT IS(0,1);STD_LOGIC数据类型定义:TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);TYPE STD_LOGIC IS(U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的9种数据的含义是:UU表示未初始化的;表示未初始化的;XX表示强未知的;表示强未知的;0 0表示强表示强逻辑逻辑0 0;1 1表示强逻辑表示强逻辑1 1;ZZ表示高阻态;表示高阻态;W W 表示弱未知的;表示弱未知的;LL表示弱逻辑表示弱逻辑0 0;HH表示弱表示弱逻辑逻辑1 1;-表示忽略。表示忽略。拦蔬底综杨顺皱充暗妮蓉悬浓合兆渣棚屏武丧萌阴熟锋墩胸诫骂骡郸枷透2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作Library ieee;USE IEEE.STD_LOGIC_1164 ENTITY mux21a IS PORT(a,b:IN std_logic;s:IN std_logic;y:OUT std_logic);END mux21a;ARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END one;例:糟尸舵栈峭恫亡煎友侥暇社挎莹侵妄粟柞掸粕妊榜珊吃颗鹅堵纶馋蜕疡刷2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作2.2.设计库和标准程序包设计库和标准程序包 库是用来存储和放置可编译的设计单元的地方,通库是用来存储和放置可编译的设计单元的地方,通过其目录可查询、调用。设计库中的设计单元可以用作过其目录可查询、调用。设计库中的设计单元可以用作其他其他VHDL描述的资源描述的资源 一般的,设计库中放程序包,不同库中所放的程一般的,设计库中放程序包,不同库中所放的程序包的个数不一致。程序包放子程序,子程序中含有序包的个数不一致。程序包放子程序,子程序中含有函数、过程、元件等基础设计单元。函数、过程、元件等基础设计单元。伪矛彰秋挣喂茧传闪坛励辛得臃籍氰妖此宵娶欣液堑己宪舷断阮警子昧撵2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作 库的种类库的种类VHDL的库设计库:对当前项目是可见默认的,无需声明。包括STD库和WORK库。STD库中包括STANDARD和TEXTIO两个程序包资源库:常规元件和标准模块存放的库,使用前需预先说明。有些是IEEE标准化组织认可的,称为IEEE库肌辆宿竭外咖灿网糙玲京壤净驰驻潘啸重淆黔滑退吃晤捆尿灶炼咯涨沏抒2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作使用库和程序包的一般定义表式是:LIBRARY LIBRARY ;USE USE .ALL;ALL;USE语句的使用有两种常用格式:USE 库名库名.程序包名程序包名.项目名项目名;USE 库名库名.程序包名程序包名.ALL;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.STD_ULOGIC;USE IEEE.STD_LOGIC_1164.RISING_EDGE;儿耿钳胆熬慷疆癸墓根胚啤儒封北谱陇化绘构匀沿恋痈勋泳缅断扛礼炙别2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作常用的预定义的程序包常用的预定义的程序包STD_LOGIC_1164程序包程序包STD_LOGIC_ARITH程序包程序包STD_LOGIC_UNSIGNED和和STD_LOGIC_SIGNED程序包程序包STANDARD和和TEXTIO程序包程序包VHDL程序包程序包戊谓药烹胞爆宣婆漾养桓冲异违寂继俊眼磷胯仟灰衰嗜耍啊全判胎隶嘉论2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例:计数器Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity count is port(clk :in std_logic;q :out std_logic_vector(3 downto 0);End count;Architecture arch of count is signal m :std_logic_vector(3 downto 0);begin process(clk)begin if clkevent and clk=1 then if(m=“1111”)then m=“0000”;else m=m+1;end if;end if;end process;q=m;End arch;手晚爹蘸譬境照鳖盗炯拷夜吕云读俩舌噎捡绘虫卵温漂百札幢孤涛倦庇闯2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作3.3.SIGNALSIGNAL信号定义和数据对象信号定义和数据对象定义格式:定义格式:SIGNAL 信号名:信号名:数据类型数据类型:=初始值初始值;信号的使用和定义范围是实体、结构体和程序包,在进程和子程序的顺序语句中不允许定义信号信号赋值语句:目标信号名=表达式;Signal a,b,c:std_logic;Process(a,b)begin c=a+b;End process;使坪缩暮避篙蚜莫翔吭了咨裂令孟淘雀蚁匣芦侈瘴仲穆止昂抵铣猾驯箩卧2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例4-10】ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q=D;END IF;END PROCESS;END;数据对象数据对相类似于一种容器,它接受不同数据类型的赋值。数据对象有三类:信号,变量和常量辙辟芒枷换麻南蔑皑曳蒙昆绵膏良善幽瓶砌寅昭最础孰伞杜延蚕裹错熊病2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.4.上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENTEVENT 关键词EVENT是信号属性,VHDL通过以下表达式来测定某信号的跳变边沿:EVENTEVENT边沿检测语句:边沿检测语句:clockEVENT and clock=1 检测上升沿 clockEVENT and clock=0 检测下降沿搔赢寨憨个畸掠胀着采垂评姬池夕稻曼功匆彝艇辐躬便陛星擒用谜羊赤籍2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作*现场可编程门阵列 field programmable gate array(FPGA)*复杂可编程逻辑器件complex programmable logic device(CPLD)*硬件描述语言hardware description language(HDL)大规模集成large scale integration(LSI)中规模集成medium scale integration(MSI)吸奈惑就抛衰耻车蹦女哄皖丑圃她卡危痘窃腊焕隐诛获论雁窗鹰贯咳碱险2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作5.5.不完整条件语句与时序电路不完整条件语句与时序电路【例【例4-9】ENTITY COMP_BAD IS PORT(a1 :IN BIT;b1 :IN BIT;q1 :OUT BIT );END;ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1 b1 THEN q1=1;ELSE q1=0;END IF;END PROCESS;END 图图4-6 例例4-10的电路图的电路图捻习叭木卒棋琢汉凸醚凄冗佐樊狰嫩绝徐信聋涵铬惜涣谷釉阶物翻乏鼓咖2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-11】.PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF;END PROCESS;【例【例4-12】.PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例4-13 THEN Q=D;END IF;END PROCESS;锅喀潘谅杏荷洛姻曙孕柄婚洱柔改腕委神说想忠碗搅刻夯科买奔哨又宴妒2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-13】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF3 IS PORT(CLK:IN STD_LOGIC;D :IN STD_LOGIC;Q:OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1:STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF rising_edge(CLK)-CLK的数据类型必须是的数据类型必须是STD_LOGIC THEN Q1=D;END IF;Q=Q1;END PROCESS;END;忻示尝甘爆叛剐令券流拙荔绰辅蕉值炕做失糠产韭窖伯锭粥级挛蛛峰挟错2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例4-14】.PROCESS BEGIN wait until CLKevent and clk=1;-利用利用wait语句语句 Q=D;END PROCESS;【例4-15】.PROCESS(CLK)BEGIN IF CLK=1 THEN Q=D;-利用进程的启动特性产生对利用进程的启动特性产生对CLK的边沿检测的边沿检测 END IF;END PROCESS;【例4-16】.PROCESS(CLK,D)BEGIN IF CLK=1 -电平触发型寄存器电平触发型寄存器 THEN Q=D;END IF;END PROCESS;毒碟奈队铣窑爪炮户怨汉盈严绑愚流言发揩柔陨袁厩孽棺羚格鹏傈矗煤尸2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式图图4-7 边沿型触发器时序波形边沿型触发器时序波形图图4-8 电平触发型寄存器的时序波形电平触发型寄存器的时序波形矽干乙副炼斤鹃锨转山膏它敖惹渍皋详厩抚变竟件你妮枫蹦闪冤憾林皂否2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作异步时序电路特点*1.电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;2.电路中没有统一的时钟;3.电路状态的改变由外部输入的变化直接引起。设计*一般分为两步:第一步确定各位触发器时钟信号,第二步求电路状态方程、激励方程、输出方程。显然,第二步工作是建立在第一步工作基础上,只有确定了时钟信号,才能有效设计其它电路。是否能将异步时序电路设计仅通过对其时钟设计一步完成?笔者在教学过程中,认真分析异步时序电路特点,提出了基于时钟设计的异步时序逻辑电路设计法,从而避免了求解电路状态方程、驱动方程,简化了异步时序电路设计。贬藏滥各谗整库陆消够祁吧庸洱商嫌菜诛渗胳墨间砾淘檄消酋即售摊付悔2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例:带异步复位的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF4 IS PORT(CLK:IN STD_LOGIC;clr,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END DFF4;ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS(CLK,clr)BEGIN if clr=0 then Q=0;elsif CLKEVENT AND CLK=1 THEN Q=D;END IF;END PROCESS;END bhv;登峪挖署腿仙慕冰期感曙直佃盯抚腔砚渠碴邪鸣赴打四情荣伴战落宵萝冗2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.3.1 半加器描述和半加器描述和CASE语句语句【例【例4-20】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;END ARCHITECTURE one;【例【例4-21】LIBRARY IEEE;-半加器描述半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL;ENTITY adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY adder;ARCHITECTURE fh1 OF adder is BEGIN so=NOT(a XOR(NOT b);co=a AND b;END ARCHITECTURE fh1;研软踏娱悉变汝埠畴浪曼害位爬嘴甜荚稼候收语旋偷诉市舆赴蛤乖采迷销2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.3 1位二进制全加器的位二进制全加器的VHDL设计设计图图4-10半加器半加器h_adder电路图电路图图图4-11 全加器全加器f_adder电路图电路图讲喀率按凋戚逗家球宋芝莎教句卸怖柴收熊傅尼帕钦它褂眼壹坠品烃布栗2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作ab so co0000011010101101表表4-1 半加器半加器h_adder逻辑功能真值表逻辑功能真值表戏墙如帖释赘幕脐纹煤渴妈夷白源荡惠坡酌疚羊制兼喂索灌协寐晤练同彼2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例【例4-22】LIBRARY IEEE;-半加器描述半加器描述(2)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 SIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc so=0;co so=1;co so=1;co so=0;co NULL;END CASE;END PROCESS;END ARCHITECTURE fh1;奸煮痛心薄烈莽卢如浴姿蜡党钳斋毋研灿昔盘瘩伸他鱼究升袱民绢陀赊柳2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作【例例4-22】.-半加器描述半加器描述(3)SIGNAL abc,cso:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN abc=a&b ;co=cso(1);so cso cso cso csoain,b=bin,co=d,so=e);u2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum);u3:or2a PORT MAP(a=d,b=f,c=cout);END ARCHITECTURE fd1;壬坍蚕郧读首板舌溉曝围荣骇堂左嗽家跺黍蓑暑切恶醚汗瓶妖迷歇誉嫌练2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.3.1 半加器描述和半加器描述和CASE语句语句1.1.CASECASE语句语句CASE语句的一般表式是:语句的一般表式是:CASE ISWhen =;.;;When =;.;;.when others=END CASE;Case语句常用来描述总线行为、编码器和译码器的结构湿和器傲豌争锚僚谴翠久汤辟栽肘倡苛咬恰樟沟钱庇插诵乐零踊亏聋巴郡2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作例:例:PROCESS(abc)BEGIN CASE abc IS WHEN 00=so=0;co so=1;co so=1;co so=0;co NULL;END CASE;END PROCESS;阮女孤献鸿卯险恍疟彝谎肃抡枢屈介颜诺左每填歼规娘慎里撒桐凋酸双缀2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作process(s,a,b,c,d)begin case s is when 00=zzzznull;end case;end process;end behav;library ieee;use ieee.std_logic_1164.all;entity mux4 isport(s1,s2:in std_logic;a,b,c,d:in std_logic;z :out std_logic);end entity mux4;architecture behav of mux4 is signal s:std_logic_vector(1 downto 0);begin s=s1&s2;龄嫉报嫩嗽翁福龄诧厕葡而猩超闺韶眩寡良性漓单祷荧利神擦往琶蕾酌觉2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作结论:选择器的行为描述即可以用if语句,也可以用case语句If语句是有序的,先处理最起始、最优先的条件,后处理次优先的条件Case语句是无序的,所有表达式值都并行处理。Case语句中的条件表达式中的值必须举穷尽,又不能重复不能穷尽的条件表达式的值用others表示园杀削昏毕虹精嫌劈碳堕盼患支哟脾练谍摄枷黍阎除巧邱雹栓彤莎有值翌2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作接下来是操作指导请自己对照文本和之前我教的进行。看能否理解步骤。(注意,软件界面不同,不要照抄)斩极阻羽沙燃整拷擞盲对搅宁较蓄盘啊神释麻执疚率膏呜星惋逝欲三虑鳖2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作STEP1:建立 工作库文件夹STEP2:输入设计项目原理图/VHDL文本代码STEP3:存盘,注意 原理图/文本取名STEP4:将设计项目设置成ProjectSTEP5:选择目标器件 STEP11:硬件测试STEP9:引脚锁定并编译STEP8:仿真测 试和波形分析STEP7:建立仿真波形文件STEP6:启动编译STEP10:编程 下载/配置VHDL文本输入设计流程 石基接啥炽产娥缨相投碍捅椒帚姨荚吩丫倒降肿舰毋弗吃冯熟醒连签趋沮2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.4 VHDL文本输入设计方法初步文本输入设计方法初步为设计全加器新建一个文件夹作工作库文件夹名取为My_prjct注意,不可用中文!姥羡罢砸揭菏秀儡磅冉貉幽途英矢嗓镐确召币舌庐怕啼帖赤鸡紧善毅术药2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作编辑输入并保存编辑输入并保存VHDL源文件源文件新建一个设计文件使用文本输入方法设计,必须选择打开文本编辑器臃龚潮饲舀素插雅潜笺耳坍惧且屠义心杭摧扔哼卸跨仰莆聪钳赠莫堂票室2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作图图4-13 在文本编辑窗中输入在文本编辑窗中输入VHDL文件并存盘文件并存盘图图4-12 建立文本编辑器对话框建立文本编辑器对话框文本编辑窗用键盘输入设计文件:多路选择器存盘文件名必须取为:mux21a.vhd注意,要存在自己建立的文件夹中跟厢迷胡崎列迪污俞止该颠戮息展蜘缀吧桩立腐疹糖孝僵卖溉捡蝎拱胃凹2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作文件存盘后,关键词将改变颜色!否则文件名一定有错!辛鸟每社胡抱谰栅拈孙熄又桩闰怨胡缔懊扎泞落筛痉料恫数撇腻馒永涕瑶2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作图图4-14 设定当前文件为工程设定当前文件为工程首先点击这里然后选择此项,将当前的原理图设计文件设置成工程最后注意此路径指向的改变泰砧甲嫡灌咖凛告态替裙窥都渣渤监虞呕监纷豹王仙豁彤茸博渴听取拾忙2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作注意,此路径指向当前的工程!俱缝橱沥宅讼奈跺蔼棍其入躬瓶膊阵柔浓雇添特声吏缘阳滓罩幂磁掐将昼2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作首先选择这里器件系列选择窗,选择ACEX1K系列根据实验板上的目标器件型号选择,如选EP1K30注意,首先消去这里的勾,以便使所有速度级别的器件都能显示出来缝宇支迷咳庚策柯仿貌纺芝隔醉凿沦甚钨蔼洪浪缎拘粕俺玄乳祁绎颧驰蛇2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作选择编译器编译窗仲颈躁建充襄甘蒜荚毅酝醉进伪鲁岁邢喷镀牡益增钻惹跌斡西蜗认妖卑若2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.4.3 选择选择VHDL文本编译版本号和排错文本编译版本号和排错图图5-15 设定设定VHDL编译版本号编译版本号选择此项选择VHDL1993项炳凿赠碰陛冶屁倚剂痹廉磅庭颠埔丰储隐怎某匡默藏赵煽枢揣留症嘴畜较2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作选择此项消去这里的勾涟庇蛤侨佯囤甚旬醋狈已痞驱蚌赞啃谩缩排借透鸦灶恭凤投勋慎三侄燕貌2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作编译出错!罗摧给儒购馁嘶剁旺桐寨誓剧辉连驭屋懈藤逊哈自趣箍汛悯涨壕版和搔棘2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作4.4.3 选择选择VHDL文本编译版本号和排错文本编译版本号和排错图图4-16 确定设计文件中的错误确定设计文件中的错误打开错误提示窗臼靴脉杯次银锭侠狞痰散绰啃果侥潜梭拱凡痒读咸趴而柱粥僵美较墅狮绣2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作错误所在错误所在逾够掩道挫不馆笑骄酌柳奄眶砚聂酣脓起丑陈羡朴背瘁粟嚷橙畸逸愈鲜蟹2013edavhdl第四讲设计初步与实际操作2013edavhdl第四讲设计初步与实际操作改正错误琵
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!