收藏 分享(赏)

数字系统设计入门.ppt

上传人:dreamzhangning 文档编号:5397474 上传时间:2019-02-28 格式:PPT 页数:26 大小:2.32MB
下载 相关 举报
数字系统设计入门.ppt_第1页
第1页 / 共26页
数字系统设计入门.ppt_第2页
第2页 / 共26页
数字系统设计入门.ppt_第3页
第3页 / 共26页
数字系统设计入门.ppt_第4页
第4页 / 共26页
数字系统设计入门.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、四、实例解析,例1:2位加法器 例2:2位逻辑与 例3:2位逻辑或 例4:2位比较器 例5:4选1选择器 例6:8选2选择器 例7:结构描述COMPONENT 例8:3-8译码器,例1:2 位加法器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY adder2 isPORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT

2、 STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE adder2_arch OF adder2 IS BEGINc=a+b; END;,不同数据类型的算术、比较、转换函数,使用STD_LOGIC_VECTOR形态的函数如同不带符号的类型,描述互相连接的数据类型的标准,STD_LOGIC和STD_LOGIC_VECTOR形态,例1:2 位加法器,例2:2 位逻辑与,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;-数据类型库 USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD

3、_LOGIC_ARITH.ALL; ENTITY and_2 isPORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE and_2_arch OF and_2 IS BEGINc=a AND b; END;,例3:2 位逻辑或,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.S

4、TD_LOGIC_ARITH.ALL; ENTITY or_2 isPORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE or_2_arch OF or_2 IS BEGINc=a OR b; END;,例4:2 位比较器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD

5、_LOGIC_ARITH.ALL; ENTITY comp2 isPORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE comp2_arch OF comp2 IS BEGINPROCESS(a,b)BEGINIF(ab) THENc=“10“;ELSIF(ab) THENc=“01“; ELSEc=“11“;END IF;END PROCESS; END;,IF 语 句,IF 条件句 Then

6、顺序语句 END IF ;,条件为真时,执行顺序语句;否则直接结束IF语句的执行。 是一种非完整性条件语句,通常用于产生时序电路。,IF语句中的条件表达式是布尔表达式,只能使用关系运算符及逻辑运算操作的组合表达式。,IF 语 句,条件为真时,执行IF下面的顺序语句;否则执行ELSE下面的顺序语句。 是一种完整性条件语句,通常用于产生组合电路。,IF 条件句 Then 顺序语句 ELSE顺序语句 END IF ;,IF 语 句,IF 条件句 Then IF 条件句 Then END IF ; END IF ;,可以设定多个判定条件,具有优先级。 任一分支顺序语句的执行条件是以上各分支所确定条件的

7、相与。,多重IF语句嵌套。 END IF结束语句应与嵌入条件句数量一致。,IF 条件句 Then 顺序语句 ELSIF 条件句 Then ELSE顺序语句 END IF ;,例5:4 选 1 选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY mux4 isPORT(a: IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c: O

8、UT STD_LOGIC); END; ARCHITECTURE mux4_arch OF mux4 IS BEGINPROCESS(sel)BEGINCASE sel ISWHEN “00“=cccc=a(3);END CASE;END PROCESS; END;,CASE 语 句,语句格式 CASE 表达式 IS When 选择值 = 顺序语句; When 选择值 = 顺序语句; . END CASE ;,CASE a ISWHEN “000“= y y y y y =X; END CASE;,选择值必须在表达式的取值范围内。 除非所有的选择值能完整覆盖表达式的取值,否则最末一个条件句的选

