EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件

上传人:w****i 文档编号:94405109 上传时间:2019-08-06 格式:PPT 页数:56 大小:595KB
返回 下载 相关 举报
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件_第1页
第1页 / 共56页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件_第2页
第2页 / 共56页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件_第3页
第3页 / 共56页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件_第4页
第4页 / 共56页
EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件》由会员分享,可在线阅读,更多相关《EDA技术与CPLD FPGA开发应用简明教程 教学课件 ppt 作者 978--302-15639-0第8章 EDA课件(56页珍藏版)》请在金锄头文库上搜索。

1、第8章 FPGA在DSP领域中的应用,EDA技术及CPLD/FPGA应用简明教程 清华大学出版社,2007-2-12,第1页,2.1 可编程逻辑器件概述 2.2 复杂可编程逻辑器件(CPLD) 2.3 现场可编程门阵列 (FPGA) 2.4 FPGA和CPLD的开发应用选择,EDA技术及CPLD/FPGA应用简明教程 清华大学出版社,2007-2-12,第2页,教学目标 教学重点 教学过程,第8章 FPGA在DSP领域中的应用,第8章 FPGA在DSP领域中的应用,教学目标 了解数字信号处理的必用部件 理解和掌握加法器、减法器的设计方法 理解和掌握快速的乘法器原理和设计方法 了解数字滤波器的原

2、理和设计方法,掌握加法器、减法器的原理及设计方法 掌握快速乘法器的原理和设计方法,教学重点,多位加法器的构成有两种方式: 并行进位和串行进位方式 串行进位方式是将全加器级联构成多位加法器,8.1 快速加法器的设计,并行进位加法器通常比串行级联加法器占用更多的资源。随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。实践证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。,各自的特点:,其电路原理图如图8-1所示,8位二进制并行加法器即是由两个4位二进制并行加法器级联而成,图 8-1 8位加法器的电路原理图

3、,1. 加法器原理 表8.1 一位全加法器真值表,8.1.1 4位二进制并行加法器,一位全加器的原理可用下式表示: COUT=AB+(AB)Cin; S=ABCin.,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER4B IS -4位二进制并行加法器 PORT(CIN4:IN STD_LOGIC; -低位进位 A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位加数 B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

4、-4位被加数 S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -4位和 COUT4: OUT STD_LOGIC); -进位输出 END ADDER4B;,2. 4位二进制并行加法器的源程序ADDER4B.VHD,ARCHITECTURE ART OF ADDER4B IS SIGNAL S5:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL A5,B5: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN A5=0,LIBRARY IEEE; USE IEEE_STD.LOGIC_1164.ALL; USE IEEE_S

5、TD.LOGIC_UNSIGNED.ALL; ENTITY ADDER8B IS -由4位二进制并行加法器级联而成的8位二进制加法器 PORT(CIN8: IN STD_LOGIC; A8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT8: OUT STD_LOGIC); END ENTITY ADDER8B;,8.1.2 8位二进制加法器的源程序,ARCHITECTURE ART OF ADDER8B IS COM

6、PONENT ADDER4B IS -对要调用的元件ADDER4B的界面端口进行定义 PORT(CIN4:IN STD_LOGIC; A4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT4:OUT STD_LOGIC); END COMPONENT ADDER4B;,SIGNAL SC:STD_LOGIC; -4位加法器的进位标志 BEGIN U1:ADDER4B -例化(安装)一个4位二进制加法器U1 PORT MAP(

7、CIN4=CIN8,A4=A8(3 DOWNTO 0),B4=B8(3 DOWNTO0), S4=S8(3 DOWNTO 0),COUT4=SC); U2:ADDER4B -例化(安装)一个4位二进制加法器U2 PORT MAP(CIN4=SC,A4=A8(7 DOWNTO 4),B4=B8(7 DOWNTO 4), S4=S8(7 DOWNTO 4),COUT4=COUT8); END ARCHITECTURE ART;,8位二进制并行加法器的仿真结果如图8-2所示,8.2.1 设计思路 纯组合逻辑构成的乘法器虽然工作速度比较快,但占用硬件资源多,难以实现宽位乘法器,而基于PLD器件外接RO

