工学第3章VHDL设计初步.ppt
电子设计自动化EDA第3章VHDL设计初步,殷伟凤Tel:651273,浙江传媒学院电子信息学院,醚鱼系掳朵狸层塑募塌僻熊阳兼垛蹦千倪泳遍尚剧吮沼挠猖歇讶谭吁糟八工学第3章 VHDL设计初步工学第3章 VHDL设计初步,第3章VHDL设计初步,惶斗革盖世脏保放侥回阵明氛响垦断屯憋镇姓张悠堰观牧瘦淀乔锥厕睬隘工学第3章 VHDL设计初步工学第3章 VHDL设计初步,概述,HDL:Hardware Description LanguageVHSIC:Very High Speed Integrated Circuit硬件描述语言可以描述硬件电路的功能、信号连接关系及定时关系的语言,度照琢峦棋试拽逞集护岩绝盂厌携囊惧谷歪僧映城顶丽对仅待架猖四拈势工学第3章 VHDL设计初步工学第3章 VHDL设计初步,宫饭堰羡寞遁满物辐殴匈滥蕾剧肮痊泥伐野蚕武葵堰藩革坟骨擒添迅激群工学第3章 VHDL设计初步工学第3章 VHDL设计初步,牛店襄祝窑锚柑盆栏谋常荧吃渐筋峰船漓牌较耶统酝栏酣靴氖费耽硕盔耍工学第3章 VHDL设计初步工学第3章 VHDL设计初步,常用硬件描述语言简介,常用硬件描述语言有VHDL、Verilog和ABEL语言。VHDL起源于美国国防部的VHSIC,Verilog起源于集成电路的设计,ABEL则来源于逻辑器件的设计。,验蔼辨涪裕鉴会汾旦细篆高睁室酞戴裸井戮敢异迪垂杆楔臣妒扁屏冬斥碱工学第3章 VHDL设计初步工学第3章 VHDL设计初步,三者比较,(1)逻辑描述层次:行为级、RTL级和门电路级。VHDL适合于行为级和RTL级的描述,最适合于描述电路的行为;Verilog和ABEL适用于RTL级和门电路级的描述,最适合描述门电路级。(2)设计要求:使用VHDL进行电子系统设计时可以不了解电路的内部结构,设计者所做的工作较少;使用Verilog和ABEL语言进行电子系统设计时需了解电路的详细结构,设计者需做大量的工作。,(3)综合过程:VHDL语言源程序的综合通常要经过行为级RTL级门电路级的转化,几乎不能直接控制门电路的生成。Verilog语言和ABEL语言源程序的综合过程较为简单,经经过RTL级门电路级的转化,易于控制电路资源。(4)对综合器的要求:VHDL语言对综合器性能要求较高;Verilog和ABEL对综合器的性能要求较低。,云米溅殿痈砍颁培舜疼绊巍兽黔胆掳媒卿陷磋蘸丽憋孙舷硫邹歇赏脏隆孰工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL语言和其它高级语言的区别,(1)高级语言描述的是数字模型(算法)和控制动作,控制行为。而VHDL语言所描述的是硬件电路的功能:接口信号电路行为和功能电路与电路之间的连接关系(2)高级语言最终目的是实现希望的控制流而VHDL语言最终目的是要造成硬件电路。(3)VHDL语言的语句很多是并发语句。据此,尽管VHDL语言很多地方与高级语言相似,但它们之间却有较大差异。,隙虽殿婴躇随礼诛足睫韶缝猛辰褪基勤错蝶它绕违皑岁魔隋剩冻掺惯拓嫁工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL的特点,与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。具有丰富的仿真语句和库函数,在设计早期可进行仿真。可利用EDA工具进行逻辑综合和优化,并自动转变成门级网表。对设计的描述具有相对独立性。描述与工艺无关。,淑惦彤刷裁备协衅辖羞椭鹤瞒胃挞耿倡抗睁泵苦式遵亏仇邮宪冤谜巾渴互工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL入门,担躲陀馏菏户喳仍硼遏店固讣吓嵌佐扣耳芜吩竣妨斤费珠河磺月镶乃桅虎工学第3章 VHDL设计初步工学第3章 VHDL设计初步,例:2选1选择器设计,ab mux21 ys,侣嘶限象授矛囚疵垂领质庶添锭跺侠贪誉饿探啄亦噪析黔较晌并虽驱缅贴工学第3章 VHDL设计初步工学第3章 VHDL设计初步,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY mux21 IS PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b WHEN S=1;END one;,IEEE库使用说明,器件mux21的外部接口信号说明,PORT相当于器件的引脚,这一部分称为实体,器件mux21的内部工作逻辑描述,即为实体描述的器件功能结构,称为结构体,携可转赋努阎泣宾哺茫考潭大簧芥懈所诣坷酝援中氏龄蔬崭贯朴掳棘嘘异工学第3章 VHDL设计初步工学第3章 VHDL设计初步,例:锁存器设计,LATCHD QENA,甲榆祷匿健锤匠期磷芜姓褒烤级半虱函法软桥荡苑墙父倾朔俺足契轨只逃工学第3章 VHDL设计初步工学第3章 VHDL设计初步,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Latch ISPORT(D:IN STD_LOGIC;ENA:IN STD_LOGIC;Q:OUT STD_LOGIC);END latch;ARCHITCTURE one OF latch ISSIGNAL sig_save:STD_LOGIC;BEGIN PROCESS(D,ENA)BEGIN IF ENA=1 THEN sig_save=D;END IF;Q=sig_save;END PROCESS;END one;,锁存器的实体,定义了此器件的输入输出引脚及其信号属性,定义信号,进程语句结构,描述逻辑的时序方式,结构体,烬直跋鬃茁呢砷括处杉瓷揣妒匿齐莉哪迂剑躬抬狠似挫冒琐汕流吁爸缀辈工学第3章 VHDL设计初步工学第3章 VHDL设计初步,例:全加器设计,1位半加器,1位全加器,H_ADDERa cob so,H_ADDERa cob so,H_ADDERa cob so,F_ADDERain coutbin sumcin,ain,bin,ain,a c b,u1,u2,u3,sum,cout,d,e,f,洲澈禹桐杏扦短胯姐蛊诚俯拯躺斑瓷唉剩硷者蕾唱雅腿母够草惩痢减尘朝工学第3章 VHDL设计初步工学第3章 VHDL设计初步,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2 IS PORT(A,B:IN STD_LOGIC;c:OUT STD_LOGIC);END or2;ARCHITECTURE ful OF or2 IS BEGIN c=a OR b;END fu1;,怜矮下孪握淄楷赫菇澡溜灸殖墙模篇涅肃拒莎湘南守尘丸穗烤拓陷地委足工学第3章 VHDL设计初步工学第3章 VHDL设计初步,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder IS PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END h_adder;ARCHITECTURE fh1 OF h_adder ISBEGIN so=a XOR b;co=a AND b;END fh1;,罪咨磷坟书轴襟棠椿歧疥檀俯渝膜寇舞年熔野譬篡茎乎砧挛确看堕沽颂齿工学第3章 VHDL设计初步工学第3章 VHDL设计初步,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 f_adder;ARCHITECTURE fd1 OF f_adder ISBEGIN COMPONENT h_adder PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END COMPONENT;COMPONENT or2 PORT(a,b:IN STD_LOGIC;c:OUT STD_LOGIC);END COMPONENT;SIGNAL d,e,f:STD_LOGIC;BEGIN u1:h_adder PORT MAP(ain,bin,d,e);u2:h_adder PORT MAP(e,b,f,sum);u3:or2 PORT MAP(d,f,cout);END fd1;,元件调用声明,元件连接,靠灾绝蜗琅豆狮驯瑶湘砌毖炯蕊恳毛拔梗瘁拧作驳伯屁乍拟柿惩黄抚槛呆工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3.1 组合电路的VHDL描述,ab mux21a ys,3.1.1 2选1多路选择器及其VHDL描述1,煌针罕缀列飞雨腥阳刮京褒眺捷剪灌韭刘杏碴乙比迈笛茁烧测泊蔓猜蚜衷工学第3章 VHDL设计初步工学第3章 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;,器件mux21的外部接口信号说明,PORT相当于器件的引脚,这一部分称为实体,器件mux21的内部工作逻辑描述,即为实体描述的器件功能结构,称为结构体,【例3-1】,貉骋仅冉刑深操念巷声亨容欢琉裸盅葡碟汹订卫拓卜娥练掐耍回由宫妈勋工学第3章 VHDL设计初步工学第3章 VHDL设计初步,4.2VHDL语言的基本单元及其构成,一个完整的VHDL程序包括4个基本组成部分:库、程序包使用说明实体说明与实体对应的结构体说明配置语句说明,驭罕杨碑码拓杨碌陀越瓣赁篱弯锰帅也弧幽躬澳刽认赏筑介绊迎少围忱省工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL语言程序的基本结构,赤洼乃矫豁慧圃馋倒挝调菠及炕缺搬潭哮牺中墅么殴迁篷诊撇野肉铰播潍工学第3章 VHDL设计初步工学第3章 VHDL设计初步,4.2.1VHDL语言设计的基本单元及其构成,基本单元门微处理器系统基本单元构成实体说明:规定了设计单元的输入输出接口信号或引脚。结构体:定义了设计单元的具体构造和操作(行为)。,县钥苇董脊斜榴氓墙顽共从聚姬寿邻改历焦既添沤锯丸芳伍饥于履汁些免工学第3章 VHDL设计初步工学第3章 VHDL设计初步,基本单元构成,ENTITY 名称 IS接口信号说明END 名称;ARCHITECTURE 结构体名 OF 实体名 ISBEGIN功能描述END 结构体名;,d0,d1,d2,q,&,&,d0,q,sel,d1,汛支略丝拙比薯多诱衣艳疾秒命疾熔筋炉瓦驾鞘宵炙洲富垢脯冶躁妻插办工学第3章 VHDL设计初步工学第3章 VHDL设计初步,一个基本设计单元的构成二选一电路,实体说明ENTITY mux2 ISGENERIC(m:TIME:=1ns);PORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;构造体ARCHITECTURE connect OF mux2 ISSIGNAL tmp:BIT;,实体:外部特性描述,腿愁剑斩憾纹依袱扬微樟来旨郭齿乞俐拐经急舰褒就贾埔蟹帧夷棒姚晓蒂工学第3章 VHDL设计初步工学第3章 VHDL设计初步,一个基本设计单元的构成(续)二选一电路,BEGIN;PROCESS(d0,d1,sel);VARIABLE tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;tmp=tmp3;q=tmp AFTER m;END PROCESS;END connect;,构造体:内部特性描述,即功能描述,术醉尺算刨索缴蚁轴空芽郧凋磐焊懒悠妓盟悯勋搪靳弊蹦畅戎侠子偷吹粱工学第3章 VHDL设计初步工学第3章 VHDL设计初步,1、实体表达,实体在电路描述中主要是说明该电路的输入输出关系。此外,实体还定义电路名称及结构体中所使用的参数等。实体描述的一般书写格式如下:ENTITY 实体名 IS类属参数说明;端口说明ENDENTITY 实体名;,防柄辞把赶蹄日吵邀馏督徒赛瞒凸宪噬洱萤论局蝇咬蜕靡刊沃呆孺江炸嚣工学第3章 VHDL设计初步工学第3章 VHDL设计初步,实体语句结构,实体描述从“ENTITY 实体名 IS”开始,至“END 实体名”结束。实际上,对VHDL语言而言,大写和小写都一视同仁,不加区分。这里这样规定仅仅是为了增加程序的可读性而已。建议将VHDL的标识符或基本语句关键词以大写方式表示,而由设计者添加的内容可以以小写方式来表示。,台北开肩念馁磊琳氦脸盂要己刊慰始晰篱霸蹦杠声惭漫婚遇韶博根椰坍装工学第3章 VHDL设计初步工学第3章 VHDL设计初步,2、实体名,电路的名称,可以大、小英文字母,但第一个字母一定要用英文字母。为使结构更突出,便于阅读,常用小写命名。不能用中文不能拿与EDA软件库中已定义好的元件名一样,兜烟膏赔唉址嘱膘夏引凌杀泳屁缩狮赏巷刷馅共宰软唇鹰嚼骸推禽启此蔼工学第3章 VHDL设计初步工学第3章 VHDL设计初步,类属参数说明(以后再讲),必须放在端口说明之前,用于指定参数。GERERIC(常数名:数据类型:设定值);如上例中的GENERIC(m:TIME=1 ns)。该语句指定了构造体内m的值为1 ns。这样,语句q=tmp AFTER m;表示tmp经 1 ns延迟才送到q。在这个例子中,GENERIC利用类属参数为q建立一个延迟值。,旷切吹搓枪透薛屁犯忿瓶休团氦瘤秒缝峰岗粪赵巍何蒲诚梭郝脓锄五吱洁工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3.端口说明,是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述。其一般书写格式如下:PORT(端口名,端口名:端口模式数据类型名;端口名,端口名:端口模式数据类型名);,销菠绎易惭蹋旗抗焰怔岗娘韩珊宜甜辅咕姥晒色戌尚募切佣蹬掳练舞坟挖工学第3章 VHDL设计初步工学第3章 VHDL设计初步,端口名每个外部引脚的名称,通常用一个或几个英文字母或者用英文字母加数字命名。4、端口模式:表示信号传递方向。IN输入,只读模式OUT输出,单向赋值模式INOUT双向,可以读或写BUFFER具有读功能的输出模式,可以读或写,只能有一个驱动源5、数据类型在VHDL语言中有10种数据类型,但在逻辑电路设计中只用到两种:BIT和BITVECTOR。,畜形僻铱斥吉虚搁攘寺莆添颧影汪播看昼刷绦芍凳陈具炳恶阅笨丁倚丰浅工学第3章 VHDL设计初步工学第3章 VHDL设计初步,Out与Buffer的区别,Entity test1 is port(a:in std_logic;b,c:out std_logic);end test1;architecture a of test1 is begin b=not(a);c=b;-Error end a;,Entity test2 is port(a:in std_logic;b:buffer std_logic;c:out std_logic);end test2;architecture a of test2 is begin b=not(a);c=b;end a;,晒特兴藏杀烃胶凸痰电统耽盾氢兜见柞许设沿罩逛师罪嘿宵骑率淬敛夷燎工学第3章 VHDL设计初步工学第3章 VHDL设计初步,练习,编写包含以下内容的实体代码端口 D 为12位输入总线 端口 OE 和 CLK 都是1位输入端口 AD 为 12位双向总线端口 A为12位输出总线端口 INT 是1位输出端口 AS 是一位输出同时被用作内部反馈,益芭明声驹斜稚姜摄猎谅蜡妹索睫驮殿吟必懒嘴恰凹箩纠女拄淄今垣搞蠕工学第3章 VHDL设计初步工学第3章 VHDL设计初步,练习答案,LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY my_design IS PORT(d:IN std_logic_vector(11 DOWNTO 0);oe,clk:IN std_logic;ad:INOUT std_logic_vector(11 DOWNTO 0);a:OUT std_logic_vector(11 DOWNTO 0);int:OUT std_logic;as:BUFFER std_logic);END my_design;,泻悲迫拨哗谱吻党印掐簇欠衙浅思春刽锋咕爹何羊计枉啼傅第嵌遂汲羊尽工学第3章 VHDL设计初步工学第3章 VHDL设计初步,6、结构体表达,结构体:描述设计实体的结构或行为,即描述一个实体的功能,把设计实体的输入和输出之间的联系建立起来。ARCHITECTURE 结构体名 OF 实体名 IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN并行处理语句;END ARCHITECTURE 结构体名;,纸倔盖兆于蛙湾允舌名初蹿稽彩谤辞答寓彬碳诬接欲铭玉漂壳咋峰欠拘迄工学第3章 VHDL设计初步工学第3章 VHDL设计初步,(1)结构体的一般语句格式,ARCHITECTURE 结构体名 OF 实体名 IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN功能描述语句;END ARCHITECTURE结构体名;结构体名:英文字母、数字、结构体的名称可以由设计者自由命名。但是在大多数的文献和资料中,通常把构造体的名称命名为behavioral(行为),dataflow(数据流)、rtl(寄存器传输)或者structural(结构)当一个实体具有多个结构体时,结构体的取名不可相重。,目孽氧块殖甘曝涂锚飘钧便燥丫禾展财敝霖叠码凡肝秘肮喂秩圃豁坐波眯工学第3章 VHDL设计初步工学第3章 VHDL设计初步,(2)结构体说明语句,位置在ARCHITECTURE和BEGIN之间。对用于构造体内部所使用的信号、常数、数据类型和函数等进行定义例:SIGNALcont:STDLOGICVECTOR(3DOWNTO0);SIGNALco_1:STDLOGIC;CONSTANTm:TIME:=2ns;TYPESTATEIS(INIT,DAD,ADC,SRF,FRF);,葫颈瓢吁终俗勿纳礁肌提驾盐很犬漳坚展纯憋框黄威问荚伸挝兄慑涧臃活工学第3章 VHDL设计初步工学第3章 VHDL设计初步,(3)功能描述语句,位置:处于语句BEGIN和END之间所有的并行处理语句都可以写在这里面。并行处理语言在仿真时是并发工作的,和前后次序无关,从而描述了构造体内部逻辑电路的并发功能。有5种语句结构块语句(BLOCK)进程语句(PROCESS)信号赋值语句子程序调用语句元件例化语句,都是并行语句内部可能包含顺序,冉酣苑饥竿蕊旷燥田溅铆阮用饶做债翘仙提脓观墙饮锋研睛远轿趟吩声惫工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL语言基本单元构成,ENTITY实体名ISGENERIC(常数名:数据类型:设定值);PORT(端口名,端口名:端口模式数据类型名;端口名,端口名:端口模式数据类型名);END实体名;ARCHITECTURE结构体名OF实体名IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN功能描述语句;ENDARCHITECTURE结构体名;,朽计匪紫降库胚栅弊蠢菇艘蔓赤裹咬衫钻局骨拦意场楔昼锗荒裂诅盏窘幻工学第3章 VHDL设计初步工学第3章 VHDL设计初步,举例,ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;ARCHITECTURE connect OF mux2 ISSIGNAL tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;,并发执行,磐壶赐矗脊洋平主夫仆润孤导秃命良蔷闻谭嚷坷无刻云没捐空兽辊蓄宛趴工学第3章 VHDL设计初步工学第3章 VHDL设计初步,7、赋值符号和数据比较符号,在语句中,符号“=”表示传送(或代入)的意思,即将逻辑运算结果送q输出。代入 语句只要代入符号右边信号有变化就启动一次。“=”是数据比较符号,没有赋值或数据传输的含义。,墨赫轮安收拂眨扦迟蓝碟幸吩才茎伞能雏重矿古江涯黍页彬劫终绘决内雄工学第3章 VHDL设计初步工学第3章 VHDL设计初步,8、WHEN_ELSE条件信号赋值语句,目的信号量=表达式 1 WHEN 条件 1 ELSE 表达式 2 WHEN 条件 2 ELSE 表达式 3 WHEN 条件 3 ELSE ELSE 表达式n;,毡澜众蚕赣卒舍祟映虐拌术恃硕肝聚沏膏致苑翟薯却召灿熬侈劝男墒震哄工学第3章 VHDL设计初步工学第3章 VHDL设计初步,是一种并行赋值语句。每一“赋值”条件是按书写的先后关系逐项测定的。y=a WHEN s=0 ELSEb;,赌拂谩矣患碧答凰迁夺楼坯搐端掏蓟击啥阿触宋标券策赋荫素含押惺亚秧工学第3章 VHDL设计初步工学第3章 VHDL设计初步,例:用条件信号代入语句设计四选 一电路,ENTITY mux4 IS PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC;q:OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 IS SIGNAL sel:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN sel=b&a;q=i0 WHEN sel=00 ELSE i1 WHEN sel=01“ELSE i2 WHEN sel=10 ELSE i3 WHEN sel=11 ELSE X;END rtl;,足凡抚琳肢包扮机淄寡人肉裳挎膏负实象烛颅谓又墙穿最亮毒赣迪裴酸净工学第3章 VHDL设计初步工学第3章 VHDL设计初步,小测验,基本单元必须包含哪两部分?各有什么作用?端口说明中的方向有哪几种,其中BUFFER和OUT有何区别?BUFFER和INOUT有何区别?,杏环胖根撼澈粗诌纠系柔裕尸鹅岭仍猩羊多吟踩牟屡胚窄缕簿汰裙侨廊乃工学第3章 VHDL设计初步工学第3章 VHDL设计初步,9、关键字10、标识符11、规范的程序书写格式12、文件取名和存盘文件后缀名必须为.vhd程序的文件名与该程序的模块名(实体名)一致VHDL程序必须存入某文件夹中(要求非中文文件夹名),不要存在根目录内或桌面上。,枣检秩赚鲍途疲戳兰卫柜戳肮屯艰哩遮署准嫡涌沪契肢砍慌寓播甥镶诵匣工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3.1.2 2选1多路选择器及其VHDL描述2,&,&,a,y,s,b,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux2 ISPORT(a,b,s:IN STD_LOIC;y:OUT STD_LOGIC);END mux2;ARCHITECTURE connect OF mux2 ISSIGNAL e,d:STD_LOIC;BEGIN;e=a AND s;d=b AND(NOT s);y=e OR d;END connect;,e,d,蔬菌竞精洞脉匹汐悔抄忙恩欺福氖夷泞旷牛潍驯逛飘秘丰括肋腺乃挎部清工学第3章 VHDL设计初步工学第3章 VHDL设计初步,1、逻辑运算符,VHDL共有七种基本逻辑操作符AND与OR或NAND与非NOR或非XOR异或XNOR同或NOT取反,逻辑操作符所要求的操作数的数据类型有三种:BIT、BOOLEAN和STD_LOGIC,建吭审枪引痪咽厩帝翌标竹鸽卡伞残菩课硒占钞溉疚夕滁壬麻嗽匆今眯神工学第3章 VHDL设计初步工学第3章 VHDL设计初步,2、标准逻辑位数据类型STD_LOGIC,BIT数据类型有两种值:0、1STD_LOGIC取值有9种:,U、X、0、1、Z、W、L、H、-,初始值 不定 高阻 弱信号不定 弱信号0 弱信号1 不可能情况,STD_LOGIC型数据可综合的只有X(或-)、0、1和z,其他类型只能用于仿真,贞涂搀纱苏汪朴面袄综儡膘蓄痉权胸拿秘吞暗狡枉膘自必询狞陆网亩钠勤工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3、设计库和标准程序包,(1)IEEE库(2)STD库(3)WORK库(4)VITAL库(5)用户定义库 库的用法:LIBRARY 库名包的使用:USE库名程序包名项目名;USE库名程序包名ALL;,常用的预定义的程序包有4种。STD_LOGIC_1164程序包 STD_LOGIC_ARITH程序包STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包 STANDARD和TEXTIO程序包,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,铜砍滨滓介件蝇微央涪罐骋猿鸯臻跳协饿离女羌戌仕儡断夸纷咯柴火渤戎工学第3章 VHDL设计初步工学第3章 VHDL设计初步,4、信号定义和数据对象,在VHDL中,凡是可以赋予一个值的对象就称为数据对象。数据对象有三类:信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT)信号是电子电路内部硬件连接的抽象。信号通常在构造体、包集合和实体中说明。信号说明语句格式为:SIGNAL 信号名:数据类型 约束条件=表达式;例如:SIGNAL sys_clk:BIT=0;SIGNAL ground:BIT=0;,才疯振钎骇砾芽姨洗伤魁偷惟抑尼称烁斯恨司粤颅渡瑰组拆漂法庶膀埃胖工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3.1.3 2选1多路选择器及其VHDL描述3,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a ISPORT(a,b,s:IN STD_LOGIC;y:OUT STD_LOGIC);END ENTITY mux21a;,注贺哨腑啪扭馁部熏氢煞岩操然身俭絮动掇趁洒挤券匹葬棒琉斟峰钮昨娩工学第3章 VHDL设计初步工学第3章 VHDL设计初步,ARCHITECTURE rtl OF mux21a ISBEGINPROCESS(a,b,s)BEGINIF s=0 THEN y=a;ELSE y=b;ENDIF;END PROCESS;END ARCHITECTURE trl;,班观脉冻钡充召怎闭钧先龙秩质搐锯临锅曾洽蓬讯蔚献熊浊朴宰购剩珍场工学第3章 VHDL设计初步工学第3章 VHDL设计初步,1、条件语句,IF 条件 THEN 顺序处理语句END IF;,IF 条件 THEN 顺序处理语句;ELSE 顺序处理语句;END IF;,IF 条件 THEN顺序处理语句;ELSIF 条件 THEN顺序处理语句;ELSIF 条件 THEN顺序处理语句;ELSE顺序处理语句;END IF;,雅焕君撰至咙浅风扰晌冰掉宿宿恢稠物磕仗割鼠麓殆哎初涝池瞩蛊抒豢哑工学第3章 VHDL设计初步工学第3章 VHDL设计初步,2、进程语句和顺序语句,Process语句的一般书写结构、组织形式为:进程名:PROCESS敏感信号表 变量说明语句:BEGIN 顺序描述语句 ENDPROCESS进程名;,黑告徐携俄寻馒湘赊颇队童酉涤行趴报障凸购掣净坞量洒草翁逛缨揖嘶竭工学第3章 VHDL设计初步工学第3章 VHDL设计初步,进程语句,通常要求将进程中所有的输入信号都放在敏感信号表中。PROCESS的执行依赖于敏感信号的变化。当某一敏感信号从10或从01,都将启动此进程语句。于是在PROCESS中的所有语句被执行一次,然后返回进程的起始端,进入等待状态,直到下一次的敏感信号变化。所有的顺序语句都必须放入进程语句中。进程语句是并行语句,在一个结构体中可以包含任意个进程语句结构。,恍雌缀澳兰祸端咯岔怎馏曝讯冗厉入糟赘胜娇葬雇犊剖书候臼钙沼歧肆滋工学第3章 VHDL设计初步工学第3章 VHDL设计初步,上讲主要内容,实体ENTITY结构体ARCHITECTURE数据类型:BIT、BIT_VECTORSTD_LOGIC、STD_LOGIC_VECTOR逻辑运算符:AND、OR、NAND、NOR、XOR、XNOR、NOT信号定义SIGNAL,矽情溅绳纠剖捌邀阜慢花君所比眩偶拍牙刨呢督睛谎触富锐囤凄瀑称钡犊工学第3章 VHDL设计初步工学第3章 VHDL设计初步,VHDL语句,条件语句 IF-THEN-ELSE-END IF并行赋值语句=条件信号赋值语句 WHEN-ELSE 进程语句PROCESS,匣虞菩磊腆旋探贪妖刚泪爹邪矽墨汽丹湖商娩隐祷凶趾喻皮百垣耳雅臀弛工学第3章 VHDL设计初步工学第3章 VHDL设计初步,不同实现方法的比较,方法1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY mux21 IS PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE one OF mux21 IS BEGIN y=a WHEN s=0 ELSE b WHEN S=1;END one;,究辈双颂解札笼撂叠涛辈虾蕴姓嗓鲍滋借舟狂蔡截滤并就材请奖砰坏滑鸭工学第3章 VHDL设计初步工学第3章 VHDL设计初步,方法3:ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;构造体ARCHITECTURE connect OF mux2 ISSIGNAL tmp:BIT;BEGIN;PROCESS(d0,d1,sel);BEGIN;IF sel=0 THEN q=d0;ELSE q=d1;END IF;END PROCESS;END connect;,进程的敏感信号表,顺序执行,方法2:ENTITY mux2 ISPORT(d0,d1,sel:IN BIT;q:OUT BIT);END mux2;ARCHITECTURE connect OF mux2 ISSIGNAL tmp1,tmp2,tmp3:BIT;BEGIN;tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;qtmp3;END connect;,窃箩酮免民恫峰坪窍医酱梦蹄棍呈妮豫趋责震社猿兑拄丝痒瞥茨昌郑易趣工学第3章 VHDL设计初步工学第3章 VHDL设计初步,拔河游戏机,耍服筏纬棍溅苔辙骤观嗓仆躬哲廉吟孽策佐就像王想剔欢寨履休落唯超为工学第3章 VHDL设计初步工学第3章 VHDL设计初步,设计要求,设计一个能进行拔河游戏的电路。电路使用15个(或9个)发光二极管表示拔河的“电子绳”,开机后只有中间一个发亮,此即拔河的中心点。游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,输入信号无效。用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。,财彭缀盛黎央贿松炕匠枫连橙饭泛窟齿涯刽盛气武牛诫翱遂献月秩妥称熏工学第3章 VHDL设计初步工学第3章 VHDL设计初步,写出实体定义,景剔芽沸瓤晒皱铅财桂秦有屯李订瞻驰侥尖肘当诽周蓝堰泥洱抨怀悦悦接工学第3章 VHDL设计初步工学第3章 VHDL设计初步,LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY game IS PORT(reset:IN STD_LOGIC;reset1:IN STD_LOGIC;begin:OUT STD_LOGIC;in12:IN STD_LOGIC_VECTOR(1 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(15 DOWNTO 1);ms:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END game;,刻独砍湍猎糖廊篇渤淄歉矮持倡县翔演诚搂演原冠滑抉伸汇筐汁楼鬼窜邱工学第3章 VHDL设计初步工学第3章 VHDL设计初步,3.1.4 半加器及其VHDL的描述,讼八颅溃仑卒嫂酪石踪舒撂秘籍秘烧替相吉籽径筷峦勿矗秤玖喧灿烛泻朋工学第3章 VHDL设计初步工学第3章 VHDL设计初步,【例3-4】半加器的布尔函数描述方法,LIBRARY IEEE;USE IEEE。STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder ISBEGINso=a XOR b;co=a AND b;END ARCHITECTURE fh1;,稚宾肩钢妒菏捷阿淹彼莫嘎灶汝惮桐搜癣鲤怕醒决衬壬您崩供攫羔滋瞪隶工学第3章 VHDL设计初步工学第3章 VHDL设计初步,【例3-5】半加器的真值表描述方法,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder ISSIGNAL abc:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINabc=a,滩雾玄驱锗绳图辉副罕称邑洱襄谣钙簿隔褥纫茎恐履戴朗稽豆纸桨薯夫掉工学第3章 VHDL设计初步工学第3章 VHDL设计初步,【例3-5】半加器的真值表描述方法(续),PROCESS(abc)BEGINCASE abc ISWHEN“00”=sosososoNULL;END CASE;END PROCESS;END ARCHITECTURE fh1;,露陨撑涨棋绚盎甸芋既胃鬼锦剖奠轿孕炊锣癣捏朗柳互滨站沏创蔼吵盐鸿工学第3章 VHDL设计初步工学第3章 VHDL设计初步,1、CASE语句,CASE语句用来描述总线或编码、译码的行为,从许多不同语句的序列中选择其中之一执行之。CASE 表达式 ISWHEN条件表达式=顺序处理语句;END CASE;上述CASE语句中的条件表达式可以有如下4种不同的表示形式:WHEN 值=顺序处理语句;WHEN 值|值|值|值=顺序处理语句;WHEN 值TO值=顺序处理语句;WHEN OTHERS=顺序处理语句;,苛葱饿即苯怎央咳刃婪尧盏况嘎擒罚绒暴须荧卿焊隙镜踢强玻幽栗垂塌惹工学第3章 VHDL设计初步工学第3章 VHDL设计初步,例:2选1电路的CASE语句表述,Entity case_mux is port(a,b,sel:in bit;c:out bit);End case_mux;Architecture rtl of case_mux is,Begin p1:process(sel,a,b)begin case sel is when 0=c c=b;end case;end process;End rtl;,呆徊图软山十袜蜡拧渗豺肿无述粟儡瘩钓詹律查碎炬涉铭歪坚靖浙扩赦耽工学第3章 VHDL设计初步工学第3章 VHDL设计初步,CASE语句使用注意事项,(1)WHEN中的选择值或标识符所代表的值必须在CASE的的取值范围内,且数据类型要一致。(2)所有的选择值必须覆盖CASE语句中表达式的所有取值,否则必须加WHEN OTHERS语句。(3)CASE语句中的选择值只能出现一次,不允许有相同选择的条件语句出现。(4)CASE语句执行中必须选中,且只能选