基于某FPGA软核,定制你地SoC
- 格式:doc
- 大小:2.86 MB
- 文档页数:21
FPGA硬核和软核处理器的区别SOPC技术,即软核处理器,最早是由Altera公司提出来的,它是基于FPGA的SOC片上系统设计技术。
是使用FPGA的逻辑和资源搭建的一个软核CPU系统,由于是使用FPGA的通用逻辑搭建的CPU,因此具有一定的灵活性,用户可以根据自己的需求对CPU进行定制裁剪,增加一些专用功能,例如除法或浮点运算单元,用于提升CPU在某些专用运算方面的性能,或者删除一些在系统里面使用不到的功能,以节约逻辑资源。
另外也可以根据用户的实际需求,为CPU添加各种标准或定制的外设,例如UART,SPI,IIC等标准接口外设,同时,用户也可以自己使用FPGA的逻辑资源,编写各种专用的外设,然后连接到CPU总线上,由CPU进行控制,以实现软硬件的协同工作,在保证系统性能的同时,增加了系统的灵活性。
而且,如果单个的软核CPU无法满足用户需求,可以添加多个CPU软核,搭建多核系统,通过多核CPU协同工作,让系统拥有更加灵活便捷的控制能力。
由于是使用FPGA资源实现的,所以具有很大的灵活性,可以实现根据需要实现多种处理器,如8051,RISC-V,Xilinx的 MicroBlaze ,Altera的Nios-II等等。
由于软核CPU是使用FPGA的通用逻辑资源搭建的,相较使用经过布局布线优化的硬核处理器来说,软核处理器够运行的最高实时钟主频要低一些,而且也会相应的消耗较多的FPGA逻辑资源以及片上存储器资源,因此SOPC方案仅适用于对于数处理器整体性能要求不高的应用,例如整个系统的初始化配置,人机交互,多个功能模块间的协调控制等功能。
所以,各大FPGA厂家推出了SoC FPGA技术,是在芯片设计之初,就在内部的硬件电路上添加了硬核处理器,是纯硬件实现的,不会消耗FPGA的逻辑资源,硬核处理器和FPGA逻辑在一定程度上是相互独立的,简单的说,就是SoC FPGA就是把一块ARM处理器和一块FPGA芯片封装成了一个芯片。
基于FPGA的SoC原型验证方法研究冯凌霄;张冰【摘要】在SoC设计的多种验证方法之中,基于FPGA的原型验证是一种较为贴近实际芯片的验证方法,可以大幅降低流片的风险,提高验证的效率和全面性.以一款基于OR1200的TD-LTE基带芯片为例,从原型验证的硬件平台设计、环境搭建以及验证的实现等方面阐述了基于FPGA原型验证的方法,并结合实际经验对原型验证中的一些问题提出了解决思路.【期刊名称】《电子设计工程》【年(卷),期】2014(022)016【总页数】4页(P44-47)【关键词】系统芯片;现场可编程逻辑门阵列;原型验证;验证方法【作者】冯凌霄;张冰【作者单位】江苏科技大学电子信息学院,江苏镇江212003;江苏科技大学电子信息学院,江苏镇江212003【正文语种】中文【中图分类】TN492SoC(system on chip,系统芯片)设计技术产生于上世纪90年代中期,随着集成电路产业的快速发展,SoC设计也在朝着规模更庞大,功能更复杂的方向发展。
对于如今的SoC设计而言,较大的逻辑规模使得代码的编写在整个设计中所占用的时间相对减少,更多的时间被用在了对芯片的验证上。
SoC设计的验证方法较为丰富,在实际工程中应用较多的有仿真验证、静态验证、形式验证、物理验证、以及基于FPGA的原型验证等[1]。
诞生近30年来,FPGA工艺技术日趋成熟,其功耗、成本不断降低,规模、速度以及易用性不断增强,使得FPGA的应用日益广泛。
原型验证就是FPGA的一个重要应用领域。
这种通过将SoC代码移植到FPGA平台上实现的验证方式,相对于传统的纯软件仿真验证手段可以节省更多的时间,便于软硬件的协同开发,同时能够降低流片风险,提高成功率。
本文通过一款以OpenRisc1200处理器为核心的基带芯片,阐述了原型验证硬件资源的整合、IP替换、顶层集成、测试激励仿真、综合实现以及硬件联调等FPGA 原型验证的软硬件平台构建和使用方法,有效的缩短了SoC开发时间,降低了成本,提高了流片成功率。
FPGA芯片结构工作原理与软核硬核固核详解FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它以其灵活性和可配置性在数字电路设计中广泛应用。
FPGA的结构和工作原理涉及到软核、硬核和固核等概念,下面将对这些内容进行详解。
首先,我们来看FPGA的结构。
FPGA通常包含三个主要的部分:可编程逻辑单元(PLU)、可编程的开关矩阵(Switch Matrix)和输入/输出资源(IOs)。
PLU是FPGA的核心部分,它由可编程的逻辑单元(Look-Up Tables,LUTs)和触发器(Flip-Flops)组成。
LUTs可以通过编程来实现特定逻辑功能,而Flip-Flops用于存储状态信息。
Switch Matrix 用于连接PLU中的逻辑单元,实现不同逻辑单元之间的信号传输。
IOs用于与外部设备进行数据输入和输出。
FPGA的工作原理基于可编程逻辑单元和开关矩阵的组合。
开发者可以使用硬件描述语言(如VHDL或Verilog)编写逻辑电路的描述,并通过设计软件将其映射到FPGA上。
软件工具会将逻辑电路的描述翻译成FPGA的配置位流(Configuration Bitstream),然后通过JTAG或其他方式将配置位流加载到FPGA中。
一旦配置完成,FPGA开始执行逻辑电路的功能,通过开关矩阵和PLU来实现信号的传输和处理。
通过重新编程可以改变FPGA中的逻辑电路功能,实现动态的功能更新。
接下来,我们来介绍软核、硬核和固核的概念。
软核(soft core)是指在FPGA芯片上实现的软件模拟的处理器。
软核是通过编程实现的,不同的开发者可以根据自己的需求来编写软核的代码。
软核具有灵活性,可以根据应用的要求进行修改和定制,但其性能通常低于硬核。
硬核(hard core)是指在FPGA芯片设计过程中由厂商提供的硬件IP核。
硬核是由硬件描述语言编写的,具有高性能和低功耗的特点。
引言随着经济和科学技术的发展,电梯在高层建筑物的作用越来越凸出。
目前电梯主要分为机械系统与控制系统两大部份,而电梯的控制系统主要有三种控制方式分别是:继电路控制系统(“早期安装的电梯多位继电器控制系统)、基于FPGA控制系统、微机控制系统。
实现继电路控制系统方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。
但是这些方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难,且该系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,已渐渐被人民淘汰。
微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷,没能广泛应用电梯中。
而基于FPGA的电梯控制系统由于可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。
本文给出一个基于FPGA的6层自动升降电梯控制系统的设计方案。
它的设计是采用通俗易懂的Verilog HDL硬件描述语言使用EDA技术在Quartus II软件平台上设计完成,程序设计、编译以及时序仿真通过后再下载到开发板配合外围电路(模拟电梯的电路)来验证该系统的可行性。
这个系统分主要有6个模块,分别是键盘响应寄存处理模块、上升/下降请求寄存处理模块、电梯运行和停止处理模块、开门/关门与延时处理模块、电梯运行方向判断模块和电梯运行状态显示模块。
通过模块化设计不仅提高了程序编程错误的排查能力还提高了系统的可靠性。
1 概论1.1 电梯国内外现状1.1.1国内现状电梯作为中国对外最早的行业经过多年的发展,电梯产品无论在数量和质量都有了显著的提高,和国外产品差距越来越小。
考虑到经济性,现有国内的电梯控制系统,通常采用微机或可编程逻辑控制器对变频器进行多段速控制。
1 引言由于FPGA的出现,使得我们不需要承担较大风险和较高的流片费用将小规模的或处于研发阶段的芯片制成ASIC芯片了。
而基于FPGA的SOC——SOPC(可编程片上系统),由于其可编程性,按照用户特定需要构建的SOPC是一个在某种程度上替代SOC的较好方案。
Altera公司为其FPGA开发了第二代软核嵌入式处理器NiosII,同时开发了用以构建基于NiosII处理器的SOPC Builder,使得用户可以通过自定义逻辑的方法方便地开发基于NiosII的SOPC系统。
SOPC Builder集成在EDA工具QuartusII中,提供了N iosII处理器及一些常用外设接口,如DMA控制器, SDRAM控制器,SPI接口以及锁相环PLL等等,对于一些库中没有提供的模块用户可以自己定义添加。
在实际应用中,具有I2C接口的EEPROM有着广泛的运用,本文就是在基于NiosII的SOPC中设计了一个EEPROM Controller Core,用Verilog HDL描述硬件逻辑部分,同时编写相关驱动,下载到Stratix系列的FPGA中实现了对片外EEPROM AT24C02的读写。
2 基于NiosII的Controller CoreSOPC中的各模块通过Altera公司开发的Avalon总线互连。
任何一个挂接在Avalon总线上的模块都必须符合Avalon总线规范,即包含特定的信号类型clk,reset,chipselect,write,writedata等,并满足一定建立保持时间和等待周期的读写模式。
一个典型模块的Controller Core由硬件和驱动软件两部分构成。
2.1硬件构成基于NiosII的Controller Core是用于构建SOPC的基本组件,它由HDL语言描述其硬件逻辑,一个典型的Controller Core由task logic(行为模块),register file(寄存器),interface(总线接口)三部分组成,它们在逻辑上的关联关系如图1所示:图1Controller Core在逻辑上的关联关系interface是顶层模块,与Avalon总线的直接接口;register file:通信模块,对模块内部寄存器读写的通道;task logic:行为模块,实现模块逻辑功能的核心部分。
摘要FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言(Verilog 或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,一个出厂后的成品FPGA的逻辑块的连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
本文设计的实验板目的就是验证所设计的电路的逻辑功能。
实验板以EP1C6Q240C8为主,配以存储器、数据配置、复位、实时时钟、I/O口分配、扩展接口、独立按键及LED、液晶显示、数码管显示、蜂鸣器和电源等功能电路。
而其中的独立按键及LED、液晶显示、数码管显示、蜂鸣器就是验证时的直接展现。
关键字:FPGA,硬件原理图,测验ABSTRACTFPGA(Field-Programmable Gate Array),It is based on the further development of the product of PAL、GAL、CPLD etc.. It is in the field of application-specific integrated circuit (ASIC)for a half customize the circuit, it solves the shortage, and custom circuit overcomes original programmable gate device limited number of faults. Now completed the above circuit design by the Hardware description language, can pass by the simple integrated and layout, rapid replication to test on FPGA, it is the mainstream of modern IC design verification. These can edit component can be used to achieve some basic logic gate(such as AND、OR、XOR、NOT ) or, more complex combination of some functions such as decoder or mathematical equations. In most of the FPGA, these can edit component also includes memory devices such as flip-flop or other more complete memory block. According to the system designer, through the FPGA links can edit the internal logic pieces together. One of the products of the factory, logical block of FPGA can be changed according to the designer, so the FPGA can complete the required logic functions.The purpose of this experimental plate is to verify that the logic function of circuit. The primary device is EP1C6Q240C8 on this experimental plate, use with the circuit of memory, Data configuration, reset, real-time clock, I/O port, expand interface, independent buttons and LED, LCD display, digital display, buzzers and power etc.. And that the independent buttons and LED, LCD display, digital display show directly of the checkoutKey Words: FPGA, Hardware diagram, quiz目录第1章绪论 (1)设计背景 (1)设计目的和意义 (2)论文的结构安排 (2)第2章 FPGA开发板原理图分析 (3)FPGA电路 (4)存储电路 (6)Flash存储器 (6)SRSM存储器 (7)SDRAM存储器 (8)配置电路 (9)复位电路 (11)时钟电路 (12)FPGA I/O口分配电路 (13)扩展接口电路 (13)外扩I/O口PACK2 (18)外设PACK接口电路 (18)FPGA扩展接口电路 (19)验证功能电路 (17)按键及LED电路 (17)蜂鸣器电路 (18)七段数码管显示电路 (18)液晶显示电路 (19)实时时钟电路 (19)电源电路 (24)系统电源电路 (24)FPGA电源电路 (25)第3章实验板的测验 (28)读取按键信号 (28)第4章结论 (27)参考文献 (28)致谢 (29)第1章绪论设计背景半导体技术一直遵循著名的摩尔定律持续地发展,回顾半导体的发展历史,当一种技术具有可编程特性时,它就会处于支配的地位。
FPGA芯片软核、硬核、固核知识及工作原理解析.一、内嵌专用硬核内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。
为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。
例如:为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。
高端产品不仅集成了Power PC系列CPU,还内嵌了DSP Core模块,其相应的系统级设计工具是EDK和Platform Studio,并依此提出了片上系统(System on Chip)的概念。
通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。
二、软核与硬核以及固核知识IP(Intelligent Property)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。
到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。
对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。
目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。
从IP核的提供方式上,通常将其分为软核、硬核和固核这3类。
从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。
1、软核软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。
软核只经过功能仿真,需要经过综合以及布局布线才能使用。
其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。
基于FPGA软核,定制你的SoC
Date: 2016 12.29
Author: Aric Wang
打造自己的CPU,自己的System On Chip!
本文以Step by step的方式Guide You来定制你自己的NIOS-II软核SoC,并创建C语言的流水灯测试程序,运行在自己做的CPU系统上。
软件:
Quartus II 12.0, Nios II 12.0 Software Build Tools For Eclipse. (在安装Quartus II时,所需软件一起安装。
)
硬件:
FPGA跑起Linux, UCOS-II等RTOS,是可行的,据相关人士的测试数据该软核在FPGA上性能介入ARM7-ARM9.
一,详细步骤定制
1,打开Quartus II 并且新建一个空的工程。
File -> New Project Wizard
Click the Next button.
Click Next.
选择与开发板对应的FPGA芯片。
Click Next
Click Next.
最后Finish. 如下图:
2,使用SOP Builder 工具来生成自己的软核Tools->SOP Builder
Click OK, if Qsys 提示.
从左边Panel的Tree 里选择Nios Processor 双击Processors->Nios Processor
Reset Vector是复位后启动时的Memory类型和偏移量 Exception Vector是异常情况时的Memory类型和偏移量。
现在还不能配置,需要RAM设置好以后才能修改这里.
一路点击Next,最后Finish.
接下面我们要添加片RAM 选择左边目录树下的
Memories and Memory Controllers -> On-Chip -> On-Chip Memory (RAM or ROM)
本例中我只使用1024bytes.
接下来建立一个SystemID
System ID就是一种标示符,类似校验和的这么个东西,在你下载程序之前或者重启之后,都会对它进行检验,以防止错误发生。
在左边窗口的Peripherals->
Debug and performance -> System ID Peripheral 双击System ID Peripheral
接下来创建JTAG UART
首先 JTAG UART是实现PC和Nios II系统间的串行通信接口,它用于字符的输入
输出,在Nios II的开发调试过程中扮演了重要的角色,接下来我们开始建立它的模块。
选择sopc builder主窗口左边 Interface Protocols-> Serial-> JTAG UART
接下来要添加一个PIO模块(Parallel I/O)
其中Width 表示要建立的PIO宽度是多少,我们的板上有8个LED,选择宽度为8,Direction复选框中表示要建立的PIO的方向,分别表
示 Bidirectional(tristate) ports (双向三态口) Input ports only (仅仅作为输入
口) Both input and output ports (作为输入和输出口) Output ports only (仅仅作为
输出口)
在本实验中,将要实现的是点亮LED,所以这个新建的PIO采用
Output ports only(仅输出口)方式
查看配置的结果:
重命名系统组件。
双击cpu并设置存
点击Finish.
执行System菜单上的Auto-Assign Base Addresses 自动分配一下地址。
开始编译,经过耐心等待后,程序编好了,查看下最后的输出如下:
最后一行显示Info: System generation was successful,产生成功。
点击Exit退出,会回到quartusii主界面。
新建一个Block Diagram/Schematic File
在丁板上双击左键:
点击,放在丁板上,
放好后,在NIOS软核kernel上点击右键后点击Generate Pins for symbol ports
双击out_port_from_the_pio_led[7..0]拉出来的端口符号,重命令
分配引脚有多种方法,常用的为tcl脚本分配,建立一个文件,取名为nios2.tcl,文件容如下:
set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT
TRI-STATED"
set_location_assignment PIN_16 -to clk_0
set_location_assignment PIN_17 -to reset_n
set_location_assignment PIN_10 -to led[0]
set_location_assignment PIN_11 -to led[1]
set_location_assignment PIN_26 -to led[2]
set_location_assignment PIN_35 -to led[3]
set_location_assignment PIN_27 -to led[4]
set_location_assignment PIN_28 -to led[5]
set_location_assignment PIN_33 -to led[6]
set_location_assignment PIN_34 -to led[7]
保存到工程目录下。
菜单上Tools-> Tcl Scripts 运行刚刚的脚本。
右击选
Device
Saveall,
会提示你nios2.bdf保存到哪里?直接点确认,我们此例中就保存在示例目录下
3,执行菜单Processing -> Start Compilation,开始进行编译
编译完成,下载固件程序到EPCS1或使用JTAG下载到RAM.
二,生成C语言的程序并调试运行
1,以管理员方式运行Nios II 12.0 Software Build Tools for Eclipse 新建一个测试程序:
点击Finish.
替换Demo程序的源码如下:#include"stdio.h"
#include"unistd.h"
#include"system.h"
#define _LED 1
typedef struct
{
unsigned long int DATA;
unsigned long int DIRECTION;
unsigned long int INTERRUPT_MASK;
unsigned long int EDGE_CAPTURE; }PIO_STR;
#ifdef _LED
#define LED ((PIO_STR*)PIO_LED_BASE) #endif
int main()
{
int i;
while(1)
{
for(i=0;i<3;i++){
LED->DATA = 1<<i;
usleep(50000);
usleep(50000);
}
}
}
重新编译:
此时连接好USB-Blaster,使用JTag模式,下载程序到FPGA的软核上。
可以到成功正常运行。
标准文案
!祝君成功!大全。