久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2628|回復: 0
打印 上一主題 下一主題
收起左側(cè)

基于FPGA的嵌入式系統(tǒng)設計思考之一二

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:103513 發(fā)表于 2016-1-17 03:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
作者: phixcoco

開頭要贊下lindsey[1]能將自己實踐中的心得與大家分享。帖子上說彼有“2年多的應用經(jīng)驗”以及使用過EDK的諸多版本,著實讓人仰慕。工程經(jīng)驗以及有體驗開發(fā)套版本更新的歷程是份寶貴的財富也使得積累了不少思考。我無意間看到文章,看完后我很高興,一方面在于其中點滴的真知灼見,更重要的是其思考能引著大家進一步認識自己可能正在使用的開發(fā)平臺。
我想我也可以將自己的一份愚見寫出來與大家分享!我不是Xilinx EDK的行家,也不是將SoPC應用與嵌入式開發(fā)的行家,我與此些產(chǎn)品的機緣開始于06年的IBM PowerPC應用大賽。我們組隊參加了,而IBM提供ML403開發(fā)板作為決賽的實現(xiàn)平臺。12月中旬比賽結(jié)束之后我將圖書館里大致所有關(guān)于“FPGA、SoC、嵌入式”的書瀏覽了一遍,算是對自己一個時期內(nèi)的實踐的理論總結(jié)!
我想下面的寫作方式不用敘事,而用分點闡述以讓大家盡快找到我意見的要點而不至于在細枝末節(jié)上迷失了論述的重點!

“上帝說,先認識這些詞兒吧,否則你將不知所云”!
首先闡述以理清幾個概念:SoC”,“SoPC”,“基于FPGA的嵌入式系統(tǒng)”
SoC(System-on-Chip),知道了字面就應該可以明白它的意思。SoC兩個重要的概念是IP Reuse(IP重用)和Software/Hardware co-design(軟硬件協(xié)同設計)。IP重用和軟件中的重用關(guān)系密切,而協(xié)同設計的目的之一是縮短TTM(Time-to-Market)。其硬件實現(xiàn)是通常意義的CHIP。基于Standard Cell(標準單元庫),有通常意義的數(shù)字后端將前端設計轉(zhuǎn)化為Layout的形式提交Foundary制造,請允許我將這用實現(xiàn)成為ASIC實現(xiàn)吧。
SoPC(System-on-Programmable-Chip)的概念容易理解,與通常意義的SoC的最大不同來自實現(xiàn)目標平臺的不同,F(xiàn)PGA是其主要依賴的目標平臺。無論是傳統(tǒng)芯片中嵌入一個FPGA模塊還是FPGA來實現(xiàn)SoC,總之我們可以利用FPGA的優(yōu)勢為系統(tǒng)設計服務。就像基于ASIC和基于FPGA的純硬件設計流程大致只有后端不同而前端設計流程一致;SoPC和傳統(tǒng)意義的SoC都套用SoC的設計方法學以及使用類似的SoC設計流程,區(qū)別之一也在于SoPC以FPGA作為實現(xiàn)目標從而少去了諸多后端設計的工作和制造的時間。
基于FPGA的嵌入式系統(tǒng),這個概念多少像個拼盤。首先嵌入式概念的要點之一既有軟件也有硬件同時目標為特定的應用領(lǐng)域。嵌入式系統(tǒng)(Embedded System)也是System,它的硬件部分可以選擇用一系列專用芯片搭建板級系統(tǒng),也可以用幾塊SoC芯片和少許外圍元件搭建,而承載SoC的可以是ASIC實現(xiàn)也可以是FPGA。

“沒有后端組?選擇FPGA實現(xiàn)吧。批量生產(chǎn)?可以嘗試結(jié)構(gòu)化ASIC。完全的單片系統(tǒng)解決方案?SoC吧。沒法做進一個die?層疊封裝……朋友,具體問題要具體分析的!”
即便是ASIC實現(xiàn)的SoC,通常也會有使用FPGA做 Prototype的階段。然而實現(xiàn)平臺的不同決定了FPGA在其中的作用是不盡相同的,下面的闡述將針對將FPGA作為嵌入式系統(tǒng)實現(xiàn)平臺的情況。