8、M九九表的乘法器则无法构成单片系统,也不实用。这里介绍由8位加法器构成的以时序逻辑方式设计的8位乘法器,如图8-3所示。此乘法器具有一定的实用价值。其乘法原理是:乘法通过逐项位移相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次和相加;若为0,左移后以全零相加,直至被乘数的最高位。从图8-3的逻辑图上可以清楚地看出此乘法器的工作原理。,8.2 快速乘法器的设计,图8-3 88位乘法器电路原理图,图8-3中,ARICTL是乘法运算控制电路,它的START(可锁定于引脚P 94)信号的上跳沿与高电平有两个功能,即16位寄存器清零和被乘数A70向移位寄存器SREG8B加载;它的低电平

9、则作为乘法使能信号。乘法时钟信号从ARICTL的CLK输入。当被乘数加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,与门ANDARITH打开,8位乘数B70在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数移出位为0时,与门全零输出。如此往复,直至8个时钟脉冲后,由ARICTL的控制,乘法运算过程自动中止。ARIEND输出高电平,以此可点亮一发光管,以示乘法结束。此时REG16B的输出值即为最后乘积。,LIBRARY IEEE; USE IEEE.STD_LO

10、GIC_1164.ALL; ENTITY ANDARITH IS -选通与门模块 PORT (ABIN:IN STD_LOGIC; -与门开关 DIN:IN STD_LOGIC_VECTOR (7 DOWNTO 0); -8位输入 DOUT:OUT STD_LOGIC_VECTOR (7 DOWNTO 0); -8位输出 END ANDARITH; ARCHITECTURE ART OF ANDARITH IS BEGIN PROCESS (ABIN,DIN) BEGIN FOR I IN 0 TO 7 LOOP -循环,分别完成8位数据与一位控制位的与操作 DOUT (I)=DIN (I)A

11、ND ABIN; END LOOP; END PROCESS; END ART;,8.2.2 快速乘法器VHDL源程序 1. 选通与门模块的源程序ANDARITH.VHD,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG16B IS -16位锁存器 PORT (CLK:IN STD_LOGIC; -锁存信号 CLR:IN STD_LOGIC; -清零信号 D:IN STD_LOGIC_VECTOR (8 DOWNTO 0); -9位数据输入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位数据输出 END

12、 REG16B; ARCHITECTURE ART OF REG16B IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0); -16位寄存器设置 BEGIN,2.16位锁存器的源程序REG16B.VHD,PROCESS (CLK,CLR) BEGIN IF CLR = 1 THEN R16S= “0000000000000000“; -异步复位信号 ELSIF CLKEVENT AND CLK = 1 THEN -时钟到来时,锁存输入值 R16S(6 DOWNTO 0)=R16S(7 DOWNTO 1); -右移低8位 R16S(15 DOWNTO 7)=

13、D; -将输入锁到高9位 END IF; END PROCESS; Q=R16S; END ART,16位锁存器仿真结果如图8-5所示,图8-5 16位锁存器仿真结果,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; -8位右移寄存器 ENTITY SREG8B IS PORT (CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB:OUT STD_LOGIC ); END SREG8B; ARCHITECTURE ART OF SREG8B IS,3. 8位

14、右移寄存器的源程序SREG8B.VHD,SIGNAL REG8: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CLK,LOAD) IS 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; END PROCESS; QB= REG8 (0); -输出最低位 END ART;,8位右移寄存器仿真结果如图8-6所示,LIBRARY IEEE; USE

15、IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ARICTL IS -乘法运算控制器 PORT ( CLK:IN STD_LOGIC; START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC; RSTALL:OUT STD_LOGIC; ARIEND:OUT STD_LOGIC); END ARICTL; ARCHITECTURE ART OF ARICTL IS SIGNAL CNT4B: STD_LOGIC_VECTOR(3 DOWNTO 0);,4. 乘法运算控制器的源程序ARIC

16、TL.VHD,BEGIN RSTALL=START; PROCESS (CLK,START) BEGIN IF START = 1 THEN CNT4B= “0000“; -高电平清零计数器 ELSIF CLKEVENT AND CLK = 1 THEN IF CNT4B8 THEN-小于则计数,等于8表明乘法运算已经结束 CNT4B=CNT4B+1; END IF; END IF; END PROCESS;,PROCESS (CLK,CNT4B,START) BEGIN IF START = 0 THEN IF CNT4B8 THEN -乘法运算正在进行 CLKOUT =CLK; ARIEND= 0; ELSE CLKOUT = 0; ARIEND= 1; -运算已经结束 END IF; ELSE C

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

当前位置:首页 > 高等教育 > 大学课件

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