EDA第4章VHDL设计初步.ppt

上传人:wuy****n92 文档编号:70102209 上传时间:2023-01-16 格式:PPT 页数:37 大小:399KB
返回 下载 相关 举报
EDA第4章VHDL设计初步.ppt_第1页
第1页 / 共37页
EDA第4章VHDL设计初步.ppt_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《EDA第4章VHDL设计初步.ppt》由会员分享,可在线阅读,更多相关《EDA第4章VHDL设计初步.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4章章VHDL设计初步设计初步 什么是什么是VHDL?Very high speed integrated Hardware Description Language(VHDL)y是是IEEE、工业标准工业标准硬件描述语言硬件描述语言硬件描述语言硬件描述语言y用用语言的方式语言的方式语言的方式语言的方式而而非图形非图形非图形非图形等方式描述等方式描述硬件电路硬件电路硬件电路硬件电路x容易修改容易修改x容易保存容易保存【例【例4-1】ENTITY ENTITY mux21a IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT );END ENTITYEND ENTIT

2、Y mux21a;ARCHITECTUREARCHITECTURE one OF mux21a IS BEGIN y=a WHEN s=0 ELSE b ;END ARCHITECTUREEND ARCHITECTURE one;one;实体实体结构体结构体4.1 多路选择器多路选择器VHDL描述描述4.1.1 2选选1多路选择器的多路选择器的VHDL描述描述【例例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:

3、BIT;BEGINd=a AND(NOT S);d=a AND(NOT S);e=b AND s;e=b AND s;y=d OR e ;y=d OR e ;END ARCHITECTURE one;【例】【例】.ARCHITECTURE one OF mux21a IS BEGIN y=(a AND(NOT y=(a AND(NOT s)OR(b AND s);s)OR(b AND s);END one;【例【例4-3】ENTITY mux21a IS PORT(a,b,s:IN BIT;y:OUT BIT);END ENTITY mux21a;ARCHITECTURE one OF mux

4、21a IS BEGIN PROCESSPROCESS (a,b,s)BEGINBEGIN IF s=0 THEN IF s=0 THEN y=a;y=a;ELSE y=b;ELSE y=b;END IF;END IF;END PROCESS;END ARCHITECTURE one;图图4-3 mux21a功能时序波形功能时序波形4.1.2 VHDL相关语句说明相关语句说明1.1.实体表达实体表达【例【例4-4】ENTITY e_name ISPORT(p_name:port_m data_type;.端口信号名端口信号名端口信号名端口信号名:端口模式端口模式端口模式端口模式 数据类型数据类

5、型数据类型数据类型);END ENTITY e_name;2.2.实体名实体名不能用不能用数字开头数字开头定义实体名;定义实体名;不能用不能用中文中文定义实体名定义实体名3.PORT语句语句(包括(包括端口信号名:端口信号名:端口模式端口模式端口模式端口模式,数据类型,数据类型)4.4.端口模式端口模式INOUTINOUTBUFFER5.5.数据类型数据类型BIT主要包括:主要包括:Integer(整数)整数);Boolean(布尔布尔);STD_LOGIC(标准标准逻辑位逻辑位逻辑位逻辑位数据类型);数据类型);BIT(位位位位数据类型数据类型)BIT数据类型的信号数据类型的信号规定的规定的

6、取值范围取值范围取值范围取值范围是是逻辑位逻辑位0、1。在。在VHDL中,逻辑位中,逻辑位0、1 必须加必须加单引号单引号单引号单引号,否则被认定为,否则被认定为整数数据类型整数数据类型整数数据类型整数数据类型。6.6.结构体表达结构体表达ARCHITECTUREARCHITECTURE arch_namearch_name OF e_name IS OF e_name IS (说明语句说明语句说明语句说明语句)BEGINBEGIN (功能描述语句功能描述语句功能描述语句功能描述语句)END END arch_namearch_name ;7.7.7.7.信号传输信号传输信号传输信号传输(赋值

7、赋值赋值赋值)符号符号符号符号赋值操作赋值操作赋值操作赋值操作y=ay=a并非立即发生的,而要经过一个并非立即发生的,而要经过一个并非立即发生的,而要经过一个并非立即发生的,而要经过一个模拟器模拟器模拟器模拟器的的的的最小分辨时间后,才将最小分辨时间后,才将最小分辨时间后,才将最小分辨时间后,才将a a的值赋给的值赋给的值赋给的值赋给y y。赋值符赋值符赋值符赋值符=两边的信号的两边的信号的两边的信号的两边的信号的数据类型数据类型数据类型数据类型必须一致。必须一致。必须一致。必须一致。8.8.8.8.逻辑操作符逻辑操作符逻辑操作符逻辑操作符ANDAND(与);与);与);与);OROR(或);

