版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FPGA-CPLDFPGA-CPLD原理及应用原理及应用 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用第6章 宏模块和LPM函数的应用FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPUCoreOriginal HardwareContentOriginalSoftwareContentGlue LogicBlueToothControllerIR &RS232Compression& EncryptionEngineDSPCoreSoPCFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用在FPGA技术的发展过程中,很多优秀的数字系
2、统设计人员积累了大量设计成果。Altera公司对其中一些成果在Altera 器件的结构做了优化设计,使之在Altera特定器件结构中发挥出最佳性能。最终形成了参数化宏功能模块库LPM。IP核的概念FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用IP 设计技术 IP 技术是针对可复用的设计而言的,其本质特征是功能模块的可复用性。 IP 通常满足以下基本特征:通用性好正确性有100%的保证可移植性好。 IP 核设计的理想目标是即插即用,但就目前来看,离这个目标还很远。基于标准片上总线(OCB),具有标准接口是IP 发展的方向。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的
3、应用SoPC最常见的IP核:ARMFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用IP核的概念FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用IP核的概念 IP 的含义与分类lIP (Intellectual Property )即知识产权。在集成电路设计中,IP 指可以重复使用的具有自主知识产权功能的集成电路设计模块。基于IP 的SoC 设计具有易于增加新功能和缩短上市时间的显著特点,是IC 设计当前乃至今后若干年的主流设计方式。l按照设计层次的不同,IP 核可以分为三种:l软核(Soft Core)l固核(Firm Core)l硬核(Hard Core)。FPG
4、A-CPLD原理及应用 第6章 宏模块和LPM函数的应用软核(Soft Core) 软核只完成RTL 级的行为设计,以HDL的方式提交使用。该HDL描述在逻辑设计上做了一定优化,必须经过仿真验证,使用者可以用它综合出正确的门级网表。 软核不依赖于实现工艺或实现技术,不受实现条件的限制,具有很大的灵活性和可复用性。 软核为后续设计留有比较大的空间,使用者可以通过修改源码,完成更具新意的结构设计,生成具有自主版权的新软核。 由于软核的载体HDL与实现工艺无关,使用者要负责从描述到版图转换的全过程,模块的可预测性低,设计风险大,使用者在后续设计中仍有发生差错的可能,这是软核最主要的缺点。FPGA-C
5、PLD原理及应用 第6章 宏模块和LPM函数的应用固核(Firm Core) 固核比软核有更大的设计深度,己完成了门级综合、时序仿真并经过硬件验证,以门级网表的形式提交使用。 只要用户提供相同的单元库时序参数,一般就可以正确完成物理设计。 固核的缺点是它与实现工艺的相关性和网表的难读性。前者限制了固核的使用范围,后者则使得布局布线后发生的时序问题难以排除。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用硬核(Hard Core) 硬核以IC版图的形式提交,并经过实际工艺流片验证。 显然,硬核强烈地依赖于某一个特定的实现工艺,而且对具体的物理尺寸,物理形态及性能上具有不可更改性。
6、硬核是IP 核的最高形式,同时也是最主要的形式。国际上对硬核的开发和应用都非常重视,特别是近几年来发展迅速。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用三种不同形式的IP核 IP核有三种不同的存在形式:HDL语言形式、网表形式和版图形式。 HDL语言形式是讲这种电路单元用HDL语言描述出来,由于直接是HDL代码,因此可修改性最高,甚至可以在功能上大修改,所以是“软”的。 而被做成版图的IP核基本不可修改,只能对应特定的工艺库,所以是“硬”的。 做成网表的IP从功能上来说基本不可修改,但是没有和特定的工艺库绑定,从选择工艺库的角度来说是可改的。所以借鉴了“固件”的说法,是一种介
7、于“软”和“硬”之间的状态。 LPM模块的使用FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用知识要点LPM: library of Parameterized Modules参数化的模块库,其模块使用参数和端口信号进参数化的模块库,其模块使用参数和端口信号进行描述,通过设置参数和端口信号,可以实现不同行描述,通过设置参数和端口信号,可以实现不同的功能。其模块可称之为参数化模块或者的功能。其模块可称之为参数化模块或者LPMLPM模块模块或者或者LPMLPM宏功能块。宏功能块。模块设置参数:设置大小;参数:设置大小;端口信号设置:设置使用哪些端口信号和信号属端口信号设置:设置使用哪
8、些端口信号和信号属性等,其中输入端口信号有缺省值,也可以自己设性等,其中输入端口信号有缺省值,也可以自己设置置。LPM功能模块FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.1 宏功能模块概述 数据数据类型类型类型类型描描述描述描述类型类型描描述描述描述 算术组件:算术组件:包括累加器、加法器、乘法器和包括累加器、加法器、乘法器和LPM算术函数算术函数 门电路:门电路: 包括多路复用器和包括多路复用器和LPM门函数门函数 I/O组件:组件:包括锁相环包括锁相环(PLL)、DDR(双倍速率同步动态随机存储器)、千兆位收发器块、千兆位收发器块(GXB)、LVDS接收器和发送器、接
9、收器和发送器、PLL重新配置和远程更新宏功能模块重新配置和远程更新宏功能模块 存储器编译器:存储器编译器:包括包括FIFO、RAM和和ROM宏功能模块宏功能模块 存储组件:存储组件: 包括存储器、移位寄存器宏模块和包括存储器、移位寄存器宏模块和LPM存储器存储器函数函数 Altera提供的宏功能模块与LPM函数有FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.1 宏功能模块概述 6.1.1 知识产权(IP)核的应用 AMPP程序程序 MegaCore函数函数 OpenCore评估功能评估功能 OpenCore Plus硬件评估功能硬件评估功能 FPGA-CPLD原理及应用 第
10、6章 宏模块和LPM函数的应用宏功能模块概述zAltera宏功能模块(Megafunction)的三种来源Megafunctions from the Altera Megafunction Partners Program AMPP (Altera宏功能合作伙伴计划)提供的第三方IP CoreMegafunctions created by Altera, known as MegaCore functions Altera器件专有的Megafunction,由Altera公司提供的IP CoreEIA标准的LPM 库(Library of Parameterized Modules参数化模
11、块库) LPM库是一个不依赖特定硬件的逻辑模块库(EDA标准)。zALTERA推荐使用推荐使用经优化的Megafunction增强设计。特别是针对一些与Altera器件底层结构相关的特性,必须通过Megafunction实现。 z使用Megafunction将大大的减少设计风险及缩短开发周期减少设计风险及缩短开发周期。zMegafunction可以使设计师将更多时间和精力放在改善及提高系统级的产系统级的产品品上,而不要重新开发现成的Megafunction。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用IP(知识产权) 一个好的IP Core要具备可靠、可重用、可配置、可测试的
12、特性,还应有 最成功的IP提供商之一: 虽然只有LPM、部分器件专有的Megafunction是免费的,但是这些免费的模块也足够满足大多数设计的需要(LPM库只有25个基本模块就号称可以完成所有的设计)。 评估付费Megafunction:使用开放式内核(OpenCore)技术 ,其设计流程如右图所示。 如何用好Altera的Megafunction:认真阅读文档并执行必要的配置工作无风险FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用访问IP MegaStore 网站,迅速找到并下载 Altera全部产品组合的宏功能。采用 Altera 强大的用户友好的 MegaWizard
13、插件工具来参数化宏功能,根据需要选择合适的功能,估算资源占用,设置第三方工具,产生将参数化 IP 集成到设计中所需的所有文件。在购买前,利用 OpenCore 评估功能,在仿真中评估 IP 的所有特性,包括系统功能、大小和速度等。在您决定购买 IP 许可前,利用 OpenCore Plus 硬件评估特性,产生时间受限的 FPGA 编程文件,然后利用它在您自己的硬件上验证所有 FPGA 设计,也可以在任何其他支持的电路板上进行验证。当您对 IP 内核完全满意,并准备将设计投产时,可以购买许可,生成产品器件编程文件。Altera MegaCore许可能够永久使用,支持多种工程,包括一年更新和支持。
14、对 Altera 所有 IP 提供浮动和节点锁定的许可。可提供多种不同许可期限、条件和价格模型的第三方 IP 内核。请直接联系 IP 合作伙伴,了解详细信息。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用开放式内核的设计流程 n想获取Altera产品的最新、最权威的资料,请访问 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用Altera IPAltera Megafunction Partners Program:AMPP是是ALTERA宏功能模块、宏功能模块、IP内核开发伙伴的组织内核开发伙伴的组织。 通过这个联盟,AMPP的所有厂商提供基于ALTERA器件优
15、化的宏功能模块、IP内核。 有关有关ALTERA的宏功能库及的宏功能库及IP内核的标志介绍内核的标志介绍 MegaCore是是ALTERA直接开发完成的,并有详直接开发完成的,并有详尽的使用资料的宏功能模块、尽的使用资料的宏功能模块、IP内核。内核。 针对ALTERA的器件作了特别的优化处理,达到并满足用户所指定的性能指标。ALTERA提供MegaCore是为了帮助客户完成条件要求较苛刻的系统应用以及减少设计风险和开发时间。 ALTERA的的MaxplusII和和Quartus平台均提供各平台均提供各种种开放宏功能模块开放宏功能模块评估的功能。评估的功能。 允许用户在购买某个宏功能模块之前,进
16、行设计、编译、仿真。 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用 Altera随Quartus II附带的宏功能模块有以下五类:n算术组件:包括累加器、加法器、乘法器和LPM算术函数n门电路:包括多路复用器和LPM门函数nI/O组件:包括锁相环(PLL)、倍速率同步随机存储器(DDR)、千兆位收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块n存储器编译器:包括FIFO、RAM和ROM宏模块n存储组件:存储器、移位寄存器宏模块和LPM存储器函数 其余宏功能模块在Quartus II上只有其网络链接 使用资料:Help Megafunctions/
17、LPM 利用Megafunction进行项目设计的步骤:1.利用MegaWizard Plug-In Manager(MegaWizard 插件管理器)建立或修改包含自定义宏功能模块的设计文件2.在顶层设计文件中对这些文件进行例化。Altera IPFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.1 宏功能模块概述 6.1.2 使用MegaWizard Plug-In Manager FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.1 宏功能模块概述 6.1.3 在QuartusII中对宏功能模块进行例化 (1) 在在VHDL中例化中例化 (2) 使用端口和
18、参数定义使用端口和参数定义( (原理图)原理图) (3) 使用端口和参数定义生成宏功能模块使用端口和参数定义生成宏功能模块 计数器计数器 加法加法/减法器减法器 乘法器乘法器 乘乘-累加器和乘累加器和乘-加法器加法器 RAM 移位寄存器移位寄存器 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2 LPM模块应用实例 使用LPM_COUNTER模块实现数控分频器各端口信号的意义和设置参数的设置分频比二分频和占空比仿真波形FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用 数控分频器电路原理图数控分频器电路原理图基于LPM_COUNTER的数控分频器设计FPGA-C
19、PLD原理及应用 第6章 宏模块和LPM函数的应用当d3.0=12(即16进制数:C)时的工作波形数控分频器工作波形数控分频器工作波形FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2 LPM模块应用实例 6.2.1 信号发生器电路设计 正弦波正弦波数据存储ROM波形数据输出DAC地址发生器counter数据个数:32个数据位数:8位输出位数?地址位数?FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2 LPM模块应用实例 6.2.2 定制LPM_ROM初始化数据文件 1建立建立.mif格式文件格式文件 【例例6-1】WIDTH = 8;DEPTH = 64
20、;ADDRESS_RADIX = HEX;DATA_RADIX = HEX;CONTENT BEGIN0 : FF;1 : FE;2 : FC;3 : F9;4 : F5;(数据略去)(数据略去)3D : FC;3E : FE;3F : FF;END; FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2 LPM模块应用实例 6.2.2 定制LPM_ROM初始化数据文件 2建立建立.mif格式文件格式文件 【例例6-2】#include stdafx.h#include #include math.h#define PI 3.14159int main()int i; floa
21、t s; for (i = 0; i sin_rom.mif; FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2 LPM模块应用实例 6.2.2 定制LPM_ROM初始化数据文件 3建立建立.mif格式文件格式文件 将波形数据填入将波形数据填入mif文件表中文件表中 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.3 定制LPM_ROM元件 图图6-5 定制新的宏功能块定制新的宏功能块 6.2 LPM模块应用实例 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.3 定制LPM_ROM元件 图6-6 LPM宏功能块设定 FPGA-C
22、PLD原理及应用 第6章 宏模块和LPM函数的应用6.2.3 定制LPM_ROM元件 选择选择data_rom模块数据线和地址线宽度模块数据线和地址线宽度 6.2 LPM模块应用实例 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.3 定制LPM_ROM元件 选择地址锁存信号选择地址锁存信号inclock 6.2 LPM模块应用实例 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.3 定制LPM_ROM元件 调入调入ROM初始化数据文件并选择在系统读写功能初始化数据文件并选择在系统读写功能 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应
23、用6.2.3 定制LPM_ROM元件 LPM_ROM设计完成设计完成 6.2 LPM模块应用实例 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用【例例6-3】修改后的用于例化的波形数据修改后的用于例化的波形数据ROM文件:文件:data_rom.vhdLIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.altera_mf_components.all; -使用宏功能库中的所有元件使用宏功能库中的所有元件ENTITY data_rom ISPORT (address : IN STD_L
24、OGIC_VECTOR (5 DOWNTO 0); inclock : IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END data_rom;ARCHITECTURE SYN OF data_rom ISSIGNAL sub_wire0: STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncram -例化例化altsyncram元件,调用了元件,调用了LPM模块模块altsyncram接下页接下页FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用GENERIC ( -参数传递语句
25、参数传递语句intended_device_family: STRING; -类属参量数据类型定义类属参量数据类型定义width_a: NATURAL; widthad_a: NATURAL;numwords_a: NATURAL; operation_mode : STRING;outdata_reg_a: STRING; address_aclr_a : STRING;outdata_aclr_a : STRING; width_byteena_a: NATURAL;init_file: STRING; lpm_hint: STRING;lpm_type: STRING);PORT ( c
26、lock0: IN STD_LOGIC ; -altsyncram元件接口声明元件接口声明address_a: IN STD_LOGIC_VECTOR (5 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用BEGIN q Cyclone, -参数传递映射参数传递映射 width_a = 8, -数据线宽度数据线宽度8 widthad_a = 6, -地址线宽度地址线宽度6 numwords_a = 64, -数据数量数据数量64 operation_m
27、ode = ROM, -LPM模式模式ROM outdata_reg_a = UNREGISTERED, -输出无锁存输出无锁存 address_aclr_a = NONE, -无异步地址清无异步地址清0 outdata_aclr_a = NONE, -无输出锁存异步清无输出锁存异步清0 width_byteena_a = 1, - byteena_a输入口宽度输入口宽度1 init_file = ./dataHEX/SDATA.hex, -ROM初始化数据文件初始化数据文件 lpm_hint = ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=NONE, lpm_
28、type = altsyncram ) -LPM类型类型 PORT MAP ( clock0 = inclock, address_a = address,q_a = sub_wire0 ); END SYN;例6-3】FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.4 完成顶层设计 【例例6-4】 正弦信号发生器顶层设计正弦信号发生器顶层设计LIBRARY IEEE; -正弦信号发生器源文件正弦信号发生器源文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SINGT IS PORT
29、( CLK : IN STD_LOGIC; -信号源时钟信号源时钟 DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); -8位波形数据输出位波形数据输出END;6.2 LPM模块应用实例 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom -数据存储器数据存储器LPM_ROM文件声明文件声明PORT(address:IN STD_LOGIC_VECTOR(5 DOWNTO 0);-地址信号地址信号inclock : IN STD_LOGIC ;-地址锁存
30、时钟地址锁存时钟q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;SIGNAL Q1: STD_LOGIC_VECTOR (5 DOWNTO 0); -设定内部节点作为地址设定内部节点作为地址计数器计数器BEGIN PROCESS(CLK) -LPM_ROM地址发生器进程地址发生器进程 BEGINIF CLKEVENT AND CLK = 1 THEN Q1Q1,q= DOUT,inclock=CLK);-例化例化END; 【例6-4】 正弦信号发生器顶层设计FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.2.4 完成
31、顶层设计 6.2 LPM模块应用实例 图图6-11 仿真波形输出仿真波形输出 嵌入式逻辑分析仪获得的波形嵌入式逻辑分析仪获得的波形 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.3 在系统存储器数据读写编辑器应用In-System Memory Content Editor编辑窗编辑窗 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.3 在系统存储器数据读写编辑器应用 与实验系统上的与实验系统上的FPGA通信正常情况下的编辑窗界面通信正常情况下的编辑窗界面 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.3 在系统存储器数据读写编辑器应用
32、 从从FPGA中的中的ROM读取波形数据读取波形数据 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.3 在系统存储器数据读写编辑器应用 下载编辑数据后的下载编辑数据后的SignalTap II采样波形采样波形 图图6-16 编辑波形数据编辑波形数据 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.4 编辑SignalTapII的触发信号 选择高级触发条件选择高级触发条件 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.4 编辑SignalTapII的触发信号 进入进入“触发条件函数编辑触发条件函数编辑”窗口窗口 FPGA-CPLD原理及应
33、用 第6章 宏模块和LPM函数的应用6.4 编辑SignalTapII的触发信号 编辑触发函数编辑触发函数 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.5.1 RAM定制 6.5 其它存储器模块的定制与应用 编辑定制编辑定制RAM FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.5.1 RAM定制 6.5 其它存储器模块的定制与应用 LPM_RAM的仿真波形的仿真波形 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.5.2 FIFO定制 6.5 其它存储器模块的定制与应用 FIFO编辑窗编辑窗 FPGA-CPLD原理及应用 第6章 宏模
34、块和LPM函数的应用6.5.2 FIFO定制 6.5 其它存储器模块的定制与应用 FIFO的仿真波形的仿真波形 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.5.3 基于LPM_ROM的4位乘法器设计 6.5 其它存储器模块的定制与应用 【例例6-5】WIDTH = 8 ;WIDTH = 8 ;DEPTH = 256 ;DEPTH = 256 ;ADDRESS_RADIX = HEX ;ADDRESS_RADIX = HEX ;DATA_RADIX = HEX ;DATA_RADIX = HEX ;CONTENT BEGINCONTENT BEGIN 00:00 ; 01:
35、00 ; 02:00 ; 03:00 ; 04:00 ; 05:00 ; 06:00 ; 07:00 ; 08:00 ; 09:00; 00:00 ; 01:00 ; 02:00 ; 03:00 ; 04:00 ; 05:00 ; 06:00 ; 07:00 ; 08:00 ; 09:00; 10:00 ; 11:01 ; 12:02 ; 13:03 ; 14:04 ; 15:05 ; 16:06 ; 17:07 ; 18:08 ; 19:09; 10:00 ; 11:01 ; 12:02 ; 13:03 ; 14:04 ; 15:05 ; 16:06 ; 17:07 ; 18:08 ; 19
36、:09; 20:00 ; 21:02 ; 22:04 ; 23:06 ; 24:08 ; 25:10 ; 26:12 ; 27:14 ; 28:16 ; 29:18; 20:00 ; 21:02 ; 22:04 ; 23:06 ; 24:08 ; 25:10 ; 26:12 ; 27:14 ; 28:16 ; 29:18; 30:00 ; 31:03 ; 32:06 ; 33:09 ; 34:12 ; 35:15 ; 36:18 ; 37:21 ; 38:24 ; 39:27; 30:00 ; 31:03 ; 32:06 ; 33:09 ; 34:12 ; 35:15 ; 36:18 ; 37
37、:21 ; 38:24 ; 39:27; 40:00 ; 41:04 ; 42:08 ; 43:12 ; 44:16 ; 45:20 ; 46:24 ; 47:28 ; 48:32 ; 49:36; 40:00 ; 41:04 ; 42:08 ; 43:12 ; 44:16 ; 45:20 ; 46:24 ; 47:28 ; 48:32 ; 49:36; 50:00 ; 51:05 ; 52:10 ; 53:15 ; 54:20 ; 55:25 ; 56:30 ; 57:35 ; 58:40 ; 59:45; 50:00 ; 51:05 ; 52:10 ; 53:15 ; 54:20 ; 55
38、:25 ; 56:30 ; 57:35 ; 58:40 ; 59:45; 60:00 ; 61:06 ; 62:12 ; 63:18 ; 64:24 ; 65:30 ; 66:36 ; 67:42 ; 68:48 ; 69:54; 60:00 ; 61:06 ; 62:12 ; 63:18 ; 64:24 ; 65:30 ; 66:36 ; 67:42 ; 68:48 ; 69:54; 70:00 ; 71:07 ; 72:14 ; 73:21 ; 74:28 ; 75:35 ; 76:42 ; 77:49 ; 78:56 ; 79:63; 70:00 ; 71:07 ; 72:14 ; 73
39、:21 ; 74:28 ; 75:35 ; 76:42 ; 77:49 ; 78:56 ; 79:63; 80:00 ; 81:08 ; 82:16 ; 83:24 ; 84:32 ; 85:40 ; 86:48 ; 87:56 ; 88:64 ; 89:72; 80:00 ; 81:08 ; 82:16 ; 83:24 ; 84:32 ; 85:40 ; 86:48 ; 87:56 ; 88:64 ; 89:72; 90:00 ; 91:09 ; 92:18 ; 93:27 ; 94:36 ; 95:45 ; 96:54 ; 97:63 ; 98:72 ; 99:81; 90:00 ; 91
40、:09 ; 92:18 ; 93:27 ; 94:36 ; 95:45 ; 96:54 ; 97:63 ; 98:72 ; 99:81;END ; FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用6.6 流水线乘法累加器的混合输入设计 10NkknknfxyDSPFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用(1)用VHDL设计16位加法器 6.6 流水线乘法累加器的混合输入设计 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER16B IS P
41、ORT ( CIN : IN STD_LOGIC; A, B : IN STD_LOGIC_VECTOR(15 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); COUT : OUT STD_LOGIC );END ADDER16B;ARCHITECTURE behav OF ADDER16B IS SIGNAL SINT : STD_LOGIC_VECTOR(16 DOWNTO 0);SIGNAL AA,BB : STD_LOGIC_VECTOR(16 DOWNTO 0);BEGINAA=0&A; BB=0&B; SINT =
42、 AA+BB+CIN; S = SINT(15 DOWNTO 0); COUT =0gotoloop;JMPGEZLOOP0A0504endHALT0B0700 . A00000 A10001 A20064FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用选择实现选择实现CPU的方法的方法u硬连线逻辑(硬连线逻辑(HardWired)u微程序(微程序(MicroProgram)u(HDL+EDA工具工具)lVHDLlQuartusu以下为以下为VHDL代码代码的基本框架的基本框架 算法级 物理特性 寄存器传输级 行为特性 逻辑级 电路级 版图级 版图综合 逻辑综合 高层次综合 结构特
43、性 FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPU 设计指令集和架构定义指令集和架构定义电路设计电路设计半导体制造工艺半导体制造工艺ISAArchitecturemicro-architecturePipelineProcessLayoutFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用 设计一个简化的CPU1. 设计一个简化的处理器处理器(字长16位),并使其与内存MEM连接。2. 用VHDL以以RTL风格风格描述。3. 该处理器当前执行的指令存放在指令寄存器IR中,指令集仅算逻指令和访问内存指令。FPGA-CPLD原理及应用 第6章 宏模块和LPM函数的
44、应用CPU结构 取指: CPU要从存储器中读取指令。 译码: 翻译指令用以确定要执行的操作。 取数据: 指令的执行可能会要求从存储器或I/O模块中读取数据。 处理数据:指令的执行可能会要求对数据进行算术或逻辑运算操作 写数据: 指令执行的结果可能需要写入存储器或者I/O模块中。 设计一个简化的CPUFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPU内部结构 设计一个简化的CPUFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPU内部寄存器 MAR(Memory Address Register)MAR存放着要从存储器中读取或要写入存储器的存储器地址。“读”定义
45、为CPU从内存中读。“写”定义为CPU把数据写入内存。 MAR拥有8比特,可以存取256个地址。 设计一个简化的CPUFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPU内部寄存器 MDR(Memory Data Register)MDR存储着将要被存入内存或者最后一次从内存中读出来的数值。MDR有16比特。 PC(Program Counter)PC寄存器用来跟踪程序中将要使用的指令。PC有8比特。 设计一个简化的CPUFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用CPU内部寄存器 IR(Instruction Register)IR存放指令的OPCODE(操
46、作码)部分。IR有8比特。 BR(Buffer Register)BR作为ALU的一个输入,存放着ALU的一个操作数。BR有16比特。 ACC(Accumulator)ACC保存着ALU的另一个操作数,而且通常ACC存放着ALU的计算结果。ACC有16比特。 设计一个简化的CPUFPGA-CPLD原理及应用 第6章 宏模块和LPM函数的应用 设计一个简化的CPU1. 程序(指令序列)预先存放在MEM里,程序执行时,需要从MEM中取指令。建议用调用库单元lpm_ram_dq的方法实现MEM。2. 恰当使用变量和信号:信号用于进程之间的通信;变量用于进程(以及函数、过程)内部保存数据。变量的新值可
47、在赋值语句执行后立即得到;而信号的新值在赋值语句执行后必须经过延迟才能得到。3. 某些信号(以及变量)需要受时钟控制,有些则不必受时钟控制。受时钟控制的信号所对应的硬件必定是寄存器;不受时钟控制的信号所对应的硬件有可能是组合逻辑,其成本较低,并且形成该信号的时延可能较小。设计要点FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集OPCODE15:8ADDRESS7:0分为两个步骤: 1) 将数据和程序(即指令序列)输入到计算机的存储器中。 2) 从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应
48、用CPU的指令集的指令集FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CLKRSTALU2ACC_in15.0c9_c171.0ACC_out15.0ACCinst6 累加器用于存放当前的结果,它也是双目运算其中一个数据来源。复位后,累加器的值是零。当累加器通过C9_C17口收到来自CPU控制器load_acc信号时,在clk时钟正跳沿时收到来自于数据总线的数据。 ACC (Accumulator) CPU电路组成电路组成FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用ALU is a
49、calculation unit which accomplishes basic arithmetic and logic operationsALU (Arithmetic Logic Unit) CPU电路组成电路组成CLKRSTBR2ALU_in15.0ACC2ALU_in15.0c16toc133.0ALU_out15.0ALU2MR_out15.0flagALUinst7FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用指令寄存器在clk的正沿触发下,寄存器将数据总线送来的指令存入8位寄存器中。CPU状态控制器的load_ir信号控制通过控制器C4 口输入到指令寄存器。复
50、位后,指令寄存器被 8 清为零。 每条指令为2个字节,即16位,高8位进入IR,低8位进入BR。IR (Instruction Register) CPU电路组成电路组成CLKRSTMBR2IR_in7.0c4IR_out7.0IRinst4FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用MAR contains the memory location of the word to be read from the memory or written into the memory. Here, READ operation is denoted as the CPU reads
51、from memory, and WRITE operation is denoted as the CPU writes to memory. MAR has 8 bits to access one of 256 addresses of the memory. MAR (Memory Address Register) CPU电路组成电路组成CLKRSTMBR2MAR_in7.0PC2MAR_in7.0c8_c21.0MAR_out7.0MARinst2FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用MDR contains the value to be stored in
52、 memory or the last value read from memory. MDR is connected to the address lines of the system bus. MDR has 16 bits. MDR (Memory Data Register) CPU电路组成电路组成CLKRSTMEM2MDR_in15.0ACC2MDR_in15.0c5_c111.0MDR_out15.0MDRinst14FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用PC keeps track of the instructions to be used in th
53、e program. In our design, PC has 8 bits.PC (Program Counter) CPU电路组成电路组成CLKRSTMBR2PC_in7.0c3_c101.0PC_out7.0PCinst3FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用MR is used for implementing the MPY instruction, holding the multiplier at the beginning of the instruction. When the instruction is executed, it holds par
54、t of the product. MR (Multiplier Register) CPU电路组成电路组成CLKRSTALU2MR_in15.0MR_out15.0MRinst9FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CAR (control address Register)Control MemoryInstruction registerSequencing logicControl Buffer RegisterControl SignalsMicro-programmed Control Unit CPU电路组成电路组成CLKRSTIR_in7.0flagcon
55、trol17.0CU2inst8FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用Micro-programmed Control Unit CPU电路组成电路组成控制器接受复位信号RST,当RST有效时通过信号control使其为0,输入到状态机中停止状态机的工作。状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU何时进行读指令读写I/O端口,RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数(从零计起)。CLKRSTIR_in7.0f lagcontrol17.0CU2ins
56、t8FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用Micro-programmed Control Unit CPU电路组成电路组成 状态控制器的主要思路为在8个时钟周期中对其进行不同的操作,具体如下:1) 第0个时钟,因为CPU状态控制器的输出,装入指令为高电平,其余均为低电平。指令寄存器寄存由ROM送来的高8位指令代码。 2) 第1个时钟,与上一时钟相比只是PC增1,ROM送来低8位指令代码,指令寄存器寄存该8位代码。 3) 第2个时钟,空操作。 4) 第3个时钟, PC增1, 指向下一条指令。 若操作符为HLT, 则输出信号HLT为高。 如果操作符不为HLT,除了PC增一外
57、(指向下一条指令),其它各控制线输出为零。 FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用Micro-programmed Control Unit CPU电路组成电路组成 状态控制器的主要思路为在8个时钟周期中对其进行不同的操作,具体如下: 5) 第4个时钟,若操作符为AND、ADD或LOAD,读相应地址的数据;若为JMP,将目的地址送给程序计数器;若为STORE,输出累加器数据。6) 第5个时钟,若操作符为AND、ADD,算术运算器就进行相应的运算;若为LOAD,就把数据通过算术运算器送给累加器;若为JMPGEZ,先判断累加器的值是否为0,如果为0,PC就增1,否则保持原值;
58、若为JMP,锁存目的地址;若为STORE,将数据写入地址处。 7) 第6个时钟,空操作。 8) 第7个时钟,若操作符为JMPGEZ且累加器值为0,则PC值再增1,跳过一条指令,否则PC无变化。FPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集MDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRACCmemoryMDRMARPCSTOREFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集MDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRmemoryACC0BRMDRACCACC+
59、BRMARPCLOADFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集ADDMDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRmemoryBRMDRACCACC+BRMARPCFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集SUBMDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRmemoryBRMDRACCACC-BRMARPCFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集MDRmemoryIRopcodeMDRMARMDR7-0 PC
60、PC+1MDRmemoryBRMDRACCACC and BRANDFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集ORMDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRmemoryBRMDRACCACC or BRMARPCFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集 NOTMDRmemoryIRopcodeMDRACCnot ACCPCPC+1MARPCFPGA-CPLD原理及应用第6章 宏模块和LPM函数的应用CPU的指令集的指令集MDRmemoryIRopcodeMDRMARMDR7-0 PCPC+1MDRmemor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服务器搭建运维达标检测卷含完整答案
- 软考中级全科历年真题(附答案)
- 桥梁工程管控达标检测卷含完整答案
- 河道生态管护全真模拟冲刺密卷含完整答案
- 四川乡镇定向选调历年真题(附答案)
- 护理文件书写规范解读
- 2026年广东省汕头市濠江区金南实验学校等校中考语文考前模拟试卷
- 内科护理中的临床实习
- 护理人员仪容仪表培训视频系列
- 内科护理教学与培训
- 易制爆安全培训内容
- 油库接地线施工方案
- 入门手冲咖啡知识培训课件
- 申报康复治疗学专业汇报
- 股指期货开户考试题库及答案
- 安全stop培训课件
- 小学语文教师选调进城考试试题4套(附答案)
- 医院院企合作模式探索与实践
- 无创呼吸机的模式及参数设置
- 药害鉴定管理办法
- 秦都区党费收缴管理办法
评论
0/150
提交评论