1. 程式人生 > >基於我自己的簡歷,專案經歷怎麼去說

基於我自己的簡歷,專案經歷怎麼去說

對於專案1而言,

1)傳統網路與SDN的區別吧:

最核心的也就是上面的一張圖!

傳統網路中,主要有三層:資料層,控制層、管理層。儘管交換機、路由器裝置對這些功能邏輯進行了較好地區分,但是路由器的設計和實現都變得異常複雜。

資料層:依據轉發資訊表進行報文解析、查表、過濾匹配和埠對映等報文轉發功能;

控制層:種報文轉發控制功能,eg:支援IP路由協議更新路由表,根據使用者配置和過濾功能靜態或動態生成ACL等轉發資訊表

管理面:支援使用者對網路裝置的配置管理,eg:實現命令列介面(command and line interface, CLI)和簡單網路管理協議(simple network management function , SNMP)功能。

注:RIP協議的作用:

負責從網路系統的其它路由器接收路由資訊,從而對本IP層路由表作動態的維護,保證IP層傳送報文時選擇正確的路由。同時負責廣播本路由器的路由資訊,通知相鄰路由器作相應的修改。路由表由“區域網上能達到的IP地址與該網路的距離兩部分組成。RIP路程段數(即跳數)作為網路距離的尺度,跳數最高為15跳。

軟體定義網路中,核心的思想就是:把交換/路由裝置的控制面功能從硬體中剝離出來,由可以在PC(personal computer,個人計算機)或伺服器上自由程式設計的軟體實現,再簡化交換硬體裝置,讓它們成為可程式設計控制的“傻瓜型”交換裝置。

轉發層

:Open Flow交換機由流表、安全通道和Open Flow協議三部分組成,Open Flow交換機接收到資料報文後,首先查詢流表,找到轉發報文的匹配,並執行相關動作。若找不到匹配表項,則把報文轉發給控制層,由控制器決定轉發行為

控制層:更新Open Flow交換機中的流表,實現對整個網路流量的集中管控。為上層應用提供全域性的網路抽象檢視,並由軟體實現,擺脫硬體網路裝置對網路控制功能的捆綁

應用層:控制層提供的網路抽象進行程式設計,操控各種流量模型。

2)SDN中控制器架構示意圖

水平架構:控制節點位於網路中的同一層,所處理的資訊和接收的任務內容基本相同,相互之間沒有優先順序高低之分

垂直架構:垂直架構則在水平架構之上又添加了更高階的控制層。

3)控制器與交換機的連線模式

帶外模式:控制器與其負責管理的所有交換機之間都有專用的控制流通道。

優點:控制流的傳輸路徑清晰且速度快

缺點:單個控制器管理的域範圍較廣,網路裝置的開銷尤為巨大

帶內模式:控制器僅與其域內的部分交換機之間建立控制流通道其它的交換機則需要通過資料通道才能實現對控制器的請求和訪問

優點:減輕了控制器部署的成本

缺點:當鏈路資源趨於緊張時,控制流資料流甚至會產生競爭

4)單控制器控制單交換機下處理資料包的效能研究

如圖4所示(從右往左理解)。將Open Flow架構抽象為一種面向反饋排隊系統模型,假設系統是馬爾科夫型的,則模型可進一步簡化為M/M/1的轉發佇列模型M/M/-S的反饋佇列模型交換機端的流到達過程,是資料分組以從線速卡中以速率為\[{\lambda _{\rm{0}}}\]的到達過程和控制器反饋回來以安裝流表項的分組到達過程二者之和。

注:M/M/1:First 'M' :描述的是一種到達過程的概率分佈,M表示著到達過程滿足泊松分佈

Second 'M':描述的是一種服務/離開過程的概率分佈,這裡的M表示的是離開過程服從指數分佈

1:表示server的數量在M/M/1模型中表示只有一個服務員

控制器處理的時延:包括由控制器處理後經過交換機轉發的時延。

交換機端,交換機效能引數(即轉發佇列引數)如下:

控制器端,假設控制器的緩衝區佇列大小為512,控制器系統的佇列大小受限為,為了分析該系統在高負載情況下的丟包情況,

