EDA第四章VHDL设计初步.ppt

上传人:本田雅阁 文档编号:2891705 上传时间:2019-06-02 格式:PPT 页数:36 大小:421.02KB
返回 下载 相关 举报
EDA第四章VHDL设计初步.ppt_第1页
第1页 / 共36页
EDA第四章VHDL设计初步.ppt_第2页
第2页 / 共36页
EDA第四章VHDL设计初步.ppt_第3页
第3页 / 共36页
EDA第四章VHDL设计初步.ppt_第4页
第4页 / 共36页
EDA第四章VHDL设计初步.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《EDA第四章VHDL设计初步.ppt》由会员分享,可在线阅读,更多相关《EDA第四章VHDL设计初步.ppt(36页珍藏版)》请在三一文库上搜索。

1、可编程逻辑器件特点,1.集成度高,可靠性好,体积小,容量大 2.处理速度快,保密性好。 3.该类器件的逻辑功能由用户设计 4.开发方便,可扩展能力强,升级容易 5.可在现场编程,实时检验 6.开发周期短,效率高,设计制造成本低 7.已成为最流行的设计芯片之一 8.按国际规范开发工具设计,先进,通用,可编程逻辑器件特点,用户可反复编程, 在外围电路不动的情况下,更改软件可实现不同的功能。 电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,最后芯片的制作,STEP1:建立 工作库文件夹,STEP2:输入设计项目 原理图/VHDL文本代码,STEP3:存盘,注意 原理图/文本取名,ST

2、EP4:将设计项 目设置成Project,STEP5:选 择目标器件,STEP11: 硬件测试,STEP9:引脚 锁定并编译,STEP8:仿真测 试和波形分析,STEP7:建立仿 真波形文件,STEP6: 启动编译,STEP10:编程 下载/配置,VHDL文本输入设计流程,【例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 ARC

3、HITECTURE 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

4、 e ; END ARCHITECTURE one ;,4.1.1 2选1多路选择器的VHDL描述,【例4-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 ;,4.1.2 VHDL相关语句说明,1. 实体表达,【例4-4】

5、 ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name; 或: ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END e_name;,4.1.2 VHDL相关语句说明,2. 实体名,3. PORT语句和端口信号名,4. 端口模式,IN,OUT,INOUT,BUFFER,回读,5. 数据类型,BIT, 1,0 STD_logic

6、, 1,0,h,l,U,X, W,Z, - BOOLEAN, ture, false Integer 0 ,4.1.2 VHDL相关语句说明,6. 结构体表达,【例4-5】 ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END ARCHITECTURE arch_name ; 或: ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END arch_name ;,7. 信号传输(赋值)符号和数据比较符号,4.1.2 VHDL相关语句说明,8. 逻辑操作符AND

7、、OR、NOT,9. IF_THEN条件语句,10. WHEN_ELSE条件信号赋值语句,赋值目标 = 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE . 表达式 ;,11. PROCESS进程语句和顺序语句,12. 文件取名和存盘,4.1.3 VHDL设计的基本概念和语句小节,数据类型,信号赋值符,条件比较符, 延时,实体,结构体,端口定义,端口模式,逻辑操作符,IF条件语句,并行条件语句,进程语句,顺序语句,并行语句,文件取名,文件存盘,4.2 寄存器描述及其VHDL语言现象,4.2.1 D触发器的VHDL描述,【例4-6】 LIBRARY IEEE ; USE

8、 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 ; EN

9、D bhv;,D触发器,比较用5种不同语句的D触发器VHDL程序,Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) begin if clk=1 AND clklast_value=0 then q1 = d; end if; q = q1 ; end process; end test1_body;,LIBRARY IEEE; USE IEEE.std_logic_1164.all

10、; Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is begin process (clk,d) begin if rising_edge(clk) then q = d; end if; end process; end test1_body;,They are all the same,DFF,Entity test1 is port (clk : in bit; d : in bit; q : out bit); end test1; architec

11、ture body of test1 is signal q1 : bit ; begin process (clk,d) begin if (clk = 1) then q1 = d; end if; q = q1 ; end process; end body;,Entity test1 is port (clk : in bit; d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) begin if (clk = 1) then q

12、1 = d; end if; q = q1 ; end process; end body;,D触发器VHDL程序1 例4-10,Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin,process (clk) begin if clk=1 AND clklast_value=0 then q1 = d; end if; q = q1 ; end process; end test1_body,D触发器VHDL程序