1、基于FPGA的嵌入式系統(tǒng)設計的限制
lindsey在“1、SOPC能設計什么樣的嵌入式系統(tǒng)”一段中提到了硬件系統(tǒng)設計中的兩個主要限制是:片上存儲資源和有限的接口IP。下面主要分接口、存儲和處理三個部分闡述FPGA用于嵌入式系統(tǒng)搭建的限制。
首先是接口,“pin limitation”是不得不面對的一個問題,這也是為什么我們將一些components集成到chip的內(nèi)部將pin與pin的連接轉(zhuǎn)換為片內(nèi)的連接,從而減輕芯片引腳限制帶來的系統(tǒng)設計壓力。這在存儲系統(tǒng)設計的時候會充分感受到,多塊片外的存儲器(甚至是多種)會消耗大量的FPGA引腳。同時片外和片內(nèi)互連必然收到pad的物理和電氣限制,從而限制了延時和速度。如果需要,可以看看Xilinx的RocketIO。然后是接口IP,當我讀到lindsey網(wǎng)友的文章的文字是又喜又悲,一方面IP的概念為人們熟知,另一方面是大家太習慣“免費的午餐”了。常用的接口IP都屬于General IP的范疇,在ASIC實現(xiàn)的SoC時,我們通常向Synopsys(全球第一的General IP提供商)以及Mentor等公司付費使用這些IP。免費的IP通常可以移植OpenCores等來源的IP。一些常用的接口IP,因為其差異性和經(jīng)濟性不高所以公司會選擇免費提供給用戶而沒有必要收取費用。而對于大多數(shù)的IP都是要收費使用的。接口IP不應該成為嵌入式系統(tǒng)設計中的限制點。
接著是存儲系統(tǒng),存儲系統(tǒng)是系統(tǒng)設計者常常要仔細設計的部分。我想為FPGA不能集成大容量存儲資源做一下辯解:一是FPGA本身優(yōu)勢在于computing-intensive的設計;二是現(xiàn)有的FPGA主要是基于SRAM,集成適量的SRAM存儲單元很容易理解;三是存儲器是一個相對獨立的市場,其制程(無論是DRAM還是FLASH,更不用說EEPROM等)和FPGA本生不一致;四是存儲單元消耗的功耗比例越來越大……事實是FPGA上的存儲單元容量十分有限,使得基于FPGA的嵌入式系統(tǒng)設計時不得不使用片外存儲單元,這使得存儲系統(tǒng)的延遲和帶寬以及FPGA的引腳限制都成為系統(tǒng)設計者需要面對的設計問題。
最后到處理,片上系統(tǒng)的主體是處理。在絕大多數(shù)的應用領(lǐng)域中基于總線的構(gòu)架占了絕對的統(tǒng)治地位。兩個不容忽視的部分是處理器和總線。撇開Xilinx和Altera泛而談之,處理器內(nèi)核并非越快越好,總線也不是唯AMBA獨尊。我喜歡Hennessy的“Computer Architecture: A Quantitative Approach”以及“Computer Organization & Design: The Hardware/Software Interface”兩本書,因為學會了軟硬件兩方面思考系統(tǒng)以及量化的研究方法。8051 compatible的處理器軟核不可小覷,我們看到漫天32位處理器內(nèi)核的同時,也該知道ARM的16位Trumb指令集的設計目的。同樣還有可能的DSP軟/硬核。同樣在總線方面,你可能需要Wishbone的輕巧,你可能需要AHB/APB明顯的劃分來構(gòu)架系統(tǒng),抑或你可能需要CoreConnect的讀寫、配置和數(shù)據(jù)傳輸?shù)炔⑿袔淼膹姶笮阅堋m槺闾嵋稽c:片上總線和傳統(tǒng)的板級總線是有差異的,使得將傳統(tǒng)的板級總線(PCI)實現(xiàn)在片內(nèi)是沒有多大意義的。FPGA提供了足夠的自由度,使得我們可以自由的選擇處理器軟核和使用的片上總線選擇來自量化的分析。但當FPGA用于實現(xiàn)嵌入式系統(tǒng)時,特別是利用Xilinx抑或Altera提供的開發(fā)工具進行基于FPGA的嵌入式系統(tǒng)設計時,限制又多了一層,那就是軟件的限制!如果你不是使用PPC處理器核,那么你可以選擇沒有內(nèi)嵌PPC硬核的Xilinx的FPGA型號,或者內(nèi)嵌了而不使用它。問題在于系統(tǒng)集成時你無法使用Xilinx EDK提供的軟件平臺來輕便地集成系統(tǒng)。反過來的思考是,這樣你也可以不會陷于選擇,而將精力著力與利用提供的內(nèi)核和總線類型基礎上最優(yōu)化你的設計,并充分享受開發(fā)工具提供的在系統(tǒng)集成上的便利!