控制器效能引數如下:

4)多控制器部署問題CPP問題

定義:對於大規模廣域網來說,用單一控制器通常無法及時有效地處理來自所控交換機的所有請求,對於一個給定的網路拓撲,要多少控制器並且這些控制器應該部署在哪些位置,才能實現控制器的合理部署,使得整個網路的目標效能達到最優。

多控制器部署的目標就是在特定的網路拓撲,得到需部署的控制器數目k以及將k臺控制器最優地對映到M臺交換機上。

常規最少控制數目的估算公式如下

假設交換機i有li條新流到達,每臺控制器的平均可處理負載是C

而在網路動態變化的情況下,隨著網路負載的增加,可能會新增一個或多個控制器以處理新的流量負載,如果網路負載下降,當前活躍的某控制器可能關閉。

抽象化模型的建立:

動態新增刪除控制器的過程可以用下式的最優化問題來說明:

交換機與控制器之間的對映關係:滿足時延使用率的約束

f:是控制器數目k及每臺控制器部署代價c二者的非線性函式;

Ui是利用率係數(控制器端的處理器或者記憶體佔用比例);

\[{\Delta _{\rm{i}}}\] 與第i臺控制器關聯的在某時刻的服務時延(處理時延和路徑時延之和(利用歐式距離計算));

I是當前網路中活躍控制器的集合。

常見的解決多個CPP放置問題的演算法:

解決方案1:非零和博弈

基於博弈思想的控制器部署方案本質上也是一類優化問題,給出的是一種分散式的個體優化去逼近全域性最優,是一種次優的選擇。因為網路流是不斷變化的,難找到一種全域性最優的部署方案(面試的時候別說出來)

基於非零和博弈,每個活躍旳控制器認為是一個遊戲參與者,根據相應的規則參與遊戲,計算自身的收益。關於控制器利用率延遲的收益函式定義如下:

Ux是控制器x的利用率,$\Delta x$是與控制器x相關聯的延遲,${\lambda _x}$ 代表和控制器利用率x有關的非線性函式或者一個常量,${\delta _x}$ 用於計算與控制器x收益的非線性函式或者常量。

隨著網路負載的改變,每個活躍控制器使用率時延也發生變化,因此不同時刻的控制器收益函式也在動態變化。當控制器收益很高時,說明此時控制器的負載很輕,控制器可關閉以節約控制平面資源;當控制器收益很低時,說明此時控制器的負載很重,要向鄰居控制器解除安裝部分負載,實現網路的負載均衡。

解決方案2:K-median

K-median演算法通過列舉所有可能的部署方案C,從中找出最佳的部署Cm,Cm對應的部署可以最小化節點和控制器之間的傳輸時延。

K-median首先確認網路中的最短鏈路d(i,j);並選擇節點k作為控制器的候選節點。假設部署所要求的最大路徑時延不得超過Dreq。接下來將所有滿足 的節點v全部加入候選節點k的管理域內,並以些節點建立一個叢集。在後續步驟中,將會檢查叢集內所有的其他節點中是否存在平均時延低於A節點的情況如果存在,用對應的節點替換k並對叢集進行更新,否則k節點就被正式選作控制器所在節點。接下里,演算法還會繼續尋找與該叢集相近的節點,並繼續迭代執行前述步驟,直到所有的節點都納入任意叢集中。

