當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于NiosII的SOPC中EEPROM Controller Core的設(shè)計(jì)

1  引言

  由于FPGA的出現(xiàn),使得我們不需要承擔(dān)較大風(fēng)險(xiǎn)和較高的流片費(fèi)用將小規(guī)模的或處于研發(fā)階段的芯片制成ASIC芯片了。而基于FPGA的SOC——SOPC(可編程片上系統(tǒng)),由于其可編程性,按照用戶特定需要構(gòu)建的SOPC是一個(gè)在某種程度上替代SOC的較好方案。Altera公司為其FPGA開發(fā)了第二代軟核嵌入式處理器NiosII,同時(shí)開發(fā)了用以構(gòu)建基于NiosII處理器的SOPC Builder,使得用戶可以通過自定義邏輯的方法方便地開發(fā)基于NiosII的SOPC系統(tǒng)。SOPC Builder集成在EDA工具QuartusII中,提供了NiosII處理器及一些常用外設(shè)接口,如DMA控制器, SDRAM控制器,SPI接口以及鎖相環(huán)PLL等等,對(duì)于一些庫中沒有提供的模塊用戶可以自己定義添加。在實(shí)際應(yīng)用中,具有I2C接口的EEPROM有著廣泛的運(yùn)用,本文就是在基于NiosII的SOPC中設(shè)計(jì)了一個(gè)EEPROM Controller Core,用Verilog HDL描述硬件邏輯部分,同時(shí)編寫相關(guān)驅(qū)動(dòng),下載到Stratix系列的 FPGA中實(shí)現(xiàn)了對(duì)片外EEPROM A

T24C02的讀寫。 

2 基于NiosII的Controller Core

  SOPC中的各模塊通過Altera公司開發(fā)的Avalon總線互連。任何一個(gè)掛接在Avalon總線上的模塊都必須符合Avalon總線規(guī)范,即包含特定的信號(hào)類型clk,reset,chipselect,write,writedata等,并滿足一定建立保持時(shí)間和等待周期的讀寫模式。一個(gè)典型模塊的Controller Core由硬件和驅(qū)動(dòng)軟件兩部分構(gòu)成。

2.1硬件構(gòu)成

  基于NiosII的Controller Core是用于構(gòu)建SOPC的基本組件,它由HDL語言描述其硬件邏輯,一個(gè)典型的Controller Core由task logic(行為模塊),register  file(寄存器),interface(總線接口)三部分組成,它們?cè)谶壿嬌系年P(guān)聯(lián)關(guān)系如圖1所示:

Controller Core在邏輯上的關(guān)聯(lián)關(guān)系

圖1Controller Core在邏輯上的關(guān)聯(lián)關(guān)系

  interface是頂層模塊,與Avalon總線的直接接口;register file:通信模塊,對(duì)模塊內(nèi)部寄存器讀寫的通道;task logic:行為模塊,實(shí)現(xiàn)模塊邏輯功能的核心部分。Avalon總線通過頂層接口模塊對(duì)寄存器進(jìn)行操作,從而實(shí)現(xiàn)對(duì)行為模塊的訪問和控制。

2.2 驅(qū)動(dòng)軟件 

  驅(qū)動(dòng)軟件是系統(tǒng)提供給上層應(yīng)用程序訪問底層硬件的通道,由一些特定名稱的文件夾和C文件組成,其典型結(jié)構(gòu)和功能如下:

  (1)    inc/_regs.h頭文件是最底層的也是唯一的硬件接口,定義了與Controller Core相關(guān)的數(shù)據(jù)結(jié)構(gòu)、常量和函數(shù)原形等。

  (2)    hal/inc/_routines.h頭文件包含了實(shí)現(xiàn)驅(qū)動(dòng)功能的函數(shù)聲明等相關(guān)信息。

  (3)    hal/src/_routines.c示例程序包含了具體實(shí)現(xiàn)驅(qū)動(dòng)功能的子函數(shù),用于指導(dǎo)軟件開發(fā)人員使用該Controller Core。 

3  EEPROM工作原理

  二線制EEPROM AT24C02是一種采用I2C接口的串行可電擦除可編程只讀存儲(chǔ)器。因其接線簡(jiǎn)單且對(duì)數(shù)據(jù)修改具有足夠的靈活性,故得到了廣泛的應(yīng)用。

