基于fpga的嵌入式cpu设计内容摘要:

现。 它排除了那些实现复杂功能的复杂指令,保留了经验证的能提高机器性能的指令。 另外还有将编译器作为机器的功能 RISC 微处理器使编译器能够直接访问基本的硬件功能,这些使得计算机结构更加简单、更加合理、更加有效。 指令经过精简后,计算机体系结构自然趋于简单。 在这个基础上,还克服了 CISC的许多缺点,从而使计算机速度更快,程序运行时间缩短。 集成电路设计方法 集成电路能够迅速发展和其设 计方法的进步是离不开的。 集成电路的设计方法主要经历了两个时代。 一是传统设计方法,二是利用可编程逻辑器件的硬件电路设计方法。 前者己有几十年的历史,比较成熟。 后者是在前者的基础上,并且利用了当今科技最新发展成果而建立起来的方法。 传统的硬件设计方法有以下几个主要特征 : 1) 采用自下至上的设计方法。 2) 采用通用的逻辑元、器件。 3) 在系统硬件设计的后期进行仿真和调试。 4) 主要设计文件是电原理图。 传统的硬件电路设计方法已经沿用几十年,是目前广大电子工程师所熟悉和掌握的一种方法。 但是,随着计算机技术、大规 模集成电路技术的发展这种传统的设计方法己大大落后于当今技术的发展。 一种崭新的,采用可编程逻辑器件的硬件电路设计方法己经兴起。 从 广义上讲,可编程逻辑器件是指一切通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。 目前常用的可编程逻辑器件主要有简单的逻辑阵列 (PAL/GAL)、复杂可编程逻辑阵列 (CPLD)和现场可编程逻辑阵列 (FPGA)等 3 大类: 1) PAL/GAL: PAL 是 Programmable Array Logic 的缩写,即可编程阵列逻辑; GAL 是Generic Array Logic 的缩写,即通用可编程阵列逻辑。 PAL/GAL 是早期可编程逻辑器件的发展形式,其特点是大多基于 E2CMOS 工艺,结构较为简单,可编程逻辑单元多为与、或阵列,可编程单元密度较低,仅能使用于某些简单的数字逻辑电路。 2) CPLD: CPLD 是 Complex Programmable Logic Device 的缩写 , 即复杂可编程逻辑器件。 CPLD 是在 PAL/GAL 的基础上发展起来的一般也采用 E2CMOS 工艺,也有少数厂商采用 Flash 工艺,其基本结构由可编程 I/O 单元、基本逻辑单元、布线池和其他辅助 功能模块构成, CPLD 可实现的逻辑功能比 PAL/GAL 有了大幅度的提升,一般可以完成设计中较复杂、较高速度的逻辑功能,如接口转换、总线控制等。 基于 FPGA 的嵌入式 CPU 设计 3 3) FPGA: FPGA 是 Field Programmable Gate Array 的缩写,即现场可编程逻辑阵列。 FPGA 是在 CPLD 的基础上发展起来的新型高性能可编程逻辑器件,它一般采用 SRAM 工艺,也有一些专用器件采用 Flash 工艺或反熔丝 (AntiFuse)工艺等。 FPGA 的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻 辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。 FPGA 的基本组成部分有可编程输入 /输出单元、基本可编程逻辑单元、嵌入式块 RAM。 FPGA 具有 丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。 FPGA 的设计流程 一般说来,完整的 FPGA 设计流程包括电路设计与输入、功能仿真、综合、综合后仿真、实现、布线后仿真与验证、板级仿真验证与调试等主要步骤: 1) 电路设计与输入:电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给 EDA 工具。 常用的设计输入方法有硬件描述语言 ( Hardware Description Language )和原理图设计输入方法等。 原理图设计输入法在早期应用的比较广泛,它根据设计要求,选用器件、绘制原理图、完成输入过程。 它虽然直观、便于理解,但它的维护性较差,不利于模块构造与重用。 目前进行大型工程设计时,最常用的方法是 HDL 设计输入法,其中影响最为广泛的 HDL 语言是 VHDL 和 Verilog HDL。 它们共同的特点是利用由顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构的不同而变化,更利于向 ASIC 的移植。 波型输入与状态机输入 方法是两种常用的辅助设计输入方法 [5]。 2) 功能仿真:电路设计完成后,要用专用的仿真工具对设计进行仿真,验证电路功能是否符合要求。 通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。 3) 综合优化 [5]:综合优化是指将 HDL 语言、原理图等设计输入翻译成由与、或、非门, RAM,触发器等基本逻辑单元组成的逻辑连接 (网表 ),并根据目标与要求 (约束条件 )优化所生成的逻辑连接,输出 edf 和 edn 等标准格式的网表文件,供 FPGA 厂家的布局布线器进行实现。 4) 综合后仿真:综合完成后需要检查总和结果是 否和原设计一致,作综合后仿真。 在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响 [6]。 综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确 [7]。 这种仿真的主要目的在于检查综合器的综合结果是否与设计输入一致。 5) 实现与布局布线 [8]:综合结构的本质是一些由与、或、非门,触发器, RAM 等基本逻辑单元组成的逻辑网表,它与芯片实际的配置情况还有较大差距 [9]。 此时应该使用FPGA/CPLD 厂商提供的软件工 具,根据所选芯片的型号,将综合输出的逻辑网表适配到具体的 FPGA/CPLD 器件上,这个过程就叫实现过程在实现过程中最主要的过程是布局布线 (PAR, Place And Route):所谓布局 (Place)是指将逻辑网表中的硬件原语或者地层单元合理地适配到 FPGA 内部的固有硬件结构上,布局的优劣对设计的最终实现结果 (在速度和面基于 FPGA 的嵌入式 CPU 设计 4 积两个方面 )影响很大。 所谓布线 (Route)是指根据布局的拓扑结构,利用 FPGA 内部的各种连线资源,合理正确连接各个元件的过程 [10]。 6) 时序仿真与验证:将布局布线的时延信息发标注到 设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,简称后仿真。 布局布线之后生成的仿真时延文件包含的时延信息最全,不仅包含门延时,还包含实际布线延时,所以布线后仿真最准确,能较好地反映芯片实际的工作情况。 一般来说,布线后仿真步骤必须进行,通过布局布线后仿真能检查设计时序与 FPGA 实际运行情况是否一致,确保设计的可靠性和稳定性。 布局布线后仿真的主要目的在于发现时序违规 (Timing Violation),即不满足时序约柬条件或者器件固有时序规则 (建立时间、保持时间等 )的情况。 7) 板级仿真与验证:在有些高 速设计情况下还需要使用第三方的板级验证工具进行仿真与验证。 这样可以较好地分析高速设计的信号完整性、电磁干扰 (EMI)等电路特性。 本文的目的和意义 随着大规模集成电路技术日益成熟,通信技术、计算机技术、网络技术及家用电器产业飞速发展,嵌入式微处器的应用越来越广泛。 嵌入式系统的硬件通常包括 CPU、存储器和各种外设器件,其中 CPU 是系统的核心,其重要性不言而喻。 基于 FPGA 的嵌入式系统具有设计周期短、产品上市速度快、设计风险和设计成本低、集成度高、灵活性大、维护和升级方便、硬件缺陷修复和排除简单等优 点。 由于 FPGA 设计是以软核的设计和使用为主的,随着基于 FPGA 的嵌入式系统的设计技术和市场的成熟,嵌入式 CPU 软核的大量应用成为了可能。 但针对的不同的应用层所选用的 CPU 会有很大的差异,因此在的嵌入式系统的设计过程中对效能、功耗与成本等变量进行应进行多方考虑。 其中,通过 IP 软核授权的方案能让厂商加快产品上市时程,但同时会引起成本的上升,并且厂商要获得这些IP 核不是件容易的事。 因此通过设计具有自主知识产权的 CPU 软核对于厂商乃至我国的嵌入式产业的发展有着重要意义。 本文设计一个基于 FPGA 的 CPU,具体设计 为 16 位的 RISC CPU,采用哈佛结构。 采用自顶向下的设计方法,数据总线和地址总线均为 16 位。 CPU 是一个复杂的系统,通过基于 FPGA 的 RISC CPU 的设计可以较好地掌握 FPGA 的设计的一般流程,熟悉计算机系统的组成原理,能很好地考查这大学四年来所学有知识,培养独立分析问题、解决问题的能力和初步进行科学研究的能力以及创新意识、创新能力和获取新知识能力的训练。 通过锻炼使用所学的专业知识分析 CPU 设计的原理,可以为日后的进行相关的设计工作或进一步的深造打下很好的基础。 基于 FPGA 的嵌入式 CPU 设计 5 2 系统方案 基于 单 片机的工业生产节能时控器的系统是由 AT89C2051单片机,按键输入,数码管显示器,继电器,蜂鸣器及电源等 6部组成。 工业生产节能时控器 系统的结构 单片机是整个系统的核心,整个系统的所有运行均由单片机完成,如生产精确时钟及计时, LED 数码管显示器输出扫描显示,输出驱动继电器,驱动蜂鸣器,扫描按键输入等。 按键输入电路负责输入单片机中一系列工作参数及功能设定,如进行走时设置,定时设置等。 LED 数码管显示器主要用以显示走时及定时设置。 其采用程序动态扫描显示,这样与静态显示相比, 可节 约大量的外部元器件。 电源部分负责对整个系统供电。 平时,交流电经降压,整流,过滤,稳压成 5V 直流电源供系统工作。 当交流电源断电时,则由 电池进行后背供电,保证走时准确,但此时 LED 数码管显示器关闭,以降压 电池的消耗。 图 2 工业生产节能时控器方框图 单片机 按 键 输 入 蜂鸣器 继电器 电源 基于 FPGA 的嵌入式 CPU 设计 6 单片机计时原理 单片机作精确的电子钟使用,其根本原因是利用了单片机内部的 一个 16位定时器( T0或 T1),通过设置,使 T0(或 T1) 产生一定时间(如 100ms)的精确定时中断。 另外,还需建立几个软件计数器单元(如 deda,sec,min等),使 sec加 1,同时清除 deda。 当 sec满 60时(此时时间为 60s),使 min加 1,同时清除 sec。 这样既可完成精确计时。 由于软件编程的灵活性,实际上可随意做出任意进制的正计时或倒计时电子钟。 如图 3 为单片机构成电子钟的原理图。 Y Y Y 图 CPU的基本结构 CPU 的功能及模块的划分 计算机进行信息处理可分为两个步骤: 首先将数据和程序 (即指令序列 )输入到计算机的存储器中。 接着从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。 CPU的作用 是协调并控制计算机的各个部件执行程序的指令序列,使其有条不紊地进行。 因此它必须具有以下基本功能: 1) 取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。 2) 分析指令:即指令译码。 是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。 3) 执行指令:根据分析指令时产生的 “ 操作命令 ” 形成相应的操作控制信号序列,通过运算器,存储器及输入 /输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。 流水线设 计 100ms 单 元 (ded) 加 1 Sec 单元 加 1 Sec=60? ded=10? min 单元 加 1 min=60? 数码管显示器 N N N T0 定时器100ms 定时中 断 Hour 单元 加 1 基于 FPGA 的嵌入式 CPU 设计 7 对于一条指令的从执行到完成的过程中,更加合理的划分方式是将其划分为取指、译码、执行、存储器操作、写回寄存器等 5 阶段。 在传统的处理器中,这 5 个阶段的执行由指令取指部件、指令译码部件、指令执行部件、存储器操作部件、寄存器回写部件 5 个独立的功能部件完成。 对于非流水线的 CPU 来说,这 5 个阶段在时间上是分时进行的,即指令的 5 个阶段是在时间上是顺序执行的。 这种指令执行方式又称为串行执行。 在串行执行方式中,如果指令取指、译码、执行、存储器操作、写回寄存器等 5 阶段完成的时间相等,若每段时间都等于 t,则执行 n 条指令的 时间为: T= 3 n t。 这种非流水线结构的 CPU 实现起来相对简单,但控制器执行指令的速度慢,只有当上一条指令执行完之后,才能开始下一条指令的执行;并且功能部件利用率低,在某一时间内,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。