解決方案3:K-center(min max f()

K-center演算法的目標是使節點-控制器的最大距離保持在一個最小值。

演算法開始階段,會隨機挑選一個節點作為控制器部署位置,並以此為核心建立一個叢集,並將所有滿足 的節點都包含進去。在叢集內部進行捜索,直到找出延遲最小的節點為止,將其作為控制器部署節點並更新叢集資訊。接下來挑選與該叢集距離最遠的節點作為下一個候選位置,執行與上述相似的步驟。迴圈往復,一直到所有的節點都被納入叢集中為止。

方案2和方案3的缺點:

不管是K-center還是K-median,都是從減小節點與控制器之間距離的角度出發,通過有限次數的迭代獲取最佳部署位置。這些演算法既沒有考慮控制器的負載,也沒有考慮多控制器之間的通訊延遲,雖然在一些改進指施里加入了節點權重等因子,但仍然難以應對網路複雜性的影響。

專案中我們採取的研究方案:

任務1:對於一個特定的網路,根據需求找到最優的控制器節點數,設計靜態部署演算法劃分網路,滿足網路所需優化目標

任務1.1:選擇最優控制器節點數,滿足規定約束條件

圖的最小覆蓋集問題,再來處理它,圖的最小覆蓋是通過圖中最少的頂點控制全部相鄰邊,過最少的控制器節點控制全部交換機。對關聯矩陣進行改進,把能控制最多的邊的頂點作為最小覆蓋集合中的元素,在確定滿足約束條件下,從不能被控制的邊的頂點中重複上述過程,直到所有邊均被控制。

任務1.2:並行建立改進最小生成樹子樹,結合納什均衡理論確定共同覆蓋節點

節點的度可以反映節點的重要程度以及經過該節點的流的數量;

控制器節點與交換機節點之間的距離大小可以反映其進行資訊交換的難度;

在滿足最大允許傳輸距離\[{d_{\max }}\]及單個控制器所能處理最大負載\[LCC_{\max }^{{h_0}}\]之內,我們以控制器節點為根節點,採用Prim演算法、Kruskal演算法或者Sollin演算法選擇若干交換機作為子節點加入樹中,並行生成棵最小生成樹子樹,並對子樹間重疊節點進行標記,統計重疊葉子節點個數為\[N\]

對於重疊節點,通過納什均衡理論考慮節點流量大小控制器傳輸時延,也就是在原最小生成樹子樹中刪除節點,在目的最小生成樹子樹中插入節點。

任務2:採用動態預測模型預測網路流量變化,動態調整控制器資源池中控制器個數及交換機

任務2.1:基於ARIMA模型的網路流量資料預測

我們建立了一種融合時間序列迴歸分析的優化時間序列的差分自迴歸移動平均模型(Autoregressive Integrated Moving Average Model, ARIMA),

ARIMA網路流量預測模型依據採集的已知網路流量狀態,預測將來網路中流量時間序列變化情況

首先,首先輸入需要預測處理的時間序列, 然後對時間序列進行週期性判斷,如果具有周期性, 則對時間序列進行一次以週期為時間長度的差分處理, 如果不具有周期性, 則直接進入到平穩性檢測階段,如果序列不平穩, 則差分,然後再檢測,直至平穩為止,到此, 資料的預處理階段完成

接下來啟動ARIMA 演算法, 利用AIC準則來判斷ARMA 模型的階, 通過兩重迴圈可以判斷出最適合的模型的階p 和q,然後利用得到的模型進行預測,最後再把預測出來的結果進行逆差分還原處理,從而得到最終需要預測的結果。

確定能夠擬合網路流量時間序列擬合模型。對於不同引數模擬計算的結果也可以採用樣本採集資料對其相似係數和擬合度分析,如果相似係數擬合度最大,則該模型就是最優模型。

下面是預測模型總結:

迴歸分析法:根據歷史資料的變化規律,尋找自變數與因變數之間的迴歸方程式,確定模型引數,據此預測。迴歸問題分為一元和多元迴歸、線性和非線性迴歸。

時間序列預測法:根據客觀事物發展的這種連續規律性,運用過去的歷史資料,通過統計分析,進一步推測市場未來的發展趨勢

馬爾科夫預測法:適用於隨機現象的數學模型,系統未來時刻的情況只與現在有關,而與過去的歷史無直接關係

BP神經網路法:用大量樣本對神經元網路進行訓練,調整其連線權值閉值,然後可以利用已確定的模型進行預測)

任務3:建立全新的負載均衡機制,最小化調整控制器的管理域或增加控制器數量以適應網路規模擴張。

任務3.1:新增交換機節點,造成網路區域性過載,最小化調整域間交換機。