3.1 I2C總線規(guī)范

  I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成,可發(fā)送和接收數(shù)據(jù)。I2C總線在傳輸數(shù)據(jù)的過程中共有三種基本類型信號(hào),它們分別是開始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。應(yīng)答信號(hào):接收端在接收到8位數(shù)據(jù)后,需向發(fā)送端發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。

3.2 二線制EEPROM工作原理

  基于NiosII的SOPC通過EEPROM Controller Core可對(duì)其進(jìn)行讀寫操作,讀寫規(guī)則要遵循EEPROM的時(shí)序要求。

(1)    EEPROM的寫操作

  如圖2所示,EEPROM Controller發(fā)出“啟動(dòng)”信號(hào)后,緊接著發(fā)送4位I2C總線特征碼1010,和3位芯片地址碼xxx以及寫狀態(tài)位R/W=0。待接收到片外器件的應(yīng)答信號(hào)ACK后,控制器將跟著發(fā)送EEPROM存儲(chǔ)單元地址和要寫入的數(shù)據(jù)。EEPROM每收到一個(gè)字節(jié)的數(shù)據(jù),都要發(fā)送一個(gè)ACK應(yīng)答信號(hào)返回給主機(jī)。隨后主機(jī)發(fā)送停止信號(hào),對(duì)EEPROM寫一個(gè)字節(jié)的操作完成。
EEPROM的寫操作

(2)    EEPROM的讀操作

  如圖3所示,EEPROM的讀操作包括寫地址和讀數(shù)據(jù)兩步。控制器首先發(fā)送一個(gè)“啟動(dòng)”信號(hào)和控制字節(jié)(包括器件地址和讀寫狀態(tài)位R/W=0)到EEPROM,通過寫操作設(shè)置EEPROM存儲(chǔ)單元地址。接著控制器再發(fā)送一個(gè)“啟動(dòng)”信號(hào)和控制字節(jié)(此時(shí)R/W=1),啟動(dòng)讀操作,EEPROM收到信息后將指定單元的數(shù)據(jù)到發(fā)送到SDA線上,控制器收到數(shù)據(jù)后返回一個(gè)NACK信號(hào)給EEPROM,隨后發(fā)送停止信號(hào)。

EEPROM的讀操作

4  EEPROM Controller Core的設(shè)計(jì)

4. 1 硬件部分的設(shè)計(jì)

(1) task logic的設(shè)計(jì)

  本設(shè)計(jì)的task logic行為模塊是基于NiosII的EEPROM Controller邏輯功能的核心部分,要實(shí)現(xiàn)通過NiosII系統(tǒng)對(duì)EEPROM進(jìn)行讀寫,就要按照I2C總線規(guī)范及EEPROM的讀寫要求來設(shè)計(jì)Controller Core。有限狀態(tài)機(jī)是時(shí)序電路設(shè)計(jì)中經(jīng)常采用的方式,是許多數(shù)字電路設(shè)計(jì)的核心。所以,我們采用狀態(tài)機(jī)來實(shí)現(xiàn)控制器的核心邏輯部分。根據(jù)串行EEPROM的讀寫操作時(shí)序可知,用5個(gè)狀態(tài)時(shí)鐘可以完成寫操作,用7個(gè)狀態(tài)時(shí)鐘可以完成讀操作。讀寫狀態(tài)中有幾個(gè)狀態(tài)是一致的,用一個(gè)嵌套的狀態(tài)機(jī)即可。狀態(tài)轉(zhuǎn)移圖如圖4所示。

狀態(tài)轉(zhuǎn)移圖

圖4 狀態(tài)轉(zhuǎn)移圖

(2)register file的設(shè)計(jì)

  register file實(shí)際上是NiosII處理器通過軟件對(duì)硬件進(jìn)行訪問和控制的通道,它由一系列寄存器組成,并規(guī)定了如何對(duì)其進(jìn)行讀寫。Register file中的寄存器是根據(jù)task logic中需要完成的特定邏輯功能來設(shè)定的,task logic中的數(shù)據(jù)通過register file中的寄存器傳輸。本次設(shè)計(jì)中,register file中設(shè)定了控制字、地址及數(shù)據(jù)存儲(chǔ)器ctrl_reg,addr_reg,wr_reg,讀取數(shù)據(jù)存儲(chǔ)器rd_reg,其寬度都為8位。

