前一段时间考试了数学,准备了三门课的presentation,没有刷算法题,论文看的比较浅,对最近的工作总结,之后会对一些看过的论文做总结。
介绍加法法则,乘法法则, 排列总数用P(n,r) 组合总数C(n,r),圆排列,可重排列,可重组合,非降路径,非邻组合
n个数中取出r个沿一圆周排列,称为一个圆周排列,所有的r-圆周排列数记为 Q(n,r) **Q(n,r)=P(n,r)/r **
线性递归关系,非线性两种
组合型生成函数,排列型生成函数,整数拆分-无序拆分,有序拆分
容斥原理,错排,有禁止模式的排列
后边群论有时间的话整理到近世代数博文中,本文整理的只是一个框架,很多证明细节以及知识点并没有介绍。
- 下载安装texlive,还有很多教程文章,版本不同可能有一些不同
下文中整理了很多镜像资源 https://liam.page/texlive/
安装教程:https://zhuanlan.zhihu.com/p/90680879
https://blog.csdn.net/weixin_41803874/article/details/88089317
- 下载安装texStudio
不需要任何教程,下载安装
- 使用教程
整理的综述文章
在传统的系统级设计过程中,通常靠直觉和经验来整体规整个系统结构。这样它存在一些明显的缺陷。第一,由于现代系统中软件所占比重越来越大,系统变得越来越复杂,依靠经验和直觉已不可能得到系统的优化结构。第二,在传统的系统级设计过程中,没有对系统软硬件进行集成测试。通常得到系统的结构之后,软件和硬件被分开开发。在硬件原型被建立起来之后,才把软硬件集成起来。在这个时候来对系统做某些修改已相当困难,这样既浪费金钱,更浪费时间。特别是现在的消费类电子产品更新换代非常迅速。这就迫使我们必须革新设计方法,用软硬件协同设计方法代替传统的设计方法[1]。
软硬件协同设计就是软硬件并发设计,软件、硬件工程师协作开发的过程。在设计早期、在系统级就能进行软硬件的结构权衡分析、集成调试。通常系统设计者定义系统说明和划分系统,接下来软件工程师、硬件工程师并发设计,协作开发,软硬件协同设计的整体目标就是要建立一个支持系统说明软硬件划分、软硬件协同验证和软硬件协同综合的统一设计方法。
建立这样一个统一的设计方法有很多好处。第一,把很多系统包含进入到一个自动的或结构的设计方法,可以加速整个设计进程。第二是,用统一的设计方法来同时设计软件和硬件部分可以随着设计过程的进展,动态地进行软硬件的权衡分析,使系统性能一次性达到比较优化的程度。
图1.一般的软硬件协同设计流程
软硬件协同通常从系统级开始[2],通常的设计流程图如图1。首先为系统建立一个原型,接下来用一种语言详细说明系统的行为,也就是描述好系统的功能,然后运行可执行的系统说明,确保系统功能正确。这些步骤完成之后,系统说明被分解成一些小块的集合,这些小块叫做粒度或基本块。
接下来是耗费评估阶段,对这些基本块要决定一些耗费度量值。这些耗费度量包括对硬件和软件实现的评估。例如硬件耗费度量包括执行时间、芯片面积、功耗和可测性;软件耗费度量包括执行时间,要求的程序和数据存储量。
耗费评估做完之后,软硬件划分阶段开始也就是要把这些粒度基本块映射到要用软件或硬件来实现的目标基本块上。为了实现异构目标结构的系统,这个影射还需要ASIC与处理器之间的接口部分,以便实现通信与同步。
说明精炼过程将把独立实现的说明转化为硬件和软件说明,所有的说明都包括通信机制,允许处理器ASIC之间的数据交换接下来硬件从给定的说明中综合出来,软件说明针对被选择的处理器进行编译,这就是软硬件协同设计阶段。它的结果是得到一个ASIC集合和针对处理器组装程序的集合。
在最后的协同仿真阶段ASIC与执行软件的处理器一起进行仿真。如果所有性能限制被满足,设计耗费可以接受,协同设计过程结束。否则,重新划分来优化设计,直至发现一个好的设计实现。
现在,软硬件协同设计技术受到了人们的广泛关注。它的应用范围非常广泛,适合混合软硬件系统( Mixed Hardware- Software System),片上系统(System on Chip)和嵌入系统( Embedded System)。
SOC(System on Chip)是指将一个完整产品的各功能集成在一个芯片中,可以包括有CPU、存储器、硬件加速单元(AV处理器、DSP、浮点协处理器等)、通用 I/O、UART接口和模数混合电路(放大器、比较器、A/D、D/A、射频电路、锁相环等),甚至延伸到传感器、微光电单元。并且它通常是客户定制, 是面向特定用途的标准产品。
在集成电路(IC)发展初期,电路设计主要是器件的物理版图设计。IC是半导体元件产品的统称,包括:集成电路,三极管,特殊电子元件等。SOC的设计思想有别于普通 IC,SOC从整个系统的角度出发,把处理机制、模型算法、芯片结构直至器件的设计紧密结合起来,在单个(或少数几个)芯片上实现整个系统的功能。SOC的设计以IP核为基础,以分层次的硬件描述语言为系统功能和结构的主要描述手段,并需要借助 EDA 工具。SOC设计方法则以设计复用(Reuse)或功能组装为基础,SOC设计实质上是把各个子系统的IP核组装为一个大的片上系统[3][4]。
SOC系统的构建一个重要特性就是使用可重用的IP来构建系统,可以缩短产品的开发周期,降低开发的复杂度,可重复利用的IP包括元件库、宏及特殊的专用IP等,如通信接口IP、输入输出+接口IP,各家开发商开发的微处理器IP,如ARM公司的RISC架构的ARM核。SOC嵌入式系统就是微处理器的IP再加上一些外围IP整合而成的。SOC以嵌入式系统为核心,集软、硬件于一体,并追求最高的集成度,是电子系统设计追求的必然趋势和最终目标,是现代电子系统设计的最佳方案。SOC是一种系统集成芯片,其系统功能可以完全由硬件完成,也可以由硬件和软件协同完成。
SOC初衷很好,但现实中却缺乏好的解决方案,由于是基于ASIC实现SOC系统,设计周期长、费用高昂、成功率不高而且产品不能修改显得系统的灵活性差,往往使得学术科研机构、中小企业难以承受。但是SOC以系统为中心基于IP核的多层次、高度复用,可实现软硬件的无缝结合,综合性高。
近年来,随着半导体技术的飞速发展,现代高密度现场可编程逻辑器件 FPGA(Field Programmable Gate Array)的设计性能及性价比已完全能够与 ASIC(Application Specific Integrated Circuit)抗衡,在这样的背景下,一种被称SOPC(System on a Programmable Chin)的新技术出现了。
SOPC 是一种灵活、高效的SOC解决方案,它将处理器、存储器、I/O口、LVDS等系统需要的功能模块集成到一个PLD器件上,构成一个可编程的片上系统,它是PLD与SOC技术融合的结果。由于它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件可编程的功能。这种基于PLD可重构 SOC的设计技术不仅保持了SOC以系统为中心、基于IP模块多层次、高度复用的特点,而且具有设计周期短、风险投资小和设计成本低的优势。相对ASIC 定制技术来说,FPGA是一种通用器件,通过设计软件的综合、分析、裁减,可灵活地重构所需要的嵌入式系统。
在过去的几年中,几种RISE(Reduced Instruction Set Computing精简指令集 )软核处理器相继面世,使用SOPC开发产品或进行产品的原型设计,可有效降低产品上市风险、降低开发成本、缩短产品上市周期。
目前已有几家IC供应商能够提供 SOPC,其中最为典型和著名的公司有 Atmel、Xilinx和 Altera。Atmel 公司于1999年开发出首个基于RISC的现场可编程系统级集成电路FPSLIC(Field Programmable System Level IC,现场可编程的系统级集成电路)。Xilinx公司的SOC芯片型号为Spartan系列、Virtex系列、XC4000和XC9500系列,Altera公司的 SOC芯片为 Cyclone系列,Stratix。除此之外,推出SOPC芯片的公司还有:Triscend、IDT、Genesis、Cygnal、Cypress等公司[5]。
同样, SOPC技术在我国也受到前所未有的重视,如国家科技部超大规模集成电路SOC专项工作,内容包括:关键电子信息产品核心芯片开发,SOC设计关键技术和制造技术,超大规模集成电路设计产业化环境建设等。此外,我国在嵌入式微处理器IP核方面也有了长足进展,如北大计算机系的JBCore32中芯微系统的方舟一号,中科院计算机所的GODSON,这些32位微处理器核可以证明中国的 IC设计师已具有了设计较高性能的微处理器核的能力。
IP (Intellectual Property)是知识产权的简称,SOC和SOPC在设计上都是以集成电路IP核为基础的。集成电路IP是经过预先设计、预先验证、符合产业界普遍认同的设计规范和设计 标准,并具有相对独立并可以重复利用的电路模块或子系统,如CPU、运算器等。集成电路IP模块具有知识含量高、占用芯片面积小、运行速度快、功耗低、工 艺容差性大等特点,还具有可重用性,可以重复应用于SOC、SOPC或复杂的ASIC的设计当中。
IP软核通常是用HDL文本形式提交给用户,它经过RTL级设计优化和功能验证,但其中不含有任何具体的物理信息[6][7]。据此,用户可以综合出正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性,借助于EDA综合工具可以很容易地与其他外部逻辑电路合成一体,根据各种不同半导体工艺,设计成具有不同性能的器件,软IP内核也称为虚拟组件(VC-Virtual Component)。
IP硬核是基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能[6][7]。其提供给用户的形式是电路物理结构掩模版图和全套工艺文件,是可以拿来就用的全套技术。
IP固核的设计程度则是介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。一般以门级电路网表的形式提供给用户。
在SOPC的设计中,主要实现方式包括三种:
(1)基于FPGA嵌入IP硬核的SOPC系统:是指在FPGA中预先植入处理,最常用的是含有ARM32位知识产权处理器核的器件。为了达到通用性,必须为常规的嵌入式处理器集成诸多通用和专用的接口,但增加了成本和功耗。如果将ARM或其他处理器核以硬核的方式植入FPGA中,利用FPG中的可编程逻辑资源,按照系统功能需求来添加接口功能模块,既能实现目标系统功能,又能降低系统的成本和功耗。这样就能使得FPGA灵活的硬件设计与处理器的强大软件功能有机地结合在一起,高效地实现SOPC系统。
(2)基于FPGA嵌入IP软核的SOPC系统:IP硬核直接植入FPGA存在很多不足,IP硬核多来自第三方公司,FPGA厂商无法控制费用,导致FPGA期间价格相对偏高,IP硬核预先植入,使用者无法根据实际需要改变处理器结构,更不能嵌入硬件加速模块(DSP),硬核也无法根据实际设计需要在同一FPGA中集成多个处理器,无法裁剪处理器硬件资源降低FPGA成本,只能在特定的FPGA中使用硬核嵌入式处理器,因此推出了嵌入IP软核的方案。IP软核能有效克服上述不足,目前最优代表性的软核处理器分别是Altera公司的Nios II核, 以及Xilinx公司的MicroBlaze核,特别是Nios核,就能很好的解决上述硬核带来的问题。Altera的Nios II核是用户可以随意配置核构建的32位嵌入式处理器IP核,采用Avalon总线结构通信接口。在费用方面,由于NiosII是由Altera公司直接提供而非第三方厂商产品,故用户通常无需支付知识产权费用,Nios II的使用费用仅仅是其占用的FPGA逻辑资源的费用[11]。在下一节中将会重点介绍。
(3)基于HarCopy技术的SOPC系统:HardCopy就是利用原有的FPGA开发工具,将成功实现与FPGA器件上的SOPC系统通过特定的技术直接向ASIC转化,从而克服传统ASIC设计中普遍存在的问题,ASIC开发存在的问题包括开发周期长,产品上市慢,一次性成功率低,有最少投片量要求,设计软件工具繁多且昂贵,开发流程复杂等。 HardCopy技术是一种全新的SOC级ASIC设计解决方案,即将专用的硅片设计和FPGA至HardCopy自动迁移过程结合在一起的技术,首先利用Quartus II将系统模型成功实现于HardCopy FPGA上,然后帮助设计者把可编程解决方案无缝地迁移到低成本的ASIC上。这样,HardCopy期间就把大容量FPGA的灵活性和ASIC的市场优势结合起来,实现对于有较大批量要并对成本敏感的电子产品上,从而避开了直接设计ASIC的困难。利用HardCopy技术设计ASIC,开发软件费用少,SOC级规模设计周期不超过20周,转化的ASIC与用户设计习惯的掩模层只有两层,且一次性投片的成功率近乎100%, 即所谓的FPGA向ASIC的无缝转化[8]。用ASIC实现后的系统性能将比原来在HardCopy FPGA上验证的模型提高近50%, 而功耗则降低40%。
2000年发布的Nios软核处理器是Altera的Ex-calibur嵌入式处理器计划中的第一个产品, 是当时业界第一款为可编程逻辑优化的可配置处理器[11]。Nios将CPU与FPGA的功能集于一身,既简化了电路板设计,又不存在接口速率瓶颈问题,因而可使整个系统在一块芯片上完成。随后,在第一代处理器获得成功的基础之上,Altera公司于2004年6月又推出了性能更好的第二代软核处理器Nios II。与第一代产品相比,Nios II的最大处理性能提高了3倍,而CPU内核面积则缩小了1/2。
Nios II处理器具有完全可定制和可重新配置特性,能在多种系统设置组合中进行选择,这样,既满足了成本要求,又能实现功能的多样化。同时,软核处理器可以很方便地实现现场软硬件升级, 使产品符合最新规范并具备最新特性, 从而帮助用户迅速将产品推向市场。目前,众多国际知名公司已将Nios II应用到自己的产品当中,包括IBM、西门子、思科、摩托罗拉、飞利浦、柯达、三星等。其应用领域正在向各个行业延伸,如移动通信、消费电子、医疗设备、汽车电子、军事与航空等。
Nios II是采用流水线技术和哈佛结构的通用RISC处理器,其结构框图如图 2所示。其中算术逻辑单元用来完成数据处理任务,用户逻辑接口可连接用户定制逻辑电路和 Nios II内核,由于该处理器采用哈佛结构,因此其数据总线和指令总线分开,紧耦合存储器不仅能改善系统性能,而且可以保证装载和存储指令或数据的时间的准确,中断控制器和异常控制器分别用于处理外部硬件中断事件和内核异常事件,Nios II的寄存器文件包括32个通用寄存器和6个控制寄存器, 并允许将来添加浮点寄存器,为调试方便,Nios II还集成了一个JTAG调试模块。
图2. Nios II处理器结构框图
Nios II处理器具有3种可配置类型: Nios II/e(经济型),Nios II/s(标准型)和Nios II/f (快速型)。其中, Nios II/e消耗的FPGA资源最少,但性能最低,Nios II/f性能最高,但消耗资源最多,Nios II/s介于二者之间。
3.3 Nios II外围设备
Nios II系统包含可在FPGA中实现的标准外围设备库。设计者能够利用SOPC Builder开发工具来添加所需外设,并配置映像地址,主/从关系和中断优先顺序等。Nios II外围设备库包含的常用外设及其功能如表1所列[12]。
表1. Nios常用外围设备
3.4 Avalon接口规范
在系统总线方面,Nios II采用Avalon交换式总线结构。Avalon总线是Altera公司为SOPC系统开发的一种专用内部连线技术,是一种理想的、用于处理器和外设之间的内联总线。如图3所示为Avalon交换结构体系。图中的Avalon同时多主机体系结构可提高系统带宽,消除带宽瓶颈,从而实现无与伦比的系统吞吐量。
图3. Avalon交换结构体系
3.5 提高Nios II处理器性能的几种方法
Nios II作为一种嵌入式软核处理器,其最大的优点是设计可裁剪,灵活性强。但使用过Nios II进行工程设计的用户往往感觉在系统性能上,Nios II相比于其他CPU (如ARM处理器等)没有太大提高。以下提出的几种方法,可以在提高处理速度和减少资源占用两个方面改善Nios II处理器性能。事实上, 只有在性能方面有所提高时,Nios II真正的实用价值才能得以体现,从而为更多设计者所采纳。
(1)定制Nios II用户指令
Nios II处理器允许设计者通过添加定制用户指令的方式,把一个复杂的标准指令序列简化为一条用硬件实现的单个指令,以减少系统中关键算法的耗时, 增强实时处理能力。特别是在一些需要大量DSP算法的场合,通过定制一些诸如复数乘法或乘加等DSP运算指令, 可以使Nios II系统具有常规DSP处理器的功能。
Nios II处理器可支持多达256条的用户自定制指令,并拥有包括组合逻辑指令、多周期指令、扩展指令、内部寄存器文件指令和扩展接口指令在内的5种硬件结构,以适应不同应用的需要。对于标准指令,Nios II使用ALU进行相应的算术逻辑操作,而对于定制指令,则采用外部用户建立的硬件逻辑单元来完成运算。通过采用定制指令,设计者能实现传统处理器无法达到的最佳系统性能。
(2)定制基于Avalon的用户外设
定制用户外设是SOPC系统设计的重要特性。对于某些Nios II系统, 假如需要运行某个程序来处理大量数据,就可能占用相当多的CPU资源,进而导致系统性能无法达到设计要求。在这种情况下,用户可以自己定义一个外设并集成到Nios II系统中来处理大量数据,这种外设就称为用户自定义外设。使用合适的用户自定义外设能从两方面改善系统性能: 一是用硬件实现某种处理(一般都比软件速度快),从而提高系统的实时处理能力;二是节省CPU资源,从而使Nios II可以完成其它任务,这样也就相当于节省了系统面积,提高了系统集成度。
(3)使用C2H
为了提高Nios II处理器的性能和设计效率,Altera公司提供了C语言至硬件加速编译器C2H,C2H是一种能够提升对时间性能要求较高的ANSI C函数工具。与通用CPU相比,它可以充分利用FPGA的并行处理结构,在每个时钟周期内完成更多的运算操作。C2H帮助Nios II设计者以最少的资源消耗来达到提高系统性能的目的。经过Nios II处理器C2H加速后的软件性能可以提高10~45倍, 而额外消耗的逻辑资源仅比处理器本身多出了0.7~2.0倍。
C2H编译器的使用非常简单,设计者只需要在编写好应用程序后,通过分析软件代码并找出产生性能瓶颈的函数,然后在Nios II IDE中高亮显示要处理的函数并右击加速,便可生成自动链接至软件流程的硬件加速器。
[1] 廖永波. SOC软硬件协同方法及其在FPGA芯片测试中的应用研究[D], 电子科技大学, 2010年.
[2] 邹晨, 高云. FPGA内嵌处理器的SOPC系统设计与分析[J]. 航空计算技术, 2013, 043(005):123-127.
[3] 韩涵. 基于SOPC的嵌入式系统应用研究[D],西安电子科技大学,2013年.
[4] FPGA学习之嵌入式硬件系统(SOPC)概述[DB/OL]. https://blog.csdn.net/sinat_41653350/article/details/106240447.
[5] Altera新款Cyclone II FPGA比前一代成本低30%[J], 单片机与嵌入式系统应用.
[6] 肖可, 廖文芳, 杜丹蕾. SOPC技术现状及发展分析[J].科技信息, 2012年35期.
[7] 董星. 基于FPGA的存储控制器及相关系统设计技术研究[D], 浙江大学,2017年.
[8]电子发烧友. 硬件加速器 - FPGA的系统设计实现方案[DB/OL].
http://www.elecfans.com/article/83/116/2016/20160224403259_3.html
[9] ChinaAET电子技术应用. 什么是FPGA硬件加速[DB/OL].
https://www.sohu.com/a/316292473_781333.
[10] 黄佳玮,陈福深. 基于NiosⅡ的SOPC嵌入式系统设计[J]. 电子元器件应用, 2013 (07):53-56.
[11] 沈其磊. FPGA内嵌Nios-II软核的技术研究[D],华东理工大学,2015年.
[12] CPU主频比FPGA快,但为啥FPGA才可以加速?[DB/OL].
https://www.eefocus.com/fpga/405870.