從而將該問題轉化為揹包問題,即有$n$可以調整的交換機集合,每個交換機集合對應的負載為\[{W_{{1_i}}}\],每個交換機都有一定的調整時間,調整該集合需要花費的時間代價為\[{T_{{1_i}}}\],每個集合只有兩種狀態\[{P_{{1_i}}}\],在調整過程中,應讓調整時間最小化,即\[\min \sum {{P_{{1_i}}}*{T_{{1_i}}}} \]

任務3.2:新增交換機節點,造成全網過載,最小化部署新交換機節點。

為緩解這些控制器的負載,需要在$C1,C2,...,{C_t}$內部恰當的位置,放置一個或多個控制器,進而可以將該問題轉換為應急系統選址問題。

對專案2而言

整體概述:本課題設計的數字微鏡器件 DMD(Digital Micromirror Device)控制系統是單光子時間分辨成像光譜儀的關鍵部件,構成儀器所需壓縮感知模組的關鍵要素測量矩陣。自行設計硬體平臺來控制 DMD,實現二值影象在 DMD 上高速顯示,提高 DMD 顯示重新整理率顯示頻率最高能達到 5KHz,以提升壓縮感知的測量速度。

單光子時間分辨成像光譜儀是幹嘛的:

入射光(極弱的光圖象)通過光路處理照射DMD上,經 DMD 隨機投影,將光線反射到光柵分光(很多光路),利用單光子探測器進行探測,得到隨機矩陣,並利用壓縮感知演算法恢復出完整的光譜影象

而我們專案研究的是 DMD 控制模組,功能只有一個,那就是:

DMD控制系統的整體框架:

作用:負責接收上位機成像控制軟體的指令配置,將系統設定為內同步方式或外同步方式工作模式,在相應工作模式下將隨機測量矩陣的資料傳送至 DMD 晶片,實現 DMD 晶片的翻轉控制,完成光路調製,並將系統的翻轉狀態等狀態引數反饋至上位機成像控制軟體

USB 通訊模組:接收上位機下載的矩陣資料,將資料寫入到儲存模組

RS232 通訊模組: 接收上位機下載的控制指令,寫入 DMD 顯示控制模組,將系統的狀態引數傳送至上位機

DDR3 快取模組:寫矩陣資料有效的情況下按照 DDR3 介面協議將寫入 USB模組內的測量矩陣資料寫入至 DDR3,讀有效的狀態下按照 DDR3 介面協議從DDR3 高速讀取矩陣資料到 DMD 模組。

D4100 模組(DLP4100):根據控制指令配置系統工作模式進行顯示等控制。DLPA 控制器由 Xilinx Virtex5FPGA(型號:XC5VLX30FF676)和配置晶片 EPROM(型號 XCF16P)組成;DLPA驅動晶片是 DAD2000,給 DMD 提供電壓和復位驅動,完成微鏡復位和時序資訊.

DMD控制系統硬體設計

Virtex-6 晶片的使用者管腳可以分為普通 IO 和高速 GTX/GTP IO ,普通 IO 和 GTX/GTP IO 都是以 Bank 為單位分佈在晶片內,

普通 IO 每個 Bank 包含 40 個管腳,FPGA 中的管腳都是以差分對的形式存在的。

1.給FPGA V6進行配置電路

Xilinx FPGA 常用配置模式有三類:主模式、從模式、以及 JTAG 模式。

主模式: 

FPGA 作為主裝置,能夠主動載入配置資料。配置所需的時鐘訊號CCLK 由 FPGA 內部晶振電路產生,且 FPGA 控制整個配置過程;

根據傳輸的位寬分為幾類:主序列模式(Master Serial)、主 SPI 模式(Master SPI)、主 BPI 模式(Master BPI)以及主並模式(Master SlectMAP);

從模式:

下載時鐘 CCLK 由外部時鐘源或外部控制訊號產生,

從模式分為:從序列模式(Slave Serial)、JTAG 模式和從並行模式(Slave SelectMAP)。

在 JTAG 模式:

PC 和 FPGA 通訊的時鐘為 JTAG 介面的 TCLK,資料直接從 TDI 進入 FPGA,完成相應功能的配置

