欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    EDA第3章VHDL基础.ppt

    • 资源ID:2891699       资源大小:389.52KB        全文页数:95页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    EDA第3章VHDL基础.ppt

    EDA技术与VHDL,第3章 VHDL 基础,KX康芯科技,3.1 VHDL 基本语法,3.1.1 组合电路描述,图3-1 mux21a实体 图3-2 mux21a结构体,3.1 VHDL 基本语法,3.1.1 组合电路描述,【例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 组合电路描述,【例3-2】 ENTITY mux21a IS PORT ( a, b, 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-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.1 组合电路描述,3.1 VHDL 基本语法,图3-3 mux21a功能时序波形,3.1.1 组合电路描述,3.1 VHDL 基本语法,3.1.2 VHDL结构,【例3-4】 ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name;,1. 实体表达,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,AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)和NOT(取反),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; PROCESS. END PROCESS,“.vhd”,adder_f.vhd,3.2 时序电路描述,3.2.1 D 触发器,3.2 时序电路描述,3.2.2 时序描述VHDL规则,1. 标准逻辑位数据类型 STD_LOGIC,BIT数据类型定义: TYPE BIT IS('0','1'); -只有两种取值 STD_LOGIC数据类型定义: TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); -有9种取值,3.2 时序电路描述,2. 设计库和标准程序包,LIBRARY WORK ; LIBRARY STD ; USE STD.STANDARD.ALL ;,LIBRARY ; USE ALL ;,LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;,3.2 时序电路描述,3. 信号定义和数据对象,'EVENT,4. 上升沿检测表式和信号属性函数EVENT,5. 不完整条件语句与时序电路,3.2 时序电路描述,【例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 = '0' ;- 未提及当a1=b1时,q1作何操作 END IF; END PROCESS ; END ;,3.2 时序电路描述,图3-5 例3-7的电路图,3.2 时序电路描述,图3-6 例3-8的电路图,【例3-8】 . IF a1 b1 THEN q1 = '1' ; ELSE q1 = '0' ; END IF; .,3.2 时序电路描述,3.2.3 时序电路的不同表述,【例3-9】 . PROCESS (CLK) BEGIN IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0') THEN Q = D ; -确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ; 【例3-10】 . PROCESS (CLK) BEGIN IF CLK='1' AND CLK'LAST_VALUE='0' -同例3-9 THEN Q = D ; END IF; END PROCESS ;,3.2 时序电路描述,【例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 时序电路描述,3.2.3 实现时序电路的不同表述,【例3-12】 . PROCESS BEGIN wait until CLK = '1' ; -利用wait语句 Q = D ; END PROCESS;,3.2 时序电路描述,【例3-13】 . PROCESS (CLK) BEGIN IF CLK = '1' THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS,图3-7 例3-13的时序波形,3.2 时序电路描述,【例3-14】 . PROCESS (CLK,D) BEGIN IF CLK = '1' -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ;,图3-8 例3-14的时序波形,3.3 全加器的VHDL描述,3.3.1 半加器描述,图3-9 全加器f_adder电路图及其实体模块,3.3 全加器的VHDL描述,3.3.1 半加器描述,图3-10 半加器h_adder电路图及其真值表,3.3 全加器的VHDL描述,3.3.1 半加器描述,【例3-15】 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-16】 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 so so so NULL ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;,3.3 全加器的VHDL描述,3.3.1 半加器描述,【例3-17】 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 ;,3.3 全加器的VHDL描述,【例3-18】 LIBRARY IEEE; -1位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder -调用半加器声明语句 PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT; SIGNAL d,e,f : STD_LOGIC; -定义3个信号作为内部的连接线。 BEGIN u1 : h_adder PORT MAP(a=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 CASE语句,1. CASE语句,CASE IS When = ; . ; ; When = ; . ; ; . WHEN OTHERS = ; END CASE ;,3.3 全加器的VHDL描述,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);,B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4),3.3 全加器的VHDL描述,3. 并置操作符 ,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; . a = '1''0'd(1)'1' ; - 元素与元素并置,并置后的数组长度为4 . IF a d = “101011“ THEN . - 在IF条件句中可以使用并置符,3.3 全加器的VHDL描述,3.3.3 例化语句,COMPONENT 元件名 IS PORT (端口名表) ; END COMPONENT 文件名 ;,COMPONENT h_adder PORT ( c,d : IN STD_LOGIC; e,f : OUT STD_LOGIC);,例化名 : 元件名 PORT MAP( 端口名 = 连接端口名,.);,3.4 计数器设计,【例3-19】 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 CLK'EVENT AND CLK = '1' THEN Q = Q + 1 ; END IF; END PROCESS ; END bhv;,3.4 计数器设计,1程序说明,表式Q = Q + 1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q + 1,需等待下一个时钟周期。,3.4 计数器设计,2数据类型说明,1 十进制整数 0 十进制整数 35 十进制整数 10E3 十进制整数,等于十进制整数1000 16#D9# 十六进制整数,等于十六进制整数D9H 8#720# 八进制整数,等于八进制整数720O 2#11010010# 二进制整数,等于二进制整数11010010B,Q : BUFFER NATURAL RANGE 15 DOWNTO 0;,Q : BUFFER INTEGER RANGE 15 DOWNTO 0;,3.4 计数器设计,3计数器的其他表述方法,【例3-20】 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 CLK'EVENT AND CLK = '1' THEN Q1 = Q1 + 1 ; END IF; END PROCESS ; Q = Q1 ; END bhv;,3.5 一般计数器的VHDL设计方法,【例3-21】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHERS ='0') ; -计数器异步复位 ELSIF CLK'EVENT 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 = CQI; -将计数值向端口输出 END PROCESS; END behav;,3.5 一般计数器的VHDL设计方法,3.5.1 相关语法,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 一般计数器的VHDL设计方法,3.5.2 程序功能分析,图3-11 例3-21的RTL电路(Synplify综合),3.5 一般计数器的VHDL设计方法,3.5.2 程序功能分析,图3-12 例3-21的工作时序,3.5 一般计数器的VHDL设计方法,3.5.3 移位寄存器设计,【例3-22】 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 CLK'EVENT 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 一般计数器的VHDL设计方法,3.5.3 移位寄存器设计,图3-13 例3-22的工作时序,3.6 数据对象,3.6.1 常数,CONSTANT 常数名:数据类型 := 表达式 ;,CONSTANT FBT : STD_LOGIC_VECTOR := “010110“ ; - 标准位矢类型 CONSTANT DATAIN : INTEGER := 15 ; - 整数类型,3.6 数据对象,3.6.2 变量,VARIABLE 变量名 : 数据类型 := 初始值 ;,VARIABLE a : INTEGER RANGE 0 TO 15 ; -变量a定义为常数,取值范围是0到5 VARIABLE d : STD_LOGIC := 1; -变量a定义为标准逻辑位数据类型,初始值是1,目标变量名 := 表达式 ;,VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ;-分别定义变量x和y为整数类型 VARIABLE a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ; x := 11 ; y := 2 + x ; - 运算表达式赋值,y 也是实数变量 a := b -b向a赋值 a(0 TO 5) := b(2 TO 7) ;,3.6 数据对象,3.6.3 信号,SIGNAL 信号名: 数据类型 := 初始值 ;,目标信号名 = 表达式 AFTER 时间量;,SIGNAL a,b,c,y,z: INTEGER ; . PROCESS (a,b,c) BEGIN y = a + b ; z = c a ; y = b ; END PROCESS ;,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,表3-1 信号与变量赋值语句功能的比较,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,【例3-23】 ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CLK'EVENT AND CLK = '1' THEN QQ := D1 ; END IF; END PROCESS ; Q1 = QQ; END ;,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,【例3-24】 ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN QQ = D1 ; END IF; END PROCESS ; Q1 = QQ; END ;,3.6 数据对象,【例3-25】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN A = D1 ; B = A ; Q1 = B ; END IF; END PROCESS ; END ;,3.6 数据对象,【例3-26】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC ) ; END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A,B : STD_LOGIC ; BEGIN IF CLK'EVENT AND CLK = '1' THEN A := D1 ; B := A ; Q1 = B ; END IF; END PROCESS ; END ;,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,图3-15 例3-26的RTL电路 图3-16 D触发器电路,3.6 数据对象,【例3-27】 SIGNAL in1,in2,e1, . : STD_LOGIC ; . PROCESS(in1,in2, . . .) VARIABLE c1,. . . : STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN IF in1 = '1' THEN . - 第 1 行 e1 = “1010“ ; - 第 2 行 . IF in2 = '0' THEN . . . - 第 15+n 行 . c1 := “0011“ ; - 第 30+m 行 . END IF; END PROCESS;,【例3-28】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4; ARCHITECTURE body_mux4 OF mux4 IS signal muxval : integer range 7 downto 0; BEGIN process(i0,i1,i2,i3,a,b) begin muxval q q q q null; end case; end process; END body_mux4;,【例3-29】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 IS PORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC); END mux4; ARCHITECTURE body_mux4 OF mux4 IS BEGIN process(i0,i1,i2,i3,a,b) variable muxval : integer range 7 downto 0; begin muxval := 0; if (a = '1') then muxval := muxval + 1; end if; if (b = '1') then muxval := muxval + 2; end if; case muxval is when 0 = q q q q null; end case; end process; END body_mux4;,图3-16 例3-28的RTL电路,图3-17 例3-29的RTL电路,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,图3-18 例3-28中错误的工作时序,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,图3-19 例3-29中正确的工作时序,【例3-30】 Library IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SHIFT IS PORT (CLK,C0 : IN STD_LOGIC; -时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); -移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -移位数据输出 CN : OUT STD_LOGIC); -进位输出 END ENTITY; ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC ; BEGIN PROCESS (CLK,MD,C0) BEGIN IF CLKEVENT AND CLK = 1 THEN 接下页,CASE MD IS WHEN “001“ = REG(0) REG(0) REG(7) REG(7) REG(7 DOWNTO 0) REG = REG ; CY = CY ; -保持 END CASE; END IF; END PROCESS; QB(7 DOWNTO 0) = REG(7 DOWNTO 0); CN = CY; -移位后输出 END BEHAV;,3.6 数据对象,3.6.4 进程中的信号赋值与变量赋值,图3-20 例3-30中带进位循环左移仿真波形(MD=“001“),3.7 IF语句概述,【例3-31】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts IS PORT (a, b, c: IN BOOLEAN; output: OUT BOOLEAN); END control_stmts; ARCHITECTURE example OF control_stmts IS BEGIN PROCESS (a, b, c) VARIABLE n: BOOLEAN; BEGIN IF a THEN n := b; ELSE n := c; END IF; output = n; END PROCESS; END example;,【例3-32】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 2) ); END coder; ARCHITECTURE behav OF coder IS SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS (din) BEGIN IF (din(7)='0') THEN output = “000“ ; ELSIF (din(6)='0') THEN output = “100“ ; ELSIF (din(5)='0') THEN output = “010“ ; ELSIF (din(4)='0') THEN output = “110“ ; ELSIF (din(3)='0') THEN output = “001“ ; ELSIF (din(2)='0') THEN output = “101“ ; ELSIF (din(1)='0') THEN output = “011“ ; ELSE output = “111“ ; END IF ; END PROCESS ; END behav;,3.7 IF语句概述,表3-2 8线-3线优先编码器真值表,注:表中的“x”为任意,类似VHDL中的“”值。,3.8 进程语句归纳,3.8.1 进程语句格式,PROCESS语句结构的一般表达格式如下 进程标号: PROCESS ( 敏感信号参数表 ) IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS 进程标号;,3.8 进程语句归纳,3.8.2 进程结构组成,进程说明部分,顺序描述语句部分,敏感信号参数表,3.8 进程语句归纳,3.8.3 进程要点,1. PROCESS为一无限循环语句,2. PROCESS中的顺序语句具有明显的顺序/并行运行双重性,PROCESS(abc) BEGIN CASE abc IS WHEN “0000“ = so so so so so NULL ; END CASE; END PROCESS;,3.8 进程语句归纳,3. 进程必须由敏感信号的变化来启动,4. 进程语句本身是并行语句,3.8.3 进程要点,5. 信号是多个进程间的通信线,6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑,3.8 进程语句归纳,【例3-33】 ENTITY mul IS PORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT ); END mul; ARCHITECTURE ex OF mul IS SIGNAL temp : BIT; BEGIN p_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;,3.9 并行赋值语句概述,【例3-34】 SIGNAL seiect : INTEGER RANGE 15 DOWNTO 0; . . . Select = 0 WHEN s0=0 AND s1=0 ELSE 1 WHEN s0=1 AND s1=0 ELSE 2 WHEN s0=0 AND s1=1 ELSE 3 ; x = a WHEN select=0 ELSE b WHEN select=1 ELSE c WHEN select=2 ELSE d ;,3.10 双向和三态电路信号赋值,【例3-36】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tri_s IS port ( enable : IN STD_LOGIC; datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END tri_s ; ARCHITECTURE bhv OF tri_s IS BEGIN PROCESS(enable,datain) BEGIN IF enable = '1' THEN dataout = datain ; ELSE dataout =“ZZZZZZZZ“ ; END IF ; END PROCESS; END bhv;,3.10.1 三态门设计,3.10 双向和三态电路信号赋值,3.10.1 三态门设计,图3-21 8位3态控制门电路,3.10 双向和三态电路信号赋值,【例3-36】 library ieee; use ieee.std_logic_1164.all; entity tri_state is port (control : in std_logic; in1: in std_logic_vector(7 downto 0); q : inout std_logic_vector(7 downto 0); x : out std_logic_vector(7 downto 0); end tri_state; architecture body_tri of tri_state is begin process(control,q,in1) begin if (control = '0') then x = q ; else q = in1; x=“ZZZZZZZZ“ ; end if; end process; end body_tri;,3.10.2 双向端口设计,3.10

    注意事项

    本文(EDA第3章VHDL基础.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开