8、或);或);或);NOTNOT(非);非);非);非);NANDNAND(与非与非与非与非););););NORNOR(或非);或非);或非);或非);XORXOR(异或);异或);异或);异或);XNORXNOR(同或)同或)同或)同或)9.9.IF_THENIF_THEN条件语句条件语句条件语句条件语句IF s=0 THENIF s=0 THEN y=a;y=a;ELSE y=b;ELSE y=b;END IF;END IF;10.WHEN_ELSE条件信号赋值语句条件信号赋值语句条件信号赋值语句条件信号赋值语句赋值目标赋值目标 =表达式表达式 WHEN 赋值条件赋值条件 ELSE 表达式

9、表达式 WHEN 赋值条件赋值条件 ELSE .表达式表达式;11.11.PROCESSPROCESS进程语句和顺序语句进程语句和顺序语句进程语句和顺序语句进程语句和顺序语句PROCESS PROCESS(a a,b b,s s)只要只要只要只要敏感信号敏感信号敏感信号敏感信号a a、b b、s s某一个发生变化,将某一个发生变化,将某一个发生变化,将某一个发生变化,将启动启动启动启动此进程;此进程;此进程;此进程;执行一遍后,便进入执行一遍后,便进入执行一遍后,便进入执行一遍后,便进入等待等待等待等待状态。状态。状态。状态。4.2 寄存器描述及其寄存器描述及其VHDL语言现象语言现象4.2.

10、1 D触发器的触发器的VHDL描述描述【例【例4-6】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 DFF1;ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC;-定义一个数据的定义一个数据的暂存节点暂存节点暂存节点暂存节点 BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 IF CLKEVENT AND CLK=1 THEN Q

11、1=D;THEN Q1=D;END IF;END IF;Q=Q1;-将内部的将内部的暂存数据暂存数据暂存数据暂存数据向端口输出向端口输出 END PROCESS;END bhv;D触发器触发器4.2.2 D触发器触发器VHDL描述的语言现象说明描述的语言现象说明1.标准标准逻辑位逻辑位逻辑位逻辑位数据类型数据类型STD_LOGICBIT数据类型数据类型数据类型数据类型定义:定义:TYPE BIT IS(0,1);STD_LOGIC数据类型数据类型数据类型数据类型定义:定义:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);STD_LOGIC所定义的所定义的9种数据的含

12、义是种数据的含义是:U表示未初始化的;表示未初始化的;X表示强未知的表示强未知的;0表示强表示强逻辑逻辑0;1表示强逻辑表示强逻辑1;Z表示高阻态表示高阻态;W 表示弱未知的;表示弱未知的;L表示弱逻辑表示弱逻辑0;H表示弱逻辑表示弱逻辑1;-表示忽略。表示忽略。可综合的,常用可综合的,常用不可综合的,不常用不可综合的,不常用2.2.设计库和标准程序包设计库和标准程序包3.3.SIGNAL信号信号定义和数据对象定义和数据对象SIGNAL Q1SIGNAL Q1 :STD_LOGICSTD_LOGIC;前前前前者者者者:规规定定的的数数数数据据据据对对对对象象象象是是是是信信号号,表表示示Q1的

13、的行行行行为为为为方方方方式式式式和功能特点和功能特点和功能特点和功能特点;后后后后者者者者:表表示示数数数数据据据据类类类类型型型型是是STD_LOGICSTD_LOGIC,限限定定了了Q1的的取值范围取值范围取值范围取值范围。使用库和程序包的一般定义表式是:使用库和程序包的一般定义表式是:LIBRARY ;-表示表示打开打开打开打开设计库设计库USE .ALL ;-允允许许使使用用设设设设计计计计库库库库中中程序包程序包程序包程序包中的所有内容中的所有内容4.上升沿检测上升沿检测上升沿检测上升沿检测表式和表式和信号属性函数信号属性函数信号属性函数信号属性函数EVENT 关关键键词词EVEN

14、T是是信信信信号号号号属属属属性性性性,VHDL通通过过以以下下表表式式来来测测定定某信号的某信号的跳变边沿跳变边沿跳变边沿跳变边沿:EVENTEVENT5.5.不完整不完整条件语句条件语句条件语句条件语句与与时序电路时序电路时序电路时序电路【例【例4-7】ENTITY COMP_BAD IS PORT(a1 :IN BIT;b1 :IN BIT;q1 :OUT BIT);END COMP_BAD;ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS(a1,b1)BEGIN IF a1 b1 THEN q1=1;ELSIF a1 b1 THEN q1=0E