2、基于FPGA的嵌入式系統(tǒng)設計需要做什么
既然是一個既有軟件又有硬件的系統(tǒng),那么缺少不了軟件和硬件兩個部門的工程師。傳統(tǒng)的嵌入式系統(tǒng)設計中,硬件設計師主要工作在搭建板級系統(tǒng)(抑或還得加上調(diào)底層驅(qū)動的活兒),而軟件工程師向上開發(fā)應用。基于FPGA的嵌入式系統(tǒng)設計中,硬件工程師似乎不得不又分成兩波,一撥開發(fā)片上系統(tǒng)的硬件(由于軟硬件接口主要在FPGA上,所以編寫底層驅(qū)動的事似乎得由他們干了),一撥開發(fā)板級硬件。我這里要說一下我在圖書館里看的幾本書的印象,那就是無一例外的它們都變成了介紹多個工具的雜集,甚是還包括HDL語言本身,更要命的在于介紹的重點集中在了單個IP設計,于是一本關(guān)于SoPC抑或基于FPGA的嵌入式系統(tǒng)設計的書變成了介紹FPGA上設計硬件邏輯的書籍。我想作者們以及許多工程師們似乎沒有抓住基于FPGA的嵌入式系統(tǒng)設計的要點:
首先是硬件平臺的快速搭建。你是否有體會到如Xilinx EDK的一個亮點就在于硬件平臺的快速搭建。在IP都已經(jīng)available的情況下,利用EDK,我們可以快速地構(gòu)架起我們的片上硬件系統(tǒng)。以Xilinx的EDK為例,EDK自帶的IP已經(jīng)有不少,且不要小視Xilinx公司可以提供的IP的資源,當然不少都是需要付費的。同時FPGA作為一個靈活的平臺,使得我們可以開發(fā)自己所需的專用IP來在硬件層面上提高產(chǎn)品的差異性和性能,作為公司可以建立IP庫,從而在不同的嵌入式系統(tǒng)搭建時能夠方便地在EDK中復用。RTL級的源碼保證了很大的實現(xiàn)可移植性。再者就是IP接口生成(也就是Import & Create Peripheral Wizard)極大地簡化了總線接口的設計,從而使得基于總線的系統(tǒng)集成是那么地簡便!但另一方面我們又不得不看到,在項目需要設計專用的IP,特別是IP比較復雜時,系統(tǒng)設計的周期會被明顯拉長。一個原因在于基于FPGA的嵌入式系統(tǒng)設計并沒有很好地推廣軟硬件協(xié)同設計的觀點。在傳統(tǒng)的基于ASIC實現(xiàn)的SoC設計中,我們會根據(jù)Specification用高層語言模擬系統(tǒng)(行為模擬,功能精確或者周期精確),模擬軟硬件接口,使得硬件在逐步實現(xiàn)的同時,軟件能夠基于模擬的硬件進行設計和調(diào)試,從而軟硬件設計的周期能夠overlap。而基于FPGA的嵌入式系統(tǒng)設計中,EDK提供了處理器的指令集仿真器(由于不是系統(tǒng)的模擬器,所以缺少調(diào)試外圍IP的便利性)、提供了在軟件上程序和硬件描述語言描述的硬件協(xié)同仿真的條件,但是軟件設計的前提是硬件系統(tǒng)集成的完成(這點上我并不是很確定!)。總而言之,在構(gòu)建片上硬件系統(tǒng)的IP模塊均具備的情況下,硬件系統(tǒng)能夠很快地集成驗證并進入軟件開發(fā)流程,EDK給予了硬件系統(tǒng)集成的便利性。
其次是軟件設計體現(xiàn)應用差異性。傳統(tǒng)的嵌入式系統(tǒng)由于硬件設計的局限性,使得嵌入式系統(tǒng)的硬件平臺差異不大(正如lindsey在“2、SOPC的設計師在設計什么”開頭寫道的那樣),開發(fā)集中在軟件。然而FPGA的硬件載體使得硬件上也能做不少差異設計,并且基于基于FPGA的設計容易實現(xiàn)功能以及保證時序收斂!但是不應該因此在基于FPGA的嵌入式系統(tǒng)設計中忽視了軟件的重要性。軟件層面的靈活性仍然是硬件本身無法比擬的,從而使得軟件在應用的創(chuàng)新和產(chǎn)品的差異化上扮演了重要的角色,這是我在經(jīng)歷PPC應用大賽后的感受。同時從系統(tǒng)性能設計的考量,正如Hennesey書中體現(xiàn)的思想,硬件構(gòu)架以及軟硬件接口的設計固然重要,系統(tǒng)軟件同樣很大程度影響著系統(tǒng)的整體性能并可能成為系統(tǒng)性能的瓶頸。而系統(tǒng)軟件就是指OS以及軟硬件直接交互的使者――驅(qū)動。以Xilinx的EDK為例,我個人覺得Xilinx EDK中的驅(qū)動分層設計以及驅(qū)動的構(gòu)架很好,傳統(tǒng)的層次化的設計思想得到了優(yōu)美的實踐。
那么工程師要做什么呢?不是有這么多的工作可以讓你發(fā)揮你的想象力嗎!

