整理工作

前一段時間考試了數學,準備了三門課的presentation,沒有刷算法題,論文看的比較淺,對最近的工作總結,之後會對一些看過的論文做總結。

1. 組合數學

第一章-排列組合

介紹加法法則,乘法法則, 排列總數用P(n,r) 組合總數C(n,r),圓排列,可重排列,可重組合,非降路徑,非鄰組合
n個數中取出r個沿一圓周排列,稱爲一個圓周排列,所有的r-圓周排列數記爲 Q(n,r) **Q(n,r)=P(n,r)/r **

  • 可重集合數,非降路徑,可重組合數
  • 在這裏插入圖片描述
  • 非降路徑
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 不相鄰組合
    在這裏插入圖片描述

第二章 多項式定理

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

第三章 遞推關係

線性遞歸關係,非線性兩種

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

第四章生成函數

組合型生成函數,排列型生成函數,整數拆分-無序拆分,有序拆分

  • 組合型生成函數在這裏插入圖片描述
    在這裏插入圖片描述
  • 排列型生成函數在這裏插入圖片描述
  • 整數劃分
    • 有序劃分-等價於之前的可重組合數
      在這裏插入圖片描述
  • 無序劃分
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

第五章 Catalan數Strling數

  • Cantalan
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • Strling 數
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

第六章 容斥原理

容斥原理,錯排,有禁止模式的排列

在這裏插入圖片描述

  • 錯排數
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

第七章 鴿巢原理

在這裏插入圖片描述
後邊羣論有時間的話整理到近世代數博文中,本文整理的只是一個框架,很多證明細節以及知識點並沒有介紹。

2. latax

  1. 下載安裝texlive,還有很多教程文章,版本不同可能有一些不同

下文中整理了很多鏡像資源 https://liam.page/texlive/
安裝教程:https://zhuanlan.zhihu.com/p/90680879
http://www.javashuo.com/article/p-oouaxcmn-qr.html

  1. 下載安裝texStudio

不需要任何教程,下載安裝

  1. 使用教程

3. sopc綜述

整理的綜述文章

一. 引言

在傳統的系統級設計過程中,通常靠直覺和經驗來整體規整個系統結構。這樣它存在一些明顯的缺陷。第一,由於現代系統中軟件所佔比重越來越大,系統變得越來越複雜,依靠經驗和直覺已不可能得到系統的優化結構。第二,在傳統的系統級設計過程中,沒有對系統軟硬件進行集成測試。通常得到系統的結構之後,軟件和硬件被分開開發。在硬件原型被建立起來之後,才把軟硬件集成起來。在這個時候來對系統做某些修改已相當困難,這樣既浪費金錢,更浪費時間。特別是現在的消費類電子產品更新換代非常迅速。這就迫使我們必須革新設計方法,用軟硬件協同設計方法代替傳統的設計方法[1]。
軟硬件協同設計就是軟硬件併發設計,軟件、硬件工程師協作開發的過程。在設計早期、在系統級就能進行軟硬件的結構權衡分析、集成調試。通常系統設計者定義系統說明和劃分系統,接下來軟件工程師、硬件工程師併發設計,協作開發,軟硬件協同設計的整體目標就是要建立一個支持系統說明軟硬件劃分、軟硬件協同驗證和軟硬件協同綜合的統一設計方法。
建立這樣一個統一的設計方法有很多好處。第一,把很多系統包含進入到一個自動的或結構的設計方法,可以加速整個設計進程。第二是,用統一的設計方法來同時設計軟件和硬件部分可以隨着設計過程的進展,動態地進行軟硬件的權衡分析,使系統性能一次性達到比較優化的程度。

在這裏插入圖片描述
圖1.一般的軟硬件協同設計流程
軟硬件協同通常從系統級開始[2],通常的設計流程圖如圖1。首先爲系統建立一個原型,接下來用一種語言詳細說明系統的行爲,也就是描述好系統的功能,然後運行可執行的系統說明,確保系統功能正確。這些步驟完成之後,系統說明被分解成一些小塊的集合,這些小塊叫做粒度或基本塊。
接下來是耗費評估階段,對這些基本塊要決定一些耗費度量值。這些耗費度量包括對硬件和軟件實現的評估。例如硬件耗費度量包括執行時間、芯片面積、功耗和可測性;軟件耗費度量包括執行時間,要求的程序和數據存儲量。
耗費評估做完之後,軟硬件劃分階段開始也就是要把這些粒度基本塊映射到要用軟件或硬件來實現的目標基本塊上。爲了實現異構目標結構的系統,這個影射還需要ASIC與處理器之間的接口部分,以便實現通信與同步。
說明精煉過程將把獨立實現的說明轉化爲硬件和軟件說明,所有的說明都包括通信機制,允許處理器ASIC之間的數據交換接下來硬件從給定的說明中綜合出來,軟件說明針對被選擇的處理器進行編譯,這就是軟硬件協同設計階段。它的結果是得到一個ASIC集合和針對處理器組裝程序的集合。
在最後的協同仿真階段ASIC與執行軟件的處理器一起進行仿真。如果所有性能限制被滿足,設計耗費可以接受,協同設計過程結束。否則,重新劃分來優化設計,直至發現一個好的設計實現。
現在,軟硬件協同設計技術受到了人們的廣泛關注。它的應用範圍非常廣泛,適合混合軟硬件系統( Mixed Hardware- Software System),片上系統(System on Chip)和嵌入系統( Embedded System)。

二. SOPC概述

2.1 SOC介紹

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核的多層次、高度複用,可實現軟硬件的無縫結合,綜合性高。

2.2 SOPC技術的發展情況

近年來,隨着半導體技術的飛速發展,現代高密度現場可編程邏輯器件 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設計師已具有了設計較高性能的微處理器核的能力。

2.3 IP核

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%。

三. Nios II處理器

3.1 Nios II第二代軟核處理器簡介

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、西門子、思科、摩托羅拉、飛利浦、柯達、三星等。其應用領域正在向各個行業延伸,如移動通信、消費電子、醫療設備、汽車電子、軍事與航空等。

3.2 Nios II內核體系結構

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.