基于單片機(jī)軟核的SOPC系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
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總線連接線可分為:同步信號(hào)線CLK-I;設(shè)備地址線ADR;主IP核到從IP核的數(shù)據(jù)輸出線DAT_O,從IP核到主IP核的數(shù)據(jù)輸入線DAT_I;控制線SEL、STB、CYC、ACK;附加線TAGN(用戶可以自行定義,本文定義了定信號(hào)線WE)。
WISHBONE的數(shù)據(jù)傳輸由主設(shè)備控制,采用握手信號(hào)STB-O和ACK-I控制傳輸過程,如圖4所示。
以本文設(shè)計(jì)為例,一個(gè)WSIHBONE總線讀周期的詳細(xì)過程可分解如下:
(1)運(yùn)行8051匯編程序,8051 IP核(主IP核)使CYC-O為高,表示8051 IP核占用總線;同時(shí)送出SEL-O信號(hào)選取從設(shè)備核(SEL-O信號(hào)線電平定義從設(shè)備核地址;本文中UART IP核地址為0001、I2C IP核地址為0010、USB IP核地址為0101;假設(shè)SEL-O送出的信號(hào)線電平為0101,即USB IP核被選中),同時(shí)發(fā)出STB-O握手信號(hào)通知從設(shè)備核送出數(shù)據(jù)。
(2)USB IP核收到選中信號(hào)和STB激勵(lì)信號(hào)后,把數(shù)據(jù)放在數(shù)據(jù)線上,并送出ACK信號(hào)表明設(shè)備準(zhǔn)備好。
(3)8051 IP核收到ACK信號(hào),從數(shù)據(jù)線上讀取數(shù)據(jù)。
(4)數(shù)據(jù)讀出后,8051 IP核把STB信號(hào)置低,通知從IP核數(shù)據(jù)已讀出。
(5)USB IP核收到STB低電平信號(hào),把ACK置低,一個(gè)數(shù)據(jù)傳送周期結(jié)束。
寫周期與以上過程類似,不同之處在于8051核收到ACK高電平信號(hào)后才把數(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ā)平臺(tái)。
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的行為過程,如上電檢測、速度識(shí)別、標(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ù)傳送信號(hào)端口,它們的編程方式、時(shí)序、功能與8051單片機(jī)的四個(gè)并行口p0、p1、p2、p3相似;另一種方案是利用該核特有的用于與RAM存儲(chǔ)器傳送數(shù)據(jù)的端口作為主設(shè)備端口;同時(shí)把RAM存儲(chǔ)器接在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地址開始,因此需要把ASM5
1匯編程序先編譯生成HEX文件,再把這個(gè)文件與硬件一起綜合、映射、下載,這樣該HEX文件就可以作為初始文件保留在ROM中,用來實(shí)現(xiàn)軟硬件協(xié)同仿真。
2.2.4 仿真庫的選取
有些軟件包不含所有的FPGA器件的單元庫(Logic Cell Library),如ActiveHDL6.1。因此仿真時(shí)常報(bào)庫單元不存在錯(cuò)。設(shè)計(jì)中采用的辦法是用Modelsim仿真,并且提前編譯好的仿真用的單元庫。這樣就很好地完成了邏輯門級(jí)仿真和時(shí)序級(jí)(布局布線后)仿真。
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)功能。
評論