3、“工欲善其事,必先利其器”
硬件工程師在實現(xiàn)強大的計算平臺為軟件設計提供強有力的支持的同時,硬件設計本身也得益于軟件的發(fā)展。
首先需要感謝下“Free Software Foundation”和“Open Source Initiatives”(或許Richard Stallman并不喜歡別人感謝這個)。起碼林林總總的開源軟件讓我們的軟件開發(fā)更加高效。gcc,據(jù)稱是地球上凡存在過的CPU構(gòu)架它都支持。或許有點夸張,但是倘若我設計了一套指令集,而需要一個編譯器/交叉編譯器的話,我會首先想到移植gcc。gcc,gdb/ddd等工具對于軟件開發(fā),特別是系統(tǒng)軟件開發(fā)的工程師來說應當是熟悉的。即便是硬件設計與仿真領(lǐng)域,VCS、Modelsim的工具套件中你是否忽視了gcc的存在呢?
傳統(tǒng)的嵌入式開發(fā)系統(tǒng)中主要的編程工作在軟件,主要的編程對象是CPU/DSP,而它們的指令集是開放的,使得在專用的集成開發(fā)環(huán)境外,eclipse等軟件由于其開放的構(gòu)架也逐步受到嵌入式軟件開發(fā)者的喜愛。基于FPGA的嵌入式系統(tǒng)類似的可以采用eclipse作為軟件開發(fā)集成環(huán)境,但其編程性還有FPGA,由于FPGA諸多的不透明性(諸如bit文件格式等等),使得我們可以確信不同的FPGA供應商必然是針對自己的FPGA提供自由的集成開發(fā)環(huán)境。Xilinx有XPS,而Altera有SoPC Builder開發(fā)工具。
對于硬件部分的開發(fā),它和傳統(tǒng)的基于FPGA的硬件開發(fā)流程相同,因此完全可以借用已經(jīng)相對成熟的設計工具和流程。事實上,Xilinx和Altera在自家的基于FPGA的嵌入式開發(fā)套件中整合了傳統(tǒng)的基于FPGA的硬件開發(fā)的工具和流程。利用已有的基于FPGA的硬件開發(fā)工具鏈,我們已經(jīng)可以做系統(tǒng)的整合(包括硬件系統(tǒng)的整合以及軟硬件的整合)。然而從嵌入式的需求出發(fā),我們需要一個簡化的硬件整合的工具,我們也需要一個簡便的軟硬件整合的工具。在Xilinx的EDK中,Xilinx Platform Studio(XPS)就是這樣的一個集成開發(fā)環(huán)境。我們希望它能進行有效的IP管理和基于總線的系統(tǒng)集成!
說IP管理,在傳統(tǒng)SoC領(lǐng)域中人們也在制定標準化的IP管理,以便于IP的共享和復用,或許是XML抑或是別的。無論軟件還是硬件設計人員,你對于配置文件應該不至于陌生。Xilinx的EDK采用的是基于配置的管理。而且不僅僅是管理IP本身。諸多的配置文件可得理清相互的依賴關(guān)系,就和開源軟件的包依賴關(guān)系類似。這造成的一個問題就是如果手工修改配置文件有可能造成系統(tǒng)配置混亂,而使得集成開發(fā)工具無法順暢的解決對應關(guān)系造成工程的崩潰。對于基于FPGA的嵌入式開發(fā)軟件而言,它管理的IP都是帶總線接口的IP。而我們設計IP通常分kernel和bus interface兩個部分。Import & Create Peripheral Wizard之所以是我喜愛的功能,是因為實踐中節(jié)省了大量為自己設計的IP設計和驗證總線接口的時間,而且總線操作時序比較有保證!在Xilinx的EDK中,它用MPD(Microprocessor Peripheral Definition)和PAO(Peripheral Analyzer Order)等配置文件來標示IP。當IP集成為一個硬件系統(tǒng)時,它用MHS(Microprocessor Hardware Specification)配置文件來標示硬件的連接等屬性。相應的工具能夠在這些配置文件的指引下來集成硬件系統(tǒng)。軟件部分的驅(qū)動、編程庫等都有一套配置文件。
這些配置文件的作用常常可以被隱藏在GUI界面和按鈕之下。然而當進行系統(tǒng)查錯,特別當使用自己設計的嵌入式開發(fā)板時,你就有必要完全了解Xilinx EDK的各種配置文件的用途,正確地配置軟硬件系統(tǒng)以充分發(fā)揮XPS下各種工具進行系統(tǒng)集成的能力!
最后補充說明一點,關(guān)于綜合和布局布線的速度,綜合和布局布線算法本身的復雜度加之日益增長的FPGA芯片的規(guī)模,我想只能說短時間不會有太多的改觀的。如果你經(jīng)歷過在服務器上晝夜跑regression和十數(shù)小時綜合的經(jīng)歷的話,你或許就不會對XPS工程編譯花上半個小時而驚異了!
總之透過一個開發(fā)工具,我們或許可以學到一些諸如工程管理的學問。當然我們都期望開發(fā)工具能夠越來越高效和易用!
感謝你讀完我敲下的以上文字,如有謬誤,敬請指出!