本系統採用的是 SPI  flash的配置方式

配置晶片選用的是 Atmel 公司的 AT45DB642D,配置晶片的容量為 64M,工作電壓為 2.7V-3.6V,SPI 匯流排通過四根線來完成和 FPGA 之間的通訊

2.DDR3介面電路

DDR3 SDRAM:DDR 則是一個時鐘週期內傳輸兩次資料,在時鐘的上升沿和下降沿各傳輸一次資料 

DDR3 工作電壓為 1.5V,本系統中由於FPGA 本身速度限制,最高速率可達 400M。

DDR3 頻寬計算:頻寬=核心頻率*匯流排位數*倍增係數

核心頻率即為記憶體的工作頻率,DDR3 是一次從儲存單元預取 8Bit 的資料(核心頻率的讀取資料),在上升沿和下降沿能同時傳輸,因此有效的資料傳輸頻率是核心頻率的 8 倍。

本課題中,DDR3 記憶體條介面工作的頻率是 400M,即時鐘頻率為 400M,實際的執行頻寬則是 400M*2*64=51200Mbit=50Gbit

3.USB3.0介面設計

USB3.0 模組主要用來實現上位機使用者介面和 FPGA 之間的通訊;

本課題選用的USB3.0外設控制器是Cypress公司的CYUSB3014EZ-USB FX3,該控制器既可用做主模式,也可做從模式,最多可以提供 256 個可程式設計的狀態。本課題中控制器用的是從模式,即 Slave 模式,Slave FIFO 介面優點是傳輸資料速度快,資料傳輸率可以達 320MB/s。

1)CYUSB3014 時鐘設計

CYUSB3014 FX3晶片可以在 XTALIN 和 XTALOUT 引腳之間連線晶振,也可以在CLKIN 引腳上連線外部時鐘。器件可以使用 19.2MHz 的晶振或頻率為 26MHz、38.4MHz 或 52MHz 的時鐘作為時鐘源。

CYUSB3014FX3 包含一個看門狗定時器,看門狗定時器使用一個 32.768KHz 的有源晶振提供,用來防止內部時序紊亂。

2)CYUSB3014 晶片電壓說明

CYUSB3014 內部集成了 ARM 處理器和多種外設,因此用到的電源系統相對比較複雜,各個電壓域所用到的電壓檔也相對較多,典型值為 1.2V、1.8V、2.5V、3.3V。

電源電路設計時,要注意的是去耦電容的擺放。必須將去耦電容放在離電源引腳最近的位置

電源去耦的重要作用是能夠確保在供電過程中,不讓系統噪聲傳輸給器件。去耦電容應該是穩定的、非傳導性的陶瓷電容

4. 電源模組設計

FPGA 的電壓可以分為三類:核心電壓(V CCINT )、I/O 電壓、輔助電壓(V CCAUX )。

核心電壓是 FPGA 內部各種邏輯電路正常工作執行所需的基本電壓,該電壓用於保證 FPGA 晶片的正常工作

I/O 電壓是指 FPGA 晶片 I/O 引腳工作所需的電壓,不同的 Bank IO 可以分配不同的電平標準,但同一個 Bank 只能接相同的電平。本系統選用的 Virtex-6 系列 IO 電壓支援的範圍為 1.14V~2.65V,目前常用的max3232、SPI Flash 電壓標準一般為 3.3V。

Vccaux 輔助電壓:內部也包含一些模擬元件,如 Xilinx 的 MMCM 混合時鐘管理模組,這些模擬類的元件對電源的電源抑制比(PSRR)和電源紋波非常敏感,所以通常會用一個獨立的供電電源

5.開關式 DC-DC 電源

目前常見的電源解決方案主要分兩種:低壓差(LDO)線性穩壓器開關式DC-DC 穩壓器

LDO 優點在於電路板對輸出噪聲要求較高,對輸入電壓變化和負載瞬變做出快速響應,缺點是效率低,輸入輸出的電壓差不能太大,負載不能太大

開關式 DC-DC 穩壓器:注重的是效率,並且輸出電流較高,缺點是:開關電路會增加輸出噪聲