15、LSIF a1 b1 THEN q1 b1 THEN q1 b1 THEN q1=1;ELSE q1=0;ELSE q1=0;END IF;END PROCESS;END one;修改后的修改后的条件语句条件语句条件语句条件语句与与时序电路时序电路时序电路时序电路4.2.3 实现时序电路的实现时序电路的VHDL不同表达方式不同表达方式【例【例4-9】.PROCESS(CLK)BEGINIF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)IF CLKEVENT AND(CLK=1)AND(CLKLAST_VALUE=0)THEN Q=D;-确保确保CLKCLK的变

16、化的变化的变化的变化是一次是一次上升沿上升沿上升沿上升沿的跳变的跳变 END IF;END PROCESS;【例【例4-10】.PROCESS(CLK)BEGINIF CLK=1 AND CLKLAST_VALUE=0IF CLK=1 AND CLKLAST_VALUE=0 THEN Q=D;END IF;END PROCESS;【例4-12】.PROCESS BEGIN wait until CLK=1wait until CLK=1 ;-利用利用waitwait语句语句语句语句 Q=D;END PROCESS;【例4-13】PROCESS(CLK)BEGIN IF CLK=1 THEN Q

17、=D;END IF;END PROCESS;【例4-14】PROCESS(CLK,D)BEGIN IF CLK=1IF CLK=1 THEN Q=D;END IF;END PROCESS;-利用利用进程的启进程的启进程的启进程的启动特性动特性动特性动特性产生对产生对CLK的的边沿检测边沿检测边沿检测边沿检测-电平触发电平触发电平触发电平触发型型型型寄存器寄存器4.3 1位二进制全加器的位二进制全加器的VHDL设计设计图图4-11半加器半加器h_adder电路图电路图图图4-10 全加器全加器f_adder电路图电路图254.3.1 半加器描述和半加器描述和CASE语句语句absoco00000

18、11010101101半加器半加器h_adder逻辑功能真值表逻辑功能真值表逻辑功能真值表逻辑功能真值表1.CASE语句语句CASECASE语句语句语句语句的一般表式是:的一般表式是:CASE ISWhen =;When =;.END CASE;2.标准逻辑矢量标准逻辑矢量标准逻辑矢量标准逻辑矢量数据类型数据类型STD_LOGIC_VECTOR3.3.并置操作符并置操作符并置操作符并置操作符 SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d:STD_LOGIC_VECTOR(1 DOWNTO 0);.a=1 0 d(1)1 ;-元素与元素并置元素与元

19、素并置元素与元素并置元素与元素并置,并置后的,并置后的数组长度数组长度数组长度数组长度为为4.IF a d =101011 THEN.-在在IFIF条件句条件句条件句条件句中可以使用中可以使用并置符并置符并置符并置符 在在使使用用STD_LOGIC_VECTOR中中,必必须须注注明明其其数数数数组组组组宽宽宽宽度度度度,即即即即位宽位宽位宽位宽,如:,如:B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);或或 SIGNAL A:STD_LOGIC_VECTOR(1 TO 4)4.3.1 半加器描述和半加器描述和CASE语句语句【例4-18】LIBRARY IEEE;-或门逻