9、择必用“OTHERS”表示, “OTHERS”只能出现一次,且只能作为最后一种条件取值。,CASE sel ISWHEN “00“=cccc=a(3);END CASE;,例6:8 选 2 选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY mux8_2 isPORT(a: IN STD_LOGIC_VECTOR(7 DOWNTO 0);sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:

10、OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE arch OF mux8_2 IS BEGINPROCESS(sel)BEGINCASE sel ISWHEN “00“=c(0)c(0)c(0)c(0)=a(6);c(1)=a(7);END CASE;END PROCESS; END;,例7:结构描述,元件定义语句 COMPONENT 元件名 IS GENERIC (类属表);PORT (端口名表); END COMPONENT 元件名; 元件例化语句 例化名:元件名 PORT MAP( 端口名 = 连接端口名,.) ;,主要用于模块化设

11、计当中,避免大量重复工作。各个例化语句的执行顺序与书写顺序无关。映射方式:名字映射方式和位置映射方式。,例7:结构描述,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY exp_u_d isPORT(sel_in:IN STD_LOGIC_VECTOR(1 DOWNTO 0);a_in: IN STD_LOGIC_VECTOR(1 DOWNTO 0);b_in: IN STD_LOGIC_VECTOR(1 DOWNTO

12、0);c_out: OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END; ARCHITECTURE arch OF exp_u_d ISCOMPONENT adder2PORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT; COMPONENT and_2PORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOW

13、NTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT; COMPONENT or_2PORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT;,COMPONENT comp2PORT(a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);b:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c:OUT STD_LOGIC_VE

14、CTOR(1 DOWNTO 0);END COMPONENT; COMPONENT mux8_2PORT(a: IN STD_LOGIC_VECTOR(7 DOWNTO 0);sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);c: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT; SIGNAL temp0,temp1,temp2,temp3: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINu1: adder2 PORT MAP(a=a_in,b=b_in,c=temp0);u2: and_2 PORT

15、MAP(a=a_in,b=b_in,c=temp1);u3: or_2 PORT MAP(a=a_in,b=b_in,c=temp2);u4: comp2 PORT MAP(a=a_in,b=b_in,c=temp3);u5: mux8_2 PORT MAP(sel=sel_in,a(0)=temp0(0),a(1)=temp0(1), a(2)=temp1(0),a(3)=temp1(1),a(4)=temp2(0),a(5)=temp3(1), a(6)=temp3(0),a(7)=temp3(1),c=c_out);END;,例7:结构描述,例7:结构描述,例8:3 | 8 译 码 器,

16、译码器,3线-8线,0,A,A,1,A,2,2,7,Y,4,0,Y,1,Y,Y,Y,Y,Y,Y,6,5,3,例8:3 | 8 译 码 器,例8: 3 | 8 译 码 器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dec3_8 ISPORT(A: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END dec3_8; ARCHITECTURE behave OF dec3_8 IS BEGINPROCESS (A)BEGINCASE A ISWHEN

17、 “000“ = Y Y Y Y Y Y Y Y Y=“11111111“; END CASE;END PROCESS; END behave;,例8: 3 | 8 译 码 器,例8: 3 | 8 译 码 器,3线8线译码器仿真波形,VHDL编 码 注 意 事 项(一),外部端口使用STD_LOGIC类型; 不要赋未知值“x”或检查验证无效的“-”; 这些值在仿真和综合时会产生不可预测的行为。 定义整数类型的信号和变量时一定要用RANGE子句指定范围;,VHDL编 码 注 意 事 项(二),不要在代码中使用buffer类型的端口读取输出数据;要使用out类型,再增加另外变量或信号,以获取输出值; 这是因为buffer类型的端口不能连接到其他类型的端口上,因此buffer类型就会在整个设计的端口中传播下去。 在组合逻辑进程中,其敏感量表中要包含所有要读取的信号; 防止出现不必要的锁存器。,VHDL 编 码 注 意 事 项(三),避免使用长的if-then-else语句,而使用case语句来代替; 防止出现较大的优先编码器,使得代码比较容易读懂。 尽量在元件例化中使用名称映射,不要用位置映射; 有利于调试和增加代码的易读性。,五、开发板简介与演示,五、开发板简介与演示,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报