13、2 例4-11,LIBRARY IEEE; USE IEEE.std_logic_1164.all; Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is begin,process (clk,d) begin if rising_edge(clk) then q = d; end if; end process; end test1_body;,D触发器VHDL程序3,Entity test1 is port (clk : in bit; d : in bit

14、; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin,process (clk) begin if (clk = 1) then q1 = d; end if; q = q1 ; end process; end body,D触发器VHDL程序4(电平型触发),Entity test1 is port (clk : in bit; d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 :

15、bit ; begin,process (clk,d) begin if (clk = 1) then q1 = d; end if; q = q1 ; end process; end body;,4选1逻辑功能真值表,四路选择器,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f4in1 IS PORT (a, b,c,d : IN STD_LOGIC; s0s1 :STD_LOGIC_VECTOR(1 DOWNTO 0) ; y : OUT STD_LOGIC); END ENTITY f4in1; ARCHITECTURE fh1 O

16、F f4in1 is BEGIN,PROCESS(s0s1) BEGIN CASE s0s1 IS WHEN “00“ = y y y y null; END CASE; END PROCESS; END ARCHITECTURE fh1 ;,4.3 1位二进制全加器的VHDL描述,图4-11半加器h_adder电路图,图4-10 全加器f_adder电路图,半加器描述、或门描述,【例4-16】 LIBRARY IEEE; -半加器描述(1) USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co

17、, 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;,【例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

18、or2a IS BEGIN c = a OR b ; END ARCHITECTURE one;,【例4-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 so so so NUL

19、L ; END CASE; END PROCESS; END ARCHITECTURE fh1 ;,半加器描述CASE语句,a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1,表4-1 半加器h_adder逻辑功能真值表,1. CASE语句,CASE语句的一般表式是:,CASE IS When = ; . ; ; When = ; . ; ; . WHEN OTHERS= ; END CASE ;,2. 标准逻辑矢量数据类型STD_LOGIC_VECTOR,3. 并置操作符 ,以下是一些并置操作示例:,SIGNAL a : STD_LOGIC_VECTOR (3

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

21、 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_L

22、OGIC); END COMPONENT; SIGNAL d,e,f : STD_LOGIC; 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;,4.3.3 全加器描述和例化语句,元件例化语句由两部分组成,第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,它的最简表达式如下所示: COMPON

23、ENT 元件名 IS PORT (端口名表) ; END COMPONENT 文件名 ;,元件例化语句的第二部分则是此元件与当前设计实体(顶层文件)中元件间及端口的连接说明。语句的表达式如下: 例化名 : 元件名 PORT MAP( 端口名 = 连接端口名,.);,4.4 4位二进制加法计数器设计,取整数数据类型,为什么?,整数取值范围,端口信号模式取 BUFFER,为什么?,注意整数和位的不同表达方式!,或者是BIT类型,另一种表达方式,运算符加载,注意,信号 端口模式和 数据类型的 改变!,注意,引 进内部信 号矢量!,4位锁存器,组合电路加1器,锁存信号,输出反馈,综合后的计数器电路RT

24、L图,4.5 一般加法计数器设计,4.5.1 相关语法,1. 变量,2. 省略赋值操作符(OTHERS=X),为了简化表达才使用短语“(OTHERS=X)”,这是一个省略赋值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,如以下语句: SIGNAL d1,d2 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ; d21,4=1,others=0);,则d2为 10010,d1为00000,a1为0000000000000000,例4-

25、22 带有复位和时钟使能的10进制计数器,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_LO

26、GIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CQI := (OTHERS =0) ; -计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数 IF CQI 0);-大于9,计数值清零 END IF; END IF; END IF; IF CQI = “1001“ THEN COUT = 1; -计数大于9,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出 END PROCESS; END behav;,图4-1

27、4 例4-22的RTL电路,图4-15 例4-22的工作时序,4.5.3 带有并行置位的移位寄存器,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_

28、LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN - 装载新数据 REG8 := DIN; ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF; END IF; QB = REG8(0); END PROCESS; - 输出最低位 END behav;,【例4-23】,4.5.3 带有并行置位的移位寄存器,图4-16 例4-22的工作时序,(1)在第一个时钟到来时,LOAD恰为高电平,(2)第二个时钟,以及以后的时钟信号都是移位时钟,(3)第二个时钟后,QB输出了右移出的第2个位1,

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

当前位置:首页 > 其他


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