20、辑描述或门逻辑描述或门逻辑描述或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2aor2a 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=a OR b;END ARCHITECTURE one;【例4-16】LIBRARY IEEE;-半加器描述半加器描述半加器描述半加器描述(1)USE IEEE.STD_LOGIC_1164.ALL;ENTITY adderadder IS PORT(a,b:I

21、N STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY adder;ARCHITECTURE fh1 OF adder is BEGIN so=NOT(a XOR(NOT b)so=NOT(a XOR(NOT b);co=a AND b co=a AND b;END ARCHITECTURE fh1;【例4-17】LIBRARY IEEE;-半加器描述半加器描述半加器描述半加器描述(2)USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adderh_adder IS PORT (a,b :IN STD_LOGIC;co,so :OUT S

22、TD_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=0;co so=1 ;co so=1 ;co so=1 ;co so=1 ;co so=0 ;co so=0 ;co NULL ;WHEN OTHERS =NULL ;END CASE ;END PROCESS ;END ARCHITECTURE fh1 ;【例】.-半加器描述半加器描述半加器描述半加器描述(3)SIGNAL abc,cso:STD_L

23、OGIC_VECTOR(1 DOWNTO 0);BEGIN abc=a&b ;co=cso(1);so cso cso cso cso ain,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;26194.3.3 全加器描述和例化语句全加器描述和例化语句 元件例化语句元件例化语句元件例化语句元件例化语句由由两部分两部分组成组成:(1)第第一一部部分分是是对对一一个个现现现现成成成成的的的的设设设设计计计计实实实实体体体

24、体定定义义为为一一个个元元元元件件件件,功能是对功能是对待调用的元件待调用的元件待调用的元件待调用的元件作出调用声明。作出调用声明。COMPONENT 元件名元件名 PORT (端口名表端口名表);END COMPONENT 元件名元件名 ;(2)元元件件例例化化语语句句的的第第二二部部分分则则是是此此此此元元元元件件件件与与与与当当当当前前前前设设设设计计计计实实实实体体体体(顶层文件顶层文件)中中元件间元件间及及端口端口的的连接说明连接说明连接说明连接说明。例例化化名名:元元件件名名 PORT MAP(端端口口名名=连连接接端端口口名名,.);25【例例4-20】ENTITY CNT4 I

25、S PORT(CLK:IN BIT;Q:BUFFER 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;END IF;END PROCESS;END bhv;4.4 计数器设计计数器设计4.1.1 4位二进制加法计数器设计位二进制加法计数器设计取取整数数据类型整数数据类型整数数据类型整数数据类型整数整数取值取值取值取值范围范围范围范围端口信号模式端口信号模式端口信号模式端口信号模式取取BUFFER,为什么

26、?为什么?注意注意整数整数整数整数和和位位位位的不同表达方式!的不同表达方式!整数类型整数类型整数整数整数整数常量常量常量常量的书写方式示例如下:的书写方式示例如下:1 十进制整数十进制整数0 十进制整数十进制整数35 十进制整数十进制整数10E3 十进制整数十进制整数16#D9#十六进制整数十六进制整数8#720#八进制整数八进制整数 2#11010010#二进制整数二进制整数【例例4-21】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 IS PORT(CLK:IN S

27、TD_LOGIC;Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT4;ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN Q1=Q1+1;END IF;END PROCESS;Q=,0);-计数器复位计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿检测时钟上升沿 IF EN=1 THEN -检测是否允许计数检测是否允许计数 IF CQI

28、0);-大于大于9,计数值清零,计数值清零 END IF;END IF;END IF;IF CQI=1001 THEN COUT=1;-计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT=0;END IF;CQ X)为为了了简简化化表表达达才才使使用用短短语语“(OTHERS=XOTHERS=X)”,这这是是一一个个省省省省略略略略赋赋赋赋值值值值操操操操作作作作符符符符,它它可可以以在在较较多多位位的的位位矢矢量量赋赋值值中中作作省省省省略略略略化化化化的的赋赋值值,如以下语句:如以下语句:SIGNALSIGNAL d1 :STD_LOGIC_VECTOR(4 DOWNTO

29、0);VARIABLEVARIABLE a1:STD_LOGIC_VECTOR(15 DOWNTO 0);.d1=0);a1:=:=(OTHERS=0);等同于等同于d1=“00000”;a1:=:=“0000000000000000”这这种种表表述述与与位位位位矢矢矢矢量量量量长长长长度度度度无无关关,优优点点在在于于给给大大的的位位矢矢量量赋赋值值时时简简化了描述。化了描述。4.5.2 程序分析程序分析 图图4-14 例例4-22的的RTL电路电路(Synplify综合)综合)图图4-15 例例4-22的工作时序的工作时序 4.5.3 含并行置位的移位寄存器设计含并行置位的移位寄存器设计L

30、IBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITYENTITY SHFRT IS -8 8位右移寄存器位右移寄存器位右移寄存器位右移寄存器 PORT(CLK,LOAD:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB:OUT STD_LOGIC );END SHFRT;ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS(CLK,LOAD)VARIABLE REG8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN IF CLKEVENT AN

31、D CLK=1 THENIF CLKEVENT AND CLK=1 THEN IF LOAD=1 THENIF LOAD=1 THEN -装载新数据装载新数据装载新数据装载新数据 REG8:=DINREG8:=DIN;ELSE REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1)REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1);右移右移右移右移 END IF;END IF;QB=REG8(0);-输出最低位输出最低位 END PROCESS;END behav;工作时序图工作时序图 (1)在)在第第一个时钟一个时钟到来时,到来时,LOAD恰为高电平恰为高电平

32、,此时此时DIN口上口上的的8位数据位数据9A,即即10011010,被锁入,被锁入REG8中。中。(2)第二个时钟第二个时钟,以及以后的,以及以后的时钟信号时钟信号都是都是移位时钟。移位时钟。在在在在第第一个执行一个执行并行数据加载并行数据加载的时钟后,的时钟后,的时钟后,的时钟后,QBQB输出了输出了输出了输出了被加载被加载的第一位的第一位的第一位的第一位右右移数移数0,而此时的,而此时的,而此时的,而此时的REG8内仍然是内仍然是内仍然是内仍然是9A。(3)第二个时钟后,)第二个时钟后,QB输出了输出了右移出右移出的第的第2个位个位1,此,此时的时的REG8内变为内变为CD,其其最高位最高位被填为被填为1。如此下去,直到。如此下去,直到第第8个个CLK后,后,右移右移出了所有出了所有8位二进制数位二进制数,此时,此时REG8内是内是FF。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