<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于8051軟核的SOPC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

          基于8051軟核的SOPC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2007-03-09 來源:網(wǎng)絡(luò) 收藏
          摘要:介紹了基于IP的可重用的SOC設(shè)計(jì)方法;選用MC8051 IP核為核心控制器,自主開發(fā)了UART IP核、I2C IP核、USB IP核,采用Wishbone片上總線架構(gòu),集成了一個(gè)MCU系統(tǒng);同時(shí)設(shè)計(jì)了針對此MCU系統(tǒng)的微機(jī)調(diào)試軟件和硬件調(diào)試器,并實(shí)現(xiàn)了MCU系統(tǒng)的FPGA驗(yàn)證和整個(gè)系統(tǒng)的功能驗(yàn)證。設(shè)計(jì)中采用了開發(fā)8051行為模型的方式,縮短了系統(tǒng)仿真的時(shí)間;而USB IP核設(shè)計(jì)則采肜雙緩沖區(qū)結(jié)果,方便了系統(tǒng)做成,提高了傳輸速度。 關(guān)鍵詞:SOPC IP核 WISHBONE 片上總線USB總線協(xié)議 UART 隨著微電子工藝技術(shù)和IC設(shè)計(jì)技術(shù)的不斷提高,整個(gè)系統(tǒng)都可集成在一個(gè)芯片上,而且系統(tǒng)芯片的復(fù)雜性越來越高。為了提高效率,復(fù)用以前的設(shè)計(jì)模塊已經(jīng)成為系統(tǒng)世馘 (SOC)設(shè)計(jì)的必上之路。SOC的實(shí)現(xiàn)基本上有兩種方法,一種是用ASIC芯片實(shí)現(xiàn),另一種是FPGA或PLD芯片實(shí)現(xiàn)。后一種實(shí)現(xiàn)也稱為SOPC實(shí)現(xiàn)。SOPC技術(shù)是美國Altera公司于2000年最早提出的,即用大規(guī)模可編程器件實(shí)現(xiàn)SOC的功能。它為SOC的實(shí)現(xiàn)提供了一種簡單易行而又成本低廉的手段,極大地促進(jìn)了SOC的發(fā)展。本文設(shè)計(jì)就是采用SOPC技術(shù),在一塊FPGA芯片上,實(shí)現(xiàn)一個(gè)水文測報(bào)通信系統(tǒng)。該系統(tǒng)是專門為國家防汛指揮系統(tǒng)項(xiàng)目而開發(fā)的實(shí)時(shí)多任務(wù)的前置通信控制機(jī),用于實(shí)現(xiàn)水文數(shù)據(jù)的傳輸、處理和存儲。 國家防汛指揮系統(tǒng)工程啟動(dòng)之后,對水文測報(bào)網(wǎng)絡(luò)中的通信控制機(jī)性能提出了更加苛刻的要求:更多、更快速的通信端口;更大的存儲容量;更高的可靠性;更強(qiáng)的實(shí)時(shí)性;更強(qiáng)的可操作性;更便捷的應(yīng)用程序開發(fā)平臺。為了實(shí)現(xiàn)這些要求,以前曾采有傳統(tǒng)的單片機(jī)系統(tǒng)完成這項(xiàng)工作,但這些方法存 幾大缺陷:(1)系統(tǒng)占用面積比較大;(2)管腳的數(shù)量比較多,因而電路板問題引導(dǎo)發(fā)故障較多;(3)電路板信號傳送之間存在干擾,系統(tǒng)運(yùn)行速度難以達(dá)到要求。針對這些問題,本文采用SOC設(shè)計(jì)方式,進(jìn)行軟硬件協(xié)同設(shè)計(jì),把整個(gè)可復(fù)用的內(nèi)核如8051IP核、USB IP核、UART IP核等集成在一塊FPGA芯片上,用WISHBONE總線構(gòu)成一個(gè)完整的片上通信系統(tǒng)。實(shí)驗(yàn)結(jié)果證明:該系統(tǒng)所占用的面積縮小為原來的四分之一,管腳數(shù)量減少了三分之一,系統(tǒng)運(yùn)行的速度也提高了。USB IP核的速度可以達(dá)到60MHz,完全滿足設(shè)計(jì)要求。1 系統(tǒng)實(shí)現(xiàn)方案 1.1 系統(tǒng)結(jié)構(gòu)說明 本設(shè)計(jì)采用ALTERA公司的開發(fā)平臺,即在一塊ALTERA公司的Cyclone系列FPGA芯片上構(gòu)建SOPC系統(tǒng)。芯片內(nèi)部IP核的結(jié)構(gòu)示意圖如圖1所示。 圖中,系統(tǒng)核心8051 IP核采用的是第三方的圖件,遵守GPL協(xié)議的公開源代碼,指令體系與標(biāo)準(zhǔn)的8051兼容,全同步設(shè)計(jì),并且通過修改包含了測試器接口;源代碼由VHDL語言寫成,擁有良好的注釋及可擴(kuò)展性。其它IP核如UART IP核、I2C IP核、USB IP核等都是自行設(shè)計(jì)的;圖中總線采用的是WISHBONE片上總線。 1.2 系統(tǒng)功能的實(shí)現(xiàn) 系統(tǒng)的主要功能是數(shù)據(jù)傳輸。從圖1所示的結(jié)構(gòu)圖可見,內(nèi)部數(shù)據(jù)傳輸采用的是總線結(jié)構(gòu),所有的設(shè)備都是通過總線進(jìn)行數(shù)據(jù)傳送的,因此設(shè)計(jì)的核心是總線數(shù)據(jù)傳輸。本文設(shè)計(jì)采用的是SILICORE公司的WISHBONE片上總線標(biāo)準(zhǔn)。片上總線(On-Chip Bus,OCB)是實(shí)現(xiàn)SOC中IP核連接最常見的技術(shù)手段,它以總線方式實(shí)現(xiàn)IP核之間的數(shù)據(jù)通信。與板上總線不同,片上總線不用驅(qū)動(dòng)底板上的信號和連接器,使用更簡單,速度更快。WISHBONE是一種主/從結(jié)構(gòu)的總線,所有的IP核掛接在WISHBONE總線上,其規(guī)范是一種片上系統(tǒng)IP核互連體系結(jié)構(gòu)。本系統(tǒng)選取8051 IP核為主,其它IP核為從,主/從IP核通過握手信號使數(shù)據(jù)在WISHBONE總線上進(jìn)行交換。 下面詳細(xì)說明WISHBONE總線功能的實(shí)現(xiàn)。WISHBONE主設(shè)備核(8051 IP)與WISHBONE從設(shè)備核(USB IP核、UART IP核、I2C IC核等)端口信號連接圖如圖2所示;主設(shè)備核讀取從設(shè)備核數(shù)據(jù)的時(shí)序示決圖如圖3所示。寫操作時(shí)序與之類似。WISHBONE連線示意圖中只畫出一個(gè)主設(shè)備核和一個(gè)從設(shè)備核,實(shí)現(xiàn)情況可掛接多個(gè)主設(shè)備和從設(shè)備。本文采用了一主多從的結(jié)構(gòu),即一個(gè)主設(shè)備核(8051 IP核)控制總線,與多個(gè)從設(shè)備核(UART IP核、USB IP核等)進(jìn)行數(shù)據(jù)傳輸。WISHBONE總線連接線可分為:同步信號線CLK-I;設(shè)備地址線ADR;主IP核到從IP核的數(shù)據(jù)輸出線DAT_O,從IP核到主IP核的數(shù)據(jù)輸入線DAT_I;控制線SEL、STB、CYC、ACK;附加線TAGN(用戶可以自行定義,本文定義了定信號線WE)。 WISHBONE的數(shù)據(jù)傳輸由主設(shè)備控制,采用握手信號STB-O和ACK-I控制傳輸過程,如圖4所示。 以本文設(shè)計(jì)為例,一個(gè)WSIHBONE總線讀周期的詳細(xì)過程可分解如下: (1)運(yùn)行8051匯編程序,8051 IP核(主IP核)使CYC-O為高,表示8051 IP核占用總線;同時(shí)送出SEL-O信號選取從設(shè)備核(SEL-O信號線電平定義從設(shè)備核地址;本文中UART IP核地址為0001、I2C IP核地址為0010、USB IP核地址為0101;假設(shè)SEL-O送出的信號線電平為0101,即USB IP核被選中),同時(shí)發(fā)出STB-O握手信號通知從設(shè)備核送出數(shù)據(jù)。 (2)USB IP核收到選中信號和STB激勵(lì)信號后,把數(shù)據(jù)放在數(shù)據(jù)線上,并送出ACK信號表明設(shè)備準(zhǔn)備好。 (3)8051 IP核收到ACK信號,從數(shù)據(jù)線上讀取數(shù)據(jù)。 (4)數(shù)據(jù)讀出后,8051 IP核把STB信號置低,通知從IP核數(shù)據(jù)已讀出。 (5)USB IP核收到STB低電平信號,把ACK置低,一個(gè)數(shù)據(jù)傳送周期結(jié)束。 寫周期與以上過程類似,不同之處在于8051核收到ACK高電平信號后才把數(shù)據(jù)放在數(shù)據(jù)線上,由從IP核來讀取。 2 系統(tǒng)設(shè)計(jì)方法與關(guān)鍵技術(shù) 2.1 系統(tǒng)設(shè)計(jì)方法 系統(tǒng)設(shè)計(jì)采用的核心工具軟件:設(shè)計(jì)輸入編程器及仿真工具——ActiveHDL6.1,邏輯綜合工具——Synplify Pro 7.6結(jié)構(gòu)綜合工具——QuartusII v4.1,仿真工具——Modelsim 6.0 SE。Active DHL+Synplify+Quartus I工具鏈提供了從源代碼輸入到FPGA實(shí)現(xiàn)整個(gè)流程的核心開發(fā)平臺。 SOC的設(shè)計(jì)、仿真和驗(yàn)證確實(shí)是一個(gè)紛繁復(fù)雜的過程。在實(shí)際運(yùn)行中,采用IP核分別設(shè)計(jì)然后再整合在一起的方法來進(jìn)行:先進(jìn)發(fā)單個(gè)IP核,仿真、下載到FPGA板進(jìn)行測試,所有的IP核均滿足設(shè)計(jì)要求后,再掛接到WISHBONE總線上進(jìn)行仿真與驗(yàn)斑點(diǎn)。由于整體仿真成功的幾率太小,而且每次仿真占用的時(shí)間太長,因此設(shè)計(jì)中采用循序漸時(shí)的方法。實(shí)際上,每個(gè)IP核都有自身的特殊性,分別開發(fā)也是必然的。例如開發(fā)USB IP核時(shí),就要單獨(dú)開發(fā)主機(jī)端(PC機(jī))驅(qū)動(dòng)程序及8051匯編接口。2.2 關(guān)鍵技術(shù) 2.2.1 系統(tǒng)集成時(shí)仿真時(shí)間過長的解決 SOC的仿真一直是該技術(shù)實(shí)現(xiàn)中耗時(shí)最長的。在用SOPC實(shí)現(xiàn)系統(tǒng)集成時(shí),由于多個(gè)IP核集成后系統(tǒng)仿真時(shí)間延長,占用了系統(tǒng)寶貴的開發(fā)時(shí)間,而USB IP核仿真時(shí)占用時(shí)間最長,因此開發(fā)兩個(gè)模型:一個(gè)是USB HOST端的HDL行為模型,這個(gè)模型模擬了一個(gè)真實(shí)HOST的行為過程,如上電檢測、速度識別、標(biāo)準(zhǔn)設(shè)備請求等過程,并且可以檢測USB設(shè)備應(yīng)答數(shù)據(jù)是否正確。另一個(gè)是8051 IP核的行為模型,用于仿真8051核的行為。把這兩個(gè)模型與USB IP連接,在Modelsim軟件包中進(jìn)行仿真。實(shí)驗(yàn)證明效果很好,與直接用IP核集成方式仿真相比,時(shí)間減少了80%以上。 2.2.2 MC8051 IP核數(shù)據(jù)傳輸端口的選取 在考慮如何選取MC8051 IP核的數(shù)據(jù)傳輸端口時(shí),有兩種方案可供選擇:一種是利用四組8位并行I/O端口作為主設(shè)備(MASTER)數(shù)據(jù)傳送信號端口,它們的編程方式、時(shí)序、功能與8051單片機(jī)的四個(gè)并行口p0、p1、p2、p3相似;另一種方案是利用該核特有的用于與RAM存儲器傳送數(shù)據(jù)的端口作為主設(shè)備端口;同時(shí)把RAM存儲器接在WISHBONE總線的從設(shè)備端口,以使從設(shè)備與8051 IC核進(jìn)行數(shù)據(jù)傳輸。后一種方案與前一種方案相比,優(yōu)點(diǎn)是當(dāng)設(shè)備已經(jīng)被選中處于就緒狀態(tài)時(shí),只需要一條MOVX指令就可以完成對從設(shè)備的仿問(讀、寫操作)。而第一種方案至少需要先通過并行I/O端口輸出地址、再輸出數(shù)據(jù)或讀入數(shù)據(jù),至少需要兩條以上傳送指令,增加了數(shù)據(jù)傳送時(shí)間。通過對代碼的分析和仿真可以知道,使用第二種方案大大提高了運(yùn)行速度(約為前一種的三倍),同時(shí)方便了系統(tǒng)的開發(fā)。 2.2.3 系統(tǒng)軟件的運(yùn)行方式 由于8051 IP核的指令執(zhí)行從ROM中的0地址開始,因此需要把ASM51匯編程序先編譯生成HEX文件,再把這個(gè)文件與硬件一起綜合、映射、下載,這樣該HEX文件就可以作為初始文件保留在ROM中,用來實(shí)現(xiàn)軟硬件協(xié)同仿真。2.2.4 仿真庫的選取 有些軟件包不含所有的FPGA器件的單元庫(Logic Cell Library),如ActiveHDL6.1。因此仿真時(shí)常報(bào)庫單元不存在錯(cuò)。設(shè)計(jì)中采用的辦法是用Modelsim仿真,并且提前編譯好的仿真用的單元庫。這樣就很好地完成了邏輯門級仿真和時(shí)序級(布局布線后)仿真。 3 系統(tǒng)新增重要部分的設(shè)計(jì)及創(chuàng)新之處 由于水文測報(bào)的特殊性,常常需要傳送大容量的文件,如圖片、實(shí)時(shí)數(shù)據(jù)采集包等,同時(shí)有些數(shù)據(jù)需要備份、上傳。原單片機(jī)PCB板有UART、I2C等通信功能塊,本文的SOPC集成除了開發(fā)上述功能模塊IP核外,還增加了USB IP核的設(shè)計(jì)。在實(shí)際測試中,USB接口的使用大大提高了系統(tǒng)的數(shù)據(jù)傳輸速度,而且更方便、更靈活,大大提高了系統(tǒng)功能。 USB協(xié)議結(jié)構(gòu)復(fù)雜,涉及的面很廣,IP核的開發(fā)難度最大,同時(shí)考慮到USB IP核在整個(gè)系統(tǒng)中的特殊性,下面將詳細(xì)說明USB IP核的設(shè)計(jì)與集成過程。 3.1 USB IP核設(shè)計(jì)基本原理及框圖。 USB IP核的設(shè)計(jì)原理圖如圖5所示。USGB主控制器為USB主機(jī)端(通常安裝在計(jì)算機(jī)內(nèi)),負(fù)責(zé)主機(jī)與USB設(shè)備間的物理數(shù)據(jù)傳輸,即將客房軟件啟動(dòng)的數(shù)據(jù)傳輸轉(zhuǎn)化為USB總線上的實(shí)際串行數(shù)據(jù)流,經(jīng)USB傳輸線傳輸。收發(fā)器將收到的數(shù)據(jù)轉(zhuǎn)換成數(shù)字CMOS串行數(shù)據(jù)流,然后通過USB核控制邏輯傳輸?shù)皆O(shè)備端點(diǎn)(圖中的E0~E6),最后通過DMA接口傳送到8051 IP核或存儲在SSRAM中。 按照USB協(xié)議,USB提供三種速度傳輸模式:低速的1.5Mbps、全速的12Mbps、高速的480Mbps。根據(jù)設(shè)計(jì)要求,USB IP核的傳送速率應(yīng)當(dāng)在全速以上。因此,設(shè)計(jì)USB核時(shí),采用全速的USB設(shè)備標(biāo)準(zhǔn),同時(shí)增設(shè)DMA接口和DMA控制器IP核,以保證升級成高速設(shè)備時(shí)USB IP核的可復(fù)用性。 實(shí)際上,USB IP核采用的主頻是48MHz,而8051 IP核的時(shí)鐘只有12MHz,兩者主頻不同,必然產(chǎn)生時(shí)鐘不同步問題。由于8051核的主頻只有USB核的四分之一,大大低于USB設(shè)備的速度,因此,當(dāng)數(shù)據(jù)傳送到設(shè)備端大大低于USB設(shè)備的速度。當(dāng)數(shù)據(jù)傳送到設(shè)備端點(diǎn)時(shí),8051 IP核與USB IP核的通信將成為速度瓶頸。圖53.2 創(chuàng)新之處 為了解決速度問題和同步難點(diǎn),在8051 IP核與USB IP核端點(diǎn)之間,設(shè)置了兩個(gè)可轉(zhuǎn)換控制的緩沖區(qū)——BUF0和BUF1,大小都等于USB最大包的大小。數(shù)據(jù)流程如圖6所示。 這兩個(gè)緩沖區(qū)由一個(gè)標(biāo)志寄存器控制,狀態(tài)控制器的值只有兩個(gè):01或10。01表示USB IP核邏輯控制BUF0緩沖區(qū),8051 IP核通過DMA控制器操作BUF緩沖區(qū);反之,值為10,則BUF0由8051 IP核讀寫,BUF1由USB IP核邏輯操作。 數(shù)據(jù)交換的過程如下:(1)初始化:復(fù)位后,8051 IP核通過WINSHBONE總線預(yù)置數(shù)據(jù)到BUF0緩沖區(qū);(2)數(shù)據(jù)輸入:USB IP核端點(diǎn)讀入一個(gè)緩沖區(qū)數(shù)據(jù),同時(shí)8051 IP核端口對另一個(gè)緩沖區(qū)數(shù)據(jù);(3)數(shù)據(jù)輸出:USB IP核端點(diǎn)寫數(shù)據(jù)到一個(gè)緩沖區(qū),8051 IP核端口再從這個(gè)緩沖 區(qū)數(shù)據(jù);兩者也可同時(shí)進(jìn)行,但具體實(shí)現(xiàn)十分復(fù)雜,在此不多討論。 這么做的好處是:首先,8051 IP核和USB IP核讀入時(shí)可以同時(shí)操作,USB IP核不用等到8051核工作完成再進(jìn)行下一步工作,提高了速度:其次,由于分開操作,時(shí)鐘不同步問題基本得到了解決;再次,如果想進(jìn)下不提高芯片速度,例如要進(jìn)行數(shù)據(jù)組的傳輸(一次與8051 IP核交換四組8位數(shù)據(jù)),也會(huì)更加方便快捷。 4 測試實(shí)驗(yàn)結(jié)果 整個(gè)系統(tǒng)包括硬件平臺和軟件功能實(shí)現(xiàn)兩部分。硬件包括MCU核心系統(tǒng)和外圍輔助電路。軟件包括程序調(diào)試器軟件、8051 IP核網(wǎng)關(guān)功能程序包以及一部分IP核的PC驅(qū)動(dòng)程序(如USB WINDOWS下的驅(qū)動(dòng)程序)。整個(gè)系統(tǒng)測試包括硬件平臺測試和軟件功能測試。 在硬件驗(yàn)證時(shí),F(xiàn)PGA采用ALTERA公司CYCLONE系列的EP1C12Q240C8,雙時(shí)鐘頻率,USB IP核時(shí)鐘頻率為48MHz,其它部分(含MC8051)邏輯工作時(shí)鐘頻率為11.0592MHz,實(shí)驗(yàn)板為低成本雙層PCB板。系統(tǒng)建立后實(shí)現(xiàn)了對MC8051定時(shí)器定時(shí)功能的驗(yàn)證、UART模塊的驗(yàn)證、USB數(shù)據(jù)包傳送的測試、對中斷控制器的驗(yàn)證。 軟件測試主要是對8051核網(wǎng)關(guān)功能程序的測試。代碼下載到實(shí)驗(yàn)板后對信道數(shù)據(jù)接收進(jìn)行了200次試驗(yàn)(以RF信道為例)。測試結(jié)果均符合“微機(jī)向前置機(jī)配置命令”所列各項(xiàng)命令的應(yīng)答,準(zhǔn)確無誤,實(shí)現(xiàn)了水情數(shù)據(jù)可靠的接收、存儲以及將數(shù)據(jù)上傳到后臺微機(jī)等功能。圖6SOPC技術(shù)以中硬件協(xié)同設(shè)計(jì)、具有知識產(chǎn)權(quán)的內(nèi)核(IP Core)復(fù)用和超深亞微米技術(shù)為支撐,采用SOPC技術(shù)設(shè)計(jì)并實(shí)現(xiàn)的芯片是面向特定用戶的芯片,它能最大程度滿足系統(tǒng)的要求,與傳統(tǒng)的板上系統(tǒng)相比,具有許多優(yōu)點(diǎn): ①充分利用IP技術(shù),減少了產(chǎn)品設(shè)計(jì)復(fù)雜性和開發(fā)成本,縮短了產(chǎn)品開發(fā)的時(shí)間; ②單芯片集成電路可以有效地降低系統(tǒng)功耗; ③減少了芯片對外引腳數(shù),簡化了系統(tǒng)加工的復(fù)雜性; ④減少了外圍驅(qū)動(dòng)接口單元及電路板之間的信號傳遞,加快了數(shù)據(jù)傳輸和處理的速度; ⑤內(nèi)嵌的線路可以減少甚至避免電路板信號傳送時(shí)所造成的系統(tǒng)信號串?dāng)_。 在本設(shè)計(jì)中由于采用了SOPC技術(shù),整個(gè)系統(tǒng)的性能和穩(wěn)定性有了很大提高。因此,SOPC技術(shù)及應(yīng)用的特點(diǎn)決定它可以為復(fù)雜的板上系統(tǒng)提供了一種更高效更穩(wěn)定的解決方案。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();