(3)Interface的設(shè)計(jì)

  Interface接口模塊是與Avalon總線接口的一個(gè)top頂層模塊,主要功能是對(duì)task logic模塊和register file模塊進(jìn)行例化和封裝,使其輸入輸出信號(hào)完全符合Avalon總線信號(hào)規(guī)范,和外接模塊的信號(hào)規(guī)范。本設(shè)計(jì)中,與Avalon總線接口的信號(hào)是:clk, resetn, avalon_chip_select, address, read, write, write_data, read_data;與外接EEPROM接口的信號(hào)是:sda, scl。

  如圖5是EEPROM Controller Core硬件部分設(shè)計(jì)的modelsim仿真圖,根據(jù)器件規(guī)則,模擬Avalon總線端連續(xù)寫控制字、地址及數(shù)據(jù)寄存器,Controller模塊根據(jù)所寫的內(nèi)容將數(shù)據(jù)發(fā)送到SDA線上,實(shí)現(xiàn)對(duì)EEPROM的讀寫。

EEPROM Controller Core硬件部分設(shè)計(jì)的modelsim仿真圖

圖5 EEPROM Controller Core硬件部分設(shè)計(jì)的modelsim仿真圖

4. 2 軟件部分的設(shè)計(jì)

  EEPROM controller core的硬件部分設(shè)計(jì)好后,還需要編寫相關(guān)的驅(qū)動(dòng)程序才能添加到SOPC中使用。其驅(qū)動(dòng)設(shè)計(jì)如下:

 ?。?)inc中的altera_avalon_ eeprom _regs.h頭文件根據(jù)NiosII提供的系統(tǒng)讀寫函數(shù), 定義了讀寫寄存器的函數(shù)原型,如下所示:

  #define IOWR_ALTERA_AVALON_EEPROM_CTRL_WRITE(base, data)   IOWR(base, 0, data)

  #define IORD_ALTERA_AVALON_EEPROM_DATA_READ(base)         IORD(base, 4)

 ?。?)src中的altera_avalon_eeprom_routines.c文件,對(duì)altera_avalon_eeprom_regs.h中定義的基本函數(shù)進(jìn)行調(diào)用,編寫了實(shí)現(xiàn)對(duì)EEPROM任意地址讀寫數(shù)據(jù)的函數(shù),其中寫函數(shù)的代碼如下:

  void altera_avalon_eeprom_write(unsigned int address,alt_u8 ctrl_write,alt_u8 addr_write,alt_u8 data_write)

  {

   IOWR_ALTERA_AVALON_EEPROM_CTRL_WRITE(address, ctrl_write);

   IOWR_ALTERA_AVALON_EEPROM_ADDR_WRITE(address, addr_write);

   IOWR_ALTERA_AVALON_EEPROM_DATA_WRITE(address, data_write);

  }

5  EEPROM Controller Core的添加

  首先,用SOPC Builder中的new component edit添加設(shè)計(jì)好的Controller Core,將HDL語言描述的文件和驅(qū)動(dòng)軟件添加如圖6所示,并根據(jù)Avalon總線傳輸規(guī)范設(shè)置相關(guān)的信號(hào)線及傳輸參數(shù)。完成后就可將Controller Core添加到SOPC工程,并將其編譯下載到FPGA器件中。

HDL語言描述的文件和驅(qū)動(dòng)軟件添加

圖6 HDL語言描述的文件和驅(qū)動(dòng)軟件添加

  同時(shí),在NiosII IDE環(huán)境中,我們可以編寫用戶應(yīng)用程序,使用自己添加的器件了。在此,我們調(diào)用altera_avalon_eeprom_routines.c定義的函數(shù)編寫了簡(jiǎn)單的測(cè)試程序,對(duì)EEPROM的目標(biāo)地

址寫入數(shù)據(jù)并從該地址將數(shù)據(jù)讀出,在console控制臺(tái)中讀出結(jié)果正確。

6  結(jié)語

  本文設(shè)計(jì)了基于NiosII的EEPROM Controller Core,設(shè)計(jì)包括了HDL語言描述的硬件部分和軟件驅(qū)動(dòng)程序,并將Controller Core添加到SOPC Builder的庫中,最后下載到Stratix1S10的 FPGA上,通過讀寫函數(shù)對(duì)其進(jìn)行了驗(yàn)證。同時(shí),本次設(shè)計(jì)也為開發(fā)其它基于SOPC的Controller Core提供了一個(gè)范例。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