第3章 VHDL入门

上传人:小**** 文档编号:243138784 上传时间:2024-09-16 格式:PPT 页数:57 大小:365KB
返回 下载 相关 举报
第3章 VHDL入门_第1页
第1页 / 共57页
第3章 VHDL入门_第2页
第2页 / 共57页
第3章 VHDL入门_第3页
第3页 / 共57页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,K,X,康芯科技,EDA,技术与,VHDL,第3章,VHDL,入门,K,X,康芯科技,3.1 简单组合电路的,VHDL,描述,3.1.1,多路选择器的,VHDL,描述,图,3-1,mux21a,实体,图,3-2,mux21a,结构体,3.1 简单组合电路的,VHDL,描述,3.1.1,多路选择器的,VHDL,描述,【例,3-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 ;,3.1 简单组合电路的,VHDL,描述,3.1.1,多路选择器的,VHDL,描述,【例,3-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 ;,3.1 简单组合电路的,VHDL,描述,3.1.1,多路选择器的,VHDL,描述,【例,3-3,】,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 ;,3.1 简单组合电路的,VHDL,描述,3.1.1,多路选择器的,VHDL,描述,图,3-3,mux21a,功能时序波形,3.1 简单组合电路的,VHDL,描述,1.,实体表达,【例,3-4,】,ENTITY e_name IS,PORT ( p_name : port_m data_type;,.,p_,namei,: port_mi data_type );,END ENTITY e_name;,3.1 简单组合电路的,VHDL,描述,2.,实体名,3.,端口语句和端口信号名,4.,端口模式,“IN”、“OUT”、“INOUT”、“BUFFER”,5.,数据类型,3.1 简单组合电路的,VHDL,描述,6.,结构体表达,【例3-5】,ARCHITECTURE arch_name OF e_name IS,说明语句,BEGIN,(,功能描述语句),END ARCHITECTURE arch_name ;,3.1 简单组合电路的,VHDL,描述,7.,赋值符号和数据比较符号,IF a THEN . -,注意,,a,的数据类型必须是,boolean,IF (s1=0)AND(s2=1)OR(cb+1) THEN .,8.,逻辑操作符,BIT,、,BOOLEAN,、,STD_LOGIC,3.1 简单组合电路的,VHDL,描述,9.,条件语句,10.,WHEN_ELSE,条件信号赋值语句,赋值目标 = 表达式,WHEN,赋值条件,ELSE,表达式,WHEN,赋值条件,ELSE,.,表达式 ;,z = a WHEN p1 = 1 ELSE,b WHEN p2 = 1 ELSE,c ;,3.1 简单组合电路的,VHDL,描述,11.,进程语句和顺序语句,12.,文件取名和存盘,IF_THEN_ELSE_END IF;,“,.,vhd,”,adder_f.,vhd,【例,3-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 ;,ARCHITECTURE,bhv,OF DFF1 IS,SIGNAL Q1 : STD_LOGIC ; -,类似于在芯片内部定义一个数据的暂存节点,BEGIN,PROCESS (CLK,Q1),BEGIN,IF CLKEVENT AND CLK = 1,THEN Q1 = D ;,END IF;,END PROCESS ;,Q = Q1 ; -,将内部的暂存数据向端口输出(双横线,-,是注释符号),END,bhv,;,3.2 简单时序电路的,VHDL,描述,3.2.1,D,触发器,图,3-4,D,触发器,3.2 简单时序电路的,VHDL,描述,3.2.2,D,触发器,VHDL,描述的语言现象说明,1.,标准逻辑位数据类型,STD_LOGIC,BIT,数据类型定义:,TYPE BIT IS(0,1); -,只有两种取值,STD_LOGIC,数据类型定义:,TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);,3.2 简单时序电路的,VHDL,描述,3.2.2,D,触发器,VHDL,描述的语言现象说明,2.,设计库和标准程序包,LIBRARY WORK ;,LIBRARY STD ;,USE STD.STANDARD.ALL ;,LIBRARY ;,USE .,ALL ;,LIBRARY IEEE ;,USE IEEE.STD_LOGIC_1164.ALL ;,3.2 简单时序电路的,VHDL,描述,3.2.2,D,触发器,VHDL,描述的语言现象说明,3.,信号定义和数据对象,EVENT,4.,上升沿检测表式和信号属性函数,EVENT,5.,不完整条件语句与时序电路,3.2 简单时序电路的,VHDL,描述,3.2.2,D,触发器,VHDL,描述的语言现象说明,【例,3-7,】,ENTITY COMP_BAD IS,PORT( a1,,,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;,.,3.2 简单时序电路的,VHDL,描述,3.2.3,实现时序电路的不同表述,【例3-9】,.,PROCESS (CLK),BEGIN,IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0),THEN Q = D ; -,确保,CLK,的变化是一次上升沿的跳变,END IF;,END PROCESS ;,【,例3-10】,.,PROCESS (CLK),BEGIN,IF CLK=1 AND CLKLAST_VALUE=0 -,同例,3-9,THEN Q = D ;,END IF;,END PROCESS ;,3.2 简单时序电路的,VHDL,描述,3.2.3,实现时序电路的不同表述,【例,3-11,】,LIBRARY IEEE ;,USE 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,PROCESS (CLK),BEGIN,IF rising_edge(CLK) -,必须打开,STD_LOGIC_1164,程序包,THEN Q1 = D ;,END IF;,END PROCESS ;,Q = Q1 ; -,在此,赋值语句可以放在进程外,作为并行赋值语句,END ;,3.2 简单时序电路的,VHDL,描述,3.2.3,实现时序电路的不同表述,【例3-12】,.,PROCESS,BEGIN,wait until CLK = 1 ; -,利用,wait,语句,Q = D ;,END PROCESS;,3.2 简单时序电路的,VHDL,描述,3.2.3,实现时序电路的不同表述,【例3-13】,.,PROCESS (CLK),BEGIN,IF CLK = 1,THEN Q = D ; -,利用进程的启动特性产生对,CLK,的边沿检测,END IF;,END PROCESS,图,3-7,例,3-13,的时序波形,3.2 简单时序电路的,VHDL,描述,3.2.3,实现时序电路的不同表述,【,【例,3-14,】,.,PROCESS (CLK,,,D) BEGIN,IF CLK = 1 -,电平触发型寄存器,THEN Q = D ;,END IF;,END PROCESS ;,图,3-8,例,3-14,的时序波形,3.2 简单时序电路的,VHDL,描述,3.2.4,异步时序电路设计,【例,3-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;,END PROCESS ;,QQ = Q2 ;,.,3.2 简单时序电路的,VHDL,描述,3.2.4,异步时序电路设计,图,3-9,例,3-15,综合后的电路(,Synplify,综合),3.3 含有层次结构的,VHDL,描述,3.3.1,半加器描述和,CASE,语句,图,3-10,半加器,h_adder,电路图及其真值表,3.3 含有层次结构的,VHDL,描述,3.3.1,半加器描述和,CASE,语句,图3-11 全加器,f_adder,电路图及其实体模块,3.3 含有层次结构的,VHDL,描述,3.3.1,半加器描述和,CASE,语句,【例,3-16,】,LIBRARY IEEE; -,半加器描述,(1),:布尔方程描述方法,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.3 含有层次结构的,VHDL,描述,3.3.1,半加器描述和,CASE,语句,【例3-17】,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 ;,3.3 含有层次结构的,VHDL,描述,3.3.1,半加器描述和,CASE,语句,【例3-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 ,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;,3.3 含有层次结构的,VHDL,描述,3.3.2,半加器描述,1.,CASE,语句,CASE ,IS,When = ; . ; ;,When = ; . ; ;,.,WHEN OTHERS =,;,END CASE ;,3.3 含有层次结构的,VHDL,描述,3.3.2,半加器描述,2.,标准逻辑矢量数据类型,B = 01100010 ; - B(7),为,0,B(4 DOWNTO 1) = 1101 ; - B(4),为,1,B(7 DOWNTO 4) = A ; - B(6),等于,A(2),SIGNAL C,:,BIT_VECTOR(3 DOWNTO 0),;,3.3 含有层次结构的,VHDL,描述,3.3.2,半加器描述,3.,并置操作符,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;,SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ;,.,a ,连接端口名,.);,3.4 计数器设计,【例3-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,;,3.4 计数器设计,3.4.1 4,位加法计数器,表面上,BUFFER,具有双向端口,INOUT,的功能,但实际上其输入功能是不完整的,它只能将自己输出的信号再反馈回来,并不含有,IN,的功能。,表式,Q = Q + 1,的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的,Q + 1,,,需等待下一个时钟周期。,3.4 计数器设计,3.4.2,整数类型,1,十进制整数,0,十进制整数,35,十进制整数,10,E3,十进制整数,等于十进制整数,1000,16#,D9#,十六进制整数,等于十六进制整数,D9H,8#720#,八进制整数,等于八进制整数,720,O,2#11010010#,二进制整数,等于二进制整数,11010010,B,Q : BUFFER NATURAL RANGE 15 DOWNTO 0,;,3.4 计数器设计,3.4.3,计数器设计的另一种表述,【例3-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 CLKEVENT AND CLK=1 THEN -,检测时钟上升沿,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 : STD_LOGIC_VECTOR(4 DOWNTO 0);,VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0);,.,d1 0),;,a1 := (OTHERS=0),;,d1 e(3),3=e(5), OTHERS=e(1) );,f = e(1) ,3.5 一般加法计数器设计,3.5.2,程序分析,图,3-14,例,3-22,的,RTL,电路(,Synplify,综合),3.5 一般加法计数器设计,3.5.2,程序分析,图,3-15,例,3-22,的工作时序,3.5 一般加法计数器设计,3.5.3,含并行置位的移位寄存器设计,【例3-23】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY SHFRT IS - 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 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,;,3.5 一般加法计数器设计,3.5.3,含并行置位的移位寄存器设计,图,3-16,例,3-23,的工作时序,3.6,VHDL,语句结构与语法小节,实体:,以,ENTITY. . .END ENTITY e_name,描述器件的端口特性。,结构体:,以,ARCHITECTURE . END ARCHITECTURE,给出器件 的逻辑功能和行为。,端口定义:,以,PORT(),语句定义器件端口及其数据类型。,端口模式:,IN,、,OUT,、,INOUT,、,BUFFER,描述端口数据的流向特征。,数据类型:,数据对象承载数据的类别:,INTEGER,、,BOOLEAN,、,STD_LOGIC,、,BIT,、,STD_LOGIC_VECTOR,。,信号赋值符:,“,=,”,,用于信号数据的传输,仿真传输延时最短为一个,。,条件比较符:,“,=,”,,在条件语句表式中用于比较待测数据的关系。,延时:,模拟器最小分辨时间,,或称延时,。,逻辑操作符:,AND,、,OR,、,NOT,、,NAND,、,XOR,、,XNOR,。,IF,条件语句:,IF_THEN_ELSE,语句作为顺序语句。,并行条件语句:,WHEN_ELSE,条件信号赋值语句。,进程语句:,以,PROCESS .END PROCESS,引导的语句结构。,顺序语句:,由进程语句引导的,以顺序方式执行的语句。,并行语句:,在结构体中以并行方式执行的语句。,文件取名:,建议文件名与,VHDL,设计的实体名一致,后缀是,.,vhd,。,3.6,VHDL,语句结构与语法小节,文件存盘:,VHDL,设计文件必须存于指定为工程的目录中,此目录将被设定为,WORK,库,,WORK,库的路径即为此目录的路径。,VHDL,库:,LIBRARY,语句打开,VHDL,库:,IEEE,库、标准库,STD,、,工作库,WORK . .,程序包:,USE,语句声明使用程序包:,STD_LOGIC_1164,、,STD_LOGIC_UNSIGNED,、,STANDARD,等程序。,数据对象:,信号:,SIGNAL,,,变量:,VERIABLE,,,常数:,CONSTANT,信号属性函数:,信号属性函数,EVENT,、,LAST_VALUE,。,时钟检测:,时钟检测上升沿检测表式:,CLKEVENT AND CLK=1,、,RISING_EDGE(),、,FALLING_EDGE(),等。,时序电路:,不完整条件语句产生时序电路:,IF,THEN,END IF,,,IF,THEN,ELSIF,THEN,END,IF,真值表表达:,表达方法之一是用,CASE_WHEN,语句,但要注意,OTHERS,的应用。,并置操作符:,并置操作符,可用于合并两个或多个逻辑矢量,构建成新的数组。,元件例化:,由元件调用声明语句,COMPONENT,和映射语句,PORT MAP( ),构成。,运算符重载概念:,当进行非整数类型数据运算操作时需要调用运算符重载函数,这可以打开程序包,STD_LOGIC_UNSIGNED,。,习 题,3-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);,习 题,3-2.,图,3-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,。,图,3-17 4,选,1,多路选择器,习 题,3-3.,图,3-18,所示的是双,2,选,1,多路选择器构成的电路,MUXK,,,对于其中,MUX21A,,,当,s=0,和,1,时,分别有,y=a,和,y=b,。,试在一个结构体中用两个进程来表达此电路,每个进程中用,CASE,语句描述一个,2,选,1,多路选择器,MUX21A,。,图,3-18,双,2,选,1,多路选择器,习 题,3-4,.,图,3-19,是一个含有上升沿触发的,D,触发器的时序电路,试写出此电路的,VHDL,设计文件。,图,3-19,时序电路图,习 题,3-5.,给出,1,位全减器的,VHDL,描述。要求:,(1),首先设计,1,位半减器,然后用例化语句将它们连接起来,图,3-20,中,h_,suber,是半减器,,diff,是输出差,,s_out,是借位输出,,sub_in,是借位输入。,(2),以,1,位全减器为基本硬件,构成串行借位的,8,位减法器,要求用例化语句来完成此项设计,(,减法运算是,x y - sun_in =,diffr,),。,图,3-20 1,位全减器,习 题,3-6.,根据图,3-21,,写出顶层文件,MX3256.VHD,的,VHDL,设计文件。,图,3-21,题,3-6,电路图,3-7.,设计含有异步清零和计数使能的,16,位二进制加减可控计数器。,习 题,3-6.,根据图,3-21,,写出顶层文件,MX3256.VHD,的,VHDL,设计文件。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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