EDA技术与应用讲义 第6章 VHDL程序设计课件

上传人:我*** 文档编号:142091686 上传时间:2020-08-16 格式:PPT 页数:31 大小:378.50KB
返回 下载 相关 举报
EDA技术与应用讲义 第6章 VHDL程序设计课件_第1页
第1页 / 共31页
EDA技术与应用讲义 第6章 VHDL程序设计课件_第2页
第2页 / 共31页
EDA技术与应用讲义 第6章 VHDL程序设计课件_第3页
第3页 / 共31页
EDA技术与应用讲义 第6章 VHDL程序设计课件_第4页
第4页 / 共31页
EDA技术与应用讲义 第6章 VHDL程序设计课件_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《EDA技术与应用讲义 第6章 VHDL程序设计课件》由会员分享,可在线阅读,更多相关《EDA技术与应用讲义 第6章 VHDL程序设计课件(31页珍藏版)》请在金锄头文库上搜索。

1、第6章 VHDL程序设计 课程讲义,合肥工业大学 彭良清,下一章,上一章,上一章内容 回顾,先看一个VHDL代码的例子 简单代码结构:端口定义和电路逻辑表达 代码文件命名 进程(PROCESS) VHDL代码中的:Port,Siganl,Variable 学会简单VHDL设计的三板斧 VHDL与C 代码中的函数 的区别 ? 操作符 B :OUT STD_LOGIC ); END ENTITY demo1_01; ARCHITECTURE bhv OF demo1_01 IS BEGIN B= not A; END ARCHITECTURE bhv;,ENTITY demo1_02 IS POR

2、T (X : INSTD_LOGIC; Y : INSTD_LOGIC; Z : OUT STD_LOGIC ); END ENTITY demo1_02; ARCHITECTURE bhv OF demo1_02 IS BEGIN Z= X AND Y; END ARCHITECTURE bhv;,详细参见: hfut04_component_demo1_02,详细参见: hfut04_component_demo1_01,ENTITY demo1 IS PORT ( IN1: INSTD_LOGIC; IN2: INSTD_LOGIC; OUT1: OUT STD_LOGIC ); END

3、 ENTITY demo1; ARCHITECTURE bhv OF demo1 IS COMPONENT demo1_01 IS-inverter component PORT (A: INSTD_LOGIC; B: OUT STD_LOGIC ); END COMPONENT demo1_01; COMPONENT demo1_02 IS-two and gate component PORT (X: INSTD_LOGIC; Y: INSTD_LOGIC; Z: OUT STD_LOGIC ); END COMPONENT demo1_02; SIGNAL sigIN3:STD_LOGI

4、C; BEGIN U1: demo1_01 PORT MAP( A = IN1, B = sigIN3 ); U2: demo1_02 PORT MAP( X = sigIN3, Y = IN2, Z =OUT1 ); END ARCHITECTURE bhv;,U1A+U2A的源代码,详细参见: hfut04_component_demo1,元件例化(component instance),sigIN3,SIGNAL sigIN3:STD_LOGIC; U1: demo1_01 PORT MAP( A = IN1, B = sigIN3 ); U2: demo1_02 PORT MAP( X

5、 = sigIN3, Y = IN2, Z =OUT1 );,这就是一个 层次化设计 的例子,demo1_01.vhd,demo1.vhd,demo1_02.vhd,元件例化:语法,元件定义语句 COMPONENT 元件名 IS PROT ( 端口名表 ); END COMPONENT 元件名; 元件连接信号申明语句 SIGNAL 信号名:类型; 元件例化语句 例化名:元件名 PORT MAP( 端口名= 连接端口名);,取一个元件,插在PCB的对应插座上,制作PCB的布线,元件例化 cout, sum: OUT STD_LOGIC ); END ENTITY f_adder; ARCHITE

6、CTURE fd1 OF f_adder IS COMPONENTh_adder- see example 4_19, or 4_20,4_21 PORT( a, b: INSTD_LOGIC; co, so: OUTSTD_LOGIC ) END COMPONENT; COMPONENTor2a- see example 4_18 PORT( a, b: INSTD_LOGIC; c: OUTSTD_LOGIC ) END COMPONENT; SIGNAL d,e, f: STD_LOGIC; BEGIN u1: h_adder PORT MAP( a = ain,b=bin; co=d,

7、 so=e); u2: h_adder PORT MAP( a = e,b=cin; co=f, so=sum); u3: or2a PORT MAP( a = d,b=f;c=out); END ARCHITECTURE fd1;,h_adder 被例化了 2次,详细参见: p88_ex4_22_f_adder,1位全加器: 元件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; ARCHIT

