第4章VHDL设计初步

上传人:gu****n 文档编号:243125999 上传时间:2024-09-16 格式:PPT 页数:56 大小:1.13MB
返回 下载 相关 举报
第4章VHDL设计初步_第1页
第1页 / 共56页
第4章VHDL设计初步_第2页
第2页 / 共56页
第4章VHDL设计初步_第3页
第3页 / 共56页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,K,X,康芯科技,EDA,技术,实用教程,第,4,章,VHDL,设计初步,原理图输入与,VHDL,文本输入设计的区别,Graphic,is,what you draw is what you get,“ tell me what hardware you want and I will give it to you”,VHDL,is what you write is what functional you get,“ tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job”,but,the designer can not control how the circuit implement,是什么是,VHDL?,V,ery high speed integrated,H,ardware,D,escription,L,anguage (,VHDL,),是,IEEE、,工业标准硬件描述语言,用语言的方式而非图形等方式描述硬件电路,容易修改,容易保存,特别适合于设计的电路有:,复杂组合逻辑电路,如:,译码器、编码器、加减法器、多路选择器、地址译码器.,状态机,等等.,VHDL,的功能和标准,VHDL,描述,输入端口,输出端口,电路的行为和功能,VHDL,有过两个标准:,IEEE Std 1076-1987 (called VHDL 1987),IEEE Std 1076-1993 (called VHDL 1993),实体描述,结构描述 :,【例,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,结构体,4.1.1 2,选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 : BIT;,BEGIN,d = 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;,d,e,4.1.1 2,选1多路选择器的,VHDL,描述,【例,4-4】,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 ;,d,e,4.1.1 2,选1多路选择器的,VHDL,描述,图,4-3 mux21a,功能时序波形,1. 实体表达,【例,4,-5】,ENTITY e_name IS,PORT ( p_name : port_m data_type;,.,p_namei : port_mi data_type );,END ENTITY e_name;,或:,【例,4,-6】,ENTITY e_name IS,PORT ( p_name : port_m data_type;,.,p_namei : port_mi data_type );,END e_name;,4.1.2 VHDL,相关语句说明,4,.1.2,VHDL,相关语句说明,2.,实体名,:,实体名,文件名一致;不支持汉字,数字起头,3.,PORT,语句和端口信号名,4. 端口模式,IN,OUT,INOUT,BUFFER,5. 数据类型:,bit,、,integer,、,boolean,、,std_logic,ENTITY e_name IS,PORT ( p_name : port_m data_type;,4,.1.2,VHDL,相关语句说明,6. 结构体表达,【例,4,-7】,ARCHITECTURE arch_name OF e_name IS,(,说明语句),BEGIN,(,功能描述语句),END ARCHITECTURE arch_name ;,或:,【例,4,-8】,ARCHITECTURE arch_name OF e_name IS,(,说明语句),BEGIN,(,功能描述语句),END arch_name ;,4,.1.2,VHDL,相关语句说明,信号传输符:,y,“,=,”,a,,,表示信号,a,向信号,y,赋值,(,传输,),注意,1.,并非立即发生,有延时,2.,“,=”,符号两边的信号的数据类型必须一致,7. 信号传输(赋值)符号和数据比较符号,比较符号:“,=,”,S=0,中的“,=,”是比较的意思,不是相等,4.1.2 VHDL,相关语句说明,8. 逻辑操作符,AND、OR、NOT,,,NAND,NOR,XOR,XNOR,共,7,种,9.,IF_THEN,条件语句,顺序语句,10.,WHEN_ELSE,条件信号赋值语句,并行语句,赋值目标 = 表达式,WHEN,赋值条件,ELSE,表达式,WHEN,赋值条件,ELSE,.,表达式 ;,例:,z= a when p1=1 else,b when p2=1 else,c;,若,P1,、,P2=,1,z,赋值是,a,而不是,b,第一个,表达式,WHEN,赋值条件,有,最高优先级,其次依次类推,4.1.2 VHDL,相关语句说明,11.,PROCESS,进程语句和顺序语句,12. 文件取名和存盘,Process(a,b,c),begin,if . then.;,end if ;,End process ;,敏感信号表,文件取名:,字母、数字都行,注意数字不能开头,存盘取名:,一般是实体名,后缀:,*.vhd,4.1.3 VHDL,设计的基本概念和语句小节,数据类型,信号赋值符,条件比较符,延时,实体,结构体,端口定义,端口模式,逻辑操作符,IF,条件语句,并行条件语句,进程语句,顺序语句,并行语句,文件取名,文件存盘,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,触发器,4.2.2 D,触发器,VHDL,描述的语言现象说明,1. 标准逻辑位数据类型,STD_LOGIC,BIT,数据类型定义:,TYPE BIT IS(0,1);,STD_LOGIC,数据类型定义:,TYPE STD_LOGIC IS (1,0,Z,H,L,X,W,U,-);,STD_LOGIC,所定义的9种数据的含义是,:,1,表示强逻辑1;,0,表示强逻辑0;,Z,表示高阻态;,U,表示未初始化的;,X,表示强未知的;,W,表示弱未知的;,L,表示弱逻辑0;,H,表示弱逻辑1;,-,表示忽略。,4.2.2 D,触发器,VHDL,描述的语言现象说明,2. 设计库和标准程序包,3.,SIGNAL,信号定义和数据对象,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 ;,使用库和程序包的一般定义表式是:,LIBRARY ;,USE .,ALL ;,Signals vs. Variables,SIGNALS,VARIABLES,信号,SIGNAL,无暂存性 变量,VARIABLE,有暂存性,基本用法 用于作为电路中的信号连线,用于作为进程中局部数据存储单元,适用范围 在整个结构体内的任何地方都能适用,只能在所定义的进程中使用,行为特性 在进程的最后才对信号赋值,立即赋值,4.2.2 D,触发器,VHDL,描述的语言现象说明,4. 上升沿检测表式和信号属性函数,EVENT,关键词,EVENT,是信号属性,,VHDL,通过以下表式来测定某信号的跳变边沿:,EVENT,5. 不完整条件语句与时序电路,【例,4-11】,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-12,的电路图,4.2.3,实现时序电路的,VHDL,不同表达方式,【例,4-11】,.,PROCESS (CLK),BEGIN,IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0),THEN Q = D ; -,确保,CLK,的变化是一次上升沿的跳变,END IF;,END PROCESS ;,【例,4-12】,.,PROCESS (CLK),BEGIN,IF CLK=1 AND CLKLAST_VALUE=0 -,同例,4-13,THEN Q = D ;,END IF;,END PROCESS ;,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),THEN Q1 = D ;,END IF;,Q = Q1 ;,END PROCESS ;,END ;,- CLK,的数据类型必须是,STD_LOGIC,4.2.3,实现时序电路的,VHDL,不同表达方式,【,例,4-14,】,.,PROCESS,BEGIN,wait until 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 ;,4.2.3,实现时序电路的,VHDL,不同表达方式,图,4-7,边沿型触发器时序波形,图,4-8,电平触发型寄存器的时序波形,4.2.4,异步时序电路设计,【,例,4-15】,.,ARCHITECTURE bhv OF MULTI_DFF IS,SIGNAL Q1,Q2 : STD_LOGIC;,BEGIN,PRO1: PROCESS (CLK),BEGIN,IF CLKEVENT AND CLK=1,THEN Q1 = NOT (Q2 OR A);,END IF;,END PROCESS ;,PRO2:PROCESS (Q1),BEGIN,IF Q1EVENT AND Q1=1,THEN Q2 = D;,END IF;,QQ = Q2 ;,END PROCESS ;,图,4-9,例,4-19,综合的电路,Q1,Q2,4.3 1,位二进制全加器的,VHDL,设计,图,4-10,半加器,h_adder,电路图,图,4-11,全加器,f_adder,电路图,4.3.1,半加器描述和,CASE,语句,【例,4-18】,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 fu1;,【例,4-19】,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;,【例,4-20】,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 ;,【例,4-21】,. -半加器描述(3),SIGNAL abc,cso : STD_LOGIC_VECTOR(1 DOWNTO 0 );,BEGIN,abc 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;,4.3.1,半加器描述和,CASE,语句,absoco,0000,0110,1010,1101,表,4-1,半加器,h_adder,逻辑功能真值表,1.,CASE,语句,CASE,语句的一般表式是:,CASE ,IS,When = ; . ; ;,When = ; . ; ;,.,WHEN OTHERS = NULL ;,END CASE ;,选择值只能出现一次,一般加上这一句,2. 标准逻辑矢量数据类型,STD_LOGIC_VECTOR,3. 并置操作符,以下是一些并置操作示例:,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;,SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;,.,a 连接端口名,.);,4.3.3 VHDL,设计基本概念和语言现象小节,数据类型,数据对象,信号属性,时钟检测,VHDL,库,程序包,时序电路,异步时序,真值表表达,标准逻辑矢量,并置操作符,元件例化,K,X,康芯科技,4.4,计数器设计,【,例,4-20】,ENTITY CNT4 IS,PORT ( CLK : IN BIT ;,Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ;,END ;,ARCHITECTURE bhv OF CNT4 IS,BEGIN,PROCESS (CLK),BEGIN,IF CLKEVENT AND CLK = 1 THEN,Q = Q + 1 ;,END IF;,END PROCESS ;,END bhv;,K,X,康芯科技,4.4,计数器设计,4.4.1 4,位二进制加法计数器设计,表式,Q = Q + 1,的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的,Q + 1,,需等待下一个时钟周期。,表面上,,BUFFER,具有双向端口,INOUT,的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号再反馈回来,并不含有,IN,的功能。,注意,(Q),(Q + 1),CLK,上升沿,Q = Q + 1,左边的时序关系,K,X,康芯科技,4.4,计数器设计,4.4.2,整数类型,Q : BUFFER,INTEGER RANGE,15 DOWNTO 0;,Q : BUFFER,NATURAL RANGE,15 DOWNTO 0,;,整数类型,INTEGER,的元素:正整数、,0,、负整数,,VHDL,中,32,位有符号二进制数,,VHDL,综合按无符号数处理。,整数类型,一定要加范围,,REANGE,K,X,康芯科技,4.4.3,计数器设计的其他表述方法,【,例,4-21】,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,USE IEEE.STD_LOGIC_UNSIGNED.ALL ;,ENTITY CNT4 IS,PORT ( CLK : IN STD_LOGIC ;,Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;,END ;,ARCHITECTURE bhv OF CNT4 IS,SIGNAL 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 CLK,EVENT AND CLK=,1,THEN,-,检测时钟上升沿,接下页,K,X,康芯科技,4.5,一般加法计数器设计,IF EN = 1 THEN,-,检测是否允许计数(同步使能),IF CQI ,0,); -,大于,9,,,计数值清零,END IF;,END IF;,END IF;,IF CQI = 9 THEN COUT = 1; -,计数大于,9,,输出进位信号,ELSE COUT = 0;,END IF;,CQ X),SIGNAL d1,d2 : STD_LOGIC_VECTOR(4 DOWNTO 0);,VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0);,.,d1 0),;,a1 := (OTHERS=0),;,d2,1,4,= 1,OTHERS=0,d1 a1(3),3=a1(5), OTHERS=a1(1) );,d1 = a1(1) &,a1(5),& a1(1) &,a1(3),用连接符麻烦,d1 = 4,位,3,位,2,位,1,位,0,位,4.5,一般加法计数器设计,4.5.2,程序分析,图,4-14,例,4-22,的,RTL,电路(,Synplify,综合),4D,锁存器,2,选,1,使能,9,与输出,+1,器,4.5,一般加法计数器设计,4.5.2,程序分析,图,4-15,例,4-22,的工作时序,4.5.3,含并行置位的移位寄存器设计,【,例,4-23】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY SHFRT IS -,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 AND CLK = 1 THEN,IF LOAD = 1 THEN REG8 := DIN;,-,由(,LOAD=1,)装载新数据,ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1);,END IF;,END IF;,QB = REG8(0); -,输出最低位,END PROCESS;,END behav;,问题:是左移还是右移“移位寄存器”,D7 D6 D5 D4 D3 D2 D1 D0,“,8,位并入串出右移”移位寄存器,4.5,一般加法计数器设计,4.5.3,含并行置位的移位寄存器设计,图,4-16,例,4-23,的工作时序,习 题,K,X,康芯科技,4-1.,画出与下例实体描述对应的原理图符号元件:,ENTITY buf3s IS -,实体,1,:,三态缓冲器,PORT (input : IN STD_LOGIC ; -,输入端,enable : IN STD_LOGIC ; -,使能端,output : OUT STD_LOGIC ) ; -,输出端,END buf3x ;,ENTITY mux21 IS -,实体,2,:,2,选,1,多路选择器,PORT (in0, in1, sel : IN STD_LOGIC;,output : OUT STD_LOGIC);,习 题,K,X,康芯科技,4-2.,图,4-17,所示的是,4,选,1,多路选择器,试分别用,IF_THEN,语句和,CASE,语句的表达方式写出此电路的,VHDL,程序。,选择控制的信号,s1,和,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,。,图,4-17 4,选,1,多路选择器,习 题,K,X,康芯科技,4-3.,图,4-18,所示的是双,2,选,1,多路选择器构成的电路,MUXK,,对于其中,MUX21A,,当,s=0,和,1,时,分别有,y=a,和,y=b,。试在一个结构体中用两个进程来表达此电路,每个进程中用,CASE,语句描述一个,2,选,1,多路选择器,MUX21A,。,图,4-18,双,2,选,1,多路选择器,习 题,K,X,康芯科技,4-4.,图,4-19,是一个含有上升沿触发的,D,触发器的时序电路,试写出此电路的,VHDL,设计文件。,图,4-19,时序电路图,习 题,K,X,康芯科技,4-5.,给出,1,位全减器的,VHDL,描述。要求:,(1),首先设计,1,位半减器,然后用例化语句将它们连接起来,图,4-20,中,h_suber,是半减器,,diff,是输出差,,s_out,是借位输出,,sub_in,是借位输入。,(2),以,1,位全减器为基本硬件,构成串行借位的,8,位减法器,要求用例化语句来完成此项设计,(,减法运算是,x,y - sun_in = diffr),。,图,4-19,时序电路图,习 题,K,X,康芯科技,4-6.,根据图,4-21,,写出顶层文件,MX3256.VHD,的,VHDL,设计文件。,图,4-21,题,4-6,电路图,4-7.,设计含有异步清零和计数使能的,16,位二进制加减可控计数器。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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