DMD所用到的所有電源:

DMD 控制系統軟體設計

整個DMD控制系統的工作流程如下:FPGA作為主裝置一直判斷CYUSB3014的片內 FIFO 是否有資料,如果有資料,則判斷是命令還是影象資料。如果是命令,則寫入命令暫存器,如果是影象資料,則寫入到 DDR3 記憶體中。這時候 FPGA 等待觸發訊號(內同步訊號或者外同步訊號或者命令觸發訊號),當收到一幀的觸發訊號,就從 DDR3 中讀出一幀資料寫入到 DDC4100 中,再控制 DMD 翻轉,即可顯示影象

DMD控制系統的所有外部時鐘有哪些?

系統時鐘:100MHz

DDR3介面時鐘模組:200MHz

USB 通訊模組:24MHz

控制上電順序: 350KHz 

訊號的競爭冒險怎麼避免?

系統復位訊號和區域性的軟復位訊號通過非同步復位同步釋放處理

1.USB 通訊模組介面設計

USB 通訊模組的功能是在寫矩陣資料有效的情況下,接收上位機下載的矩陣資料,將位寬為 32bit 的資料寫入到 USB FIFO 中轉換成位寬 256bit(根據儲存裝置的位寬來設定,DDR3 中是 256bit)的資料,並存儲的大容量儲存裝置中。

上面的圖,應該從右往左看,下面兩句把最關鍵的點概括了,就這麼簡單

串流輸入資料傳輸:通過同步從裝置 FIFO 將資料不斷地寫入 FX3 中。

串流輸出資料傳輸:通過同步從裝置 FIFO 從 FX3 中不斷地讀取資料

2.RS232串列埠模組

RS232 通訊協議接收上位機的指令內容,並將指令內容寫入暫存器控制模組進行指令解析解析後的指令寫入 DMD 顯示控制模組。

3.D4100

通過對外接 FPGA 實現對 DDC4100 的控制。輸出資料驅動 DMD 是由 DDC4100 來實現的.

系統初始化完成,使用者可以向 DDC4100 中寫入資料或控制資訊。對輸入匯流排而言,寫訊號有效後DDC4100 開始取樣 LVDS 資料輸入同時根據地址控制資訊把取樣到的資料傳送到 DMD 中

DDC4100 模組的狀態機工作過程如下表所示:
1)判斷到觸發訊號(外觸發、內觸發或者命令觸發);
2)從 FIFO 讀資料;
3)根據 DDC4100 的協議向 DDC4100 寫影象資料;
4)寫完一幀,寫控制線,告知 DDC4100 驅動 DMD 顯示。

注意:1G記憶體最大可儲存3880幀

4.DDR3快取模組

資料快取模組的主要功能是在寫矩陣資料有效的情況下按照 DDR3 介面協議將測量矩陣資料寫入至 DDR3,讀有效的狀態下按照 DDR3 介面協議從 DDR3 高速讀取矩陣資料傳輸給 DMD 模組。

5. DDR3 模組設計

寫入FIFO儲存模組,讀取FIFO儲存模組,DDR3 介面控制模組

寫入 FIFO 儲存模組:在 DDR3 寫有效的情況下,將矩陣資料按照 DDR3 協議寫入到 DDR3 模組

讀取 FIFO 儲存模組:在 DDR3 讀有效的情況下,並將讀取到的矩陣資料寫入 DMD 顯示控制模組

DDR3 使用者介面控制模組:在 DDR3 寫有效的情況下,將矩陣資料寫入 DDR3,在讀有效的情況下,從 DDR3 中讀取矩陣資料

專案3 

定時用的是PIT定時中斷來開發的,遠端用的是記錄電機脈衝開發的,這樣做的原因是:剛開始的時候,用的一杆式推動電機(絲桿傳動),有些電機因卡不上位置,導致不能讀取響應的脈衝訊號,所以同時開發兩個版本,加快進度,這些脈衝訊號來自電機的霍爾原件。同時利用wify模組和APP通訊,來控制電機姿態的翻轉等等,用的是TCP協議,寫的是簡單的字串。