8、ECTURE fh1 OF oh_adder IS BEGIN so = NOT ( a XOR ( NOT b) ); co = a AND b; END ARCHITECTURE fh1;,LIBARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT ( a, b : INSTD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c = a or b; END ARCHITECTURE one;,详细参见: p87_ex4

9、_18_or2a,详细参见: p87_ex4_19_h_adder,层次化设计的 4种 类别,1,第1种:图形文件(GDF) 调用 文本文件(VHD),代码复制(generate语句),ENTITY shift IS PORT (a, clk: INSTD_LOGIC; b: OUT STD_LOGIC ); END ENTITY shift; ARCHITECTURE bhv OF shift IS COMPONENT dff PORT ( d, clk: INSTD_LOGIC; q: OUTSTD_LOGIC ; END COMPONENT dff; SIGNALz : OUTSTD_L

10、OGIC_VECTOR ( 0 TO 4 ); BEGIN z(0) = a; g1: FOR i IN 0 TO 3 GENERATE dffx: dff PORT MAP ( z(i), clk, z(i+1) ); END GENERATE; b = z(4); END ARCHITECTURE bhv;,详细参见: xd_p116_ex5_39_shift,代码复制:用4个D触发器 构成 移位寄存器,相同的元件,Z(0),Z(1),Z(2),Z(3),Z(4),代码复制:元件例化,ENTITY shift IS PORT (a, clk: INSTD_LOGIC; b: OUT STD

11、_LOGIC ); END ENTITY shift; ARCHITECTURE bhv OF shift IS COMPONENT dff PORT ( d, clk: INSTD_LOGIC; q: OUTSTD_LOGIC ); END COMPONENT dff; SIGNALz : OUTSTD_LOGIC_VECTOR ( 0 TO 4 ); BEGIN z(0) = a; dff0: dff PORT MAP ( z(0), clk, z( 1 ) ); dff1: dff PORT MAP ( z(1), clk, z( 2 ) ); dff2: dff PORT MAP (

12、z(2), clk, z( 3 ) ); dff3: dff PORT MAP ( z(3), clk, z( 4 ) ); b = z(4); END ARCHITECTURE bhv;,详细参见: xd_p116_ex5_40_shift,如果构成 24位移位寄存器, 则例化语句有 X 句 ?,新方法,generate语句 !,代码复制(generate语句),ENTITY shift IS PORT (a, clk: INSTD_LOGIC; b: OUT STD_LOGIC ); END ENTITY shift; ARCHITECTURE bhv OF shift IS COMPON

13、ENT dff PORT ( d, clk: INSTD_LOGIC; q: OUTSTD_LOGIC ); END COMPONENT dff; SIGNALz : STD_LOGIC_VECTOR ( 0 TO 4 ); BEGIN z(0) = a; g1: FOR i IN 0 TO 3 GENERATE dffx: dff PORT MAP ( z(i), clk, z(i+1) ); END GENERATE; b = z(4); END ARCHITECTURE bhv;,详细参见: xd_p116_ex5_39_shift,生成(generate)语句:语法,格式一 标号: F

14、OR 循环变量 IN 取值范围 GENERATE 说明 BEGIN 并行语句 END GENERATE 标号; 格式二 标号: IF条件 GENERATE 说明 BEGIN 并行语句 END GENERATE 标号;,问题:,请用GENERATE语句构成 8位锁存器74373?,复杂电路的代码结构,构成复杂电路的代码除了上述的 使用 元件 的 层次化 设计 之外,还有: 函数(function) 过程(procedure) 块(block) 包(package) 下面分述之,函数(function),LIBRARY ieee; USE ieee.std_logic_1164.all; USE

15、WORK.packexp.all; ENTITY axamp IS PORT ( dat1, dat2: INSTD_LOGIC_VECTOR ( 3 DOWNTO 0 ); dat3, dat4: INSTD_LOGIC_VECTOR ( 3 DOWNTO 0 ); out1, out2: OUTSTD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ); END axamp; ARCHITECTURE behav OF axamp IS BEGIN out1 = max (dat1, dat2); PROCESS ( dat2, dat4 ) BEGIN out2 = max (d

16、at3, dat4); END PROCESS; END ARCHITECTURE behav;,LIBRARY ieee; USE ieee.std_logic_1164.all; PACKAGE packexp IS FUNCTION max ( a, b: IN STD_LOGIC_VECTOR ) RETURN STD_LOGIC_VECTOR; FUNCTION func1 ( a, b, c: REAL ) RETURN REAL; FUNCTION * ( a, b: IN STD_LOGIC_VECTOR ) RETURN INTEGER; FUNCTION as2 ( SIGNAL in1, in2: REAL )- SIGNAL ? RETURN STD_LOGIC_VECTOR; END; PACKAGE BODY packexp IS FUNCTION max ( a,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号