評分

參與人數(shù) 1黑幣 +35 收起 理由
暗光 + 35 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲九九 | 亚洲欧美综合精品另类天天更新 | 亚洲精品在线观看视频 | 91天堂| 免费播放一级片 | 天堂在线中文字幕 | 国产精品久久久久久中文字 | 在线精品观看 | 91精品国产综合久久久动漫日韩 | 午夜小影院 | 国产精品欧美大片 | 欧美一级视频在线观看 | 免费毛片网 | 日日日色| 亚洲一区二区三区免费视频 | 欧美极品在线播放 | 国产一区二区在线免费观看 | 99国产精品久久久 | 一区二区中文 | 成人免费视频网站在线看 | 看片国产 | 日韩一级精品视频在线观看 | 中文字幕av网址 | 成人在线免费电影 | a国产一区二区免费入口 | 中文字幕一区二区三区四区五区 | 日韩激情网| 国产ts人妖系列高潮 | 成人精品国产免费网站 | 欧美日韩视频在线播放 | 日韩视频 中文字幕 | 91毛片在线看 | 精品国产乱码久久久久久中文 | 久久精品视频在线免费观看 | 日韩欧美二区 | 免费人成在线观看网站 | 久久久久香蕉视频 | 国精产品一区一区三区免费完 | 在线精品一区二区三区 | 国产自产21区 | 日韩在线免费视频 |