摘要:介紹了一種智能" title="智能">智能信號轉換" title="信號轉換">信號轉換模塊的設計方法,。這種智能模塊采用了基于FPGA" title="FPGA">FPGA嵌入式軟核" title="軟核">軟核系統(tǒng),是基于NiosII軟核處理器的架構,,可以在模塊上完全實現(xiàn)外部總線信號之間相互轉換,,無需驅動程序或操作系統(tǒng)的干預。同時對用戶邏輯設計,、用戶邏輯集成,、固件設計技術等內容進行了詳細的介紹。
關鍵詞:現(xiàn)場可編程門陣列,;軟核,;智能
0 引言
在工業(yè)控制等領域的計算機系統(tǒng)中廣泛涉及到信號轉換等,信號轉換模塊在系統(tǒng)中承擔著在多種信號之間進行翻譯轉換的任務,。隨著應用環(huán)境復雜性,、計算機系統(tǒng)集成度的提高,信號轉換模塊上需容納的信號通道的種類與數(shù)量也越來越多,。頻繁,、大量的信號轉換必然會占用較多的系統(tǒng)資源。隨著微電子技術的發(fā)展,,國外的一些生產(chǎn)廠商如Altera已推出在FPGA上以軟核(soft core)方式實現(xiàn)的嵌入式系統(tǒng),。這種嵌入式系統(tǒng)基于NIOS II" title="NIOS II">NIOS II嵌入式軟核處理器,其外設可以靈活選擇增刪,,并允許自定制外設,。本文介紹了一種基于NIOSⅡ軟核系統(tǒng)的智能429-422信號轉換模塊的設計。
1 設計原理
傳統(tǒng)的非智能設計的轉換模塊,,在工作時需要有驅動程序的控制,,通過與操作系統(tǒng)或用戶軟件的交互,來實現(xiàn)信號轉換的功能,,亦即需要接入PCI Bus等系統(tǒng)總線,,通過中斷提請等方式工作,,在轉換通道數(shù)量多時,必然會影響系統(tǒng)的性能,。采用智能設計的信號轉換模塊一般不需要操作系統(tǒng)的干預,,接收到的外部總線信號經(jīng)過本模塊上NIOS II軟核系統(tǒng)轉換后,即可將數(shù)據(jù)信號輸出,。信號轉換的工作全部由模塊的硬件完成,,因而可以實現(xiàn)對整個計算機系統(tǒng)資源的零占用。采用非智能設計與智能設計模塊的結構示意框圖如圖1所示,。
2 硬件設計
429或422總線適配電路已有大量成熟的設計,,本文不再贅述,僅重點介紹FPGA內部總線控制邏輯設計以及NiosⅡ軟核系統(tǒng)的配置,。
2.1 FPGA控制邏輯設計
集成于FAPGA內部的Nios II CPU需要通過外部總線控制邏輯才能與外部總線進行通信,,而Avalon總線是Nios II CPU與外部總線控制邏輯、片外FLASH,、SRAM之間交換數(shù)據(jù)信號的樞紐,。Avalon總線是一種協(xié)議較為簡單的片內總線,在NiosⅡ系統(tǒng)中,,外設都是通過Avalon總線與Nios II CPU相接的,。Avalon總線接口可以分成兩類:Slave和Master,Slave和Master主要區(qū)別是對于Avalon總線控制權的掌握,。Master接口具有與之相接的Avalon總線的控制權,,而Slave接口是被動的。Avalon總線支持自定制外設,,用戶可將自己的邏輯設計掛接到Avalon總線上,?;贜IOSⅡ軟核系統(tǒng)的智能429-422信號轉換模塊設計的詳細系統(tǒng)結構框圖如圖2所示,。
2.1.1 串行總線控制邏輯設計
為了將用戶自定制的串行總線控制邏輯接入NiosⅡ系統(tǒng),必須將其掛入Avalon總線,。串行總線控制邏輯在設計上必須實現(xiàn)兩類端口:一類為Avalon總線端口,,Avalon總線時序由NiosⅡ系統(tǒng)實現(xiàn),用戶在邏輯設計時可暫不作考慮,;另一類為串行總線控制端口,。串行總線讀操作時序如圖3所示,圖中給出了操作時各信號的時序保持關系,。
讀時序在設計上可以抽象為一個有限狀態(tài)機,,如圖4所示。其工作流程為:無數(shù)據(jù)傳輸時,,狀態(tài)機停留在空閑狀態(tài),;若有數(shù)據(jù)操作請求時,,進入“地址有效”的狀態(tài);再進入“讀信號有效”狀態(tài),,依次完成“數(shù)據(jù)讀取”,、“操作安全間隔”狀態(tài)(FPGA片外器件要求的兩次操作之間的最小間隔)??紤]到異常產(chǎn)生后狀態(tài)機的穩(wěn)定性,,每個狀態(tài)都可以在異常產(chǎn)生時返回到默認的“空閑”狀態(tài)。同時,,有些狀態(tài)作了些等待延時,,是為了讓控制邏輯與FPGA外部較慢速的器件進行時序匹配。串行總線寫操作時序與讀操作時序相類似,。
2.1.2 429總線控制邏輯設計
429總線控制邏輯設計和串行總線控制邏輯設計方法與上文所述類似,,這里不再重復。
2.2 NiosIICPU的配置
需要將自定制外設集成進嵌入式系統(tǒng),。本設計所使用的FPGA是Altera公司的EP2C35,,可在Altera公司推出的開發(fā)軟件Quartus II里對NiosⅡCPU進行配置。操作步驟為:在System contents中新建一個組件,,在彈出的Component Editor窗口中的HDL Files欄中導入用戶設計好的422接口控制邏輯設計的verilog文件,;Signals一欄中,Component Editor已自動解析出導入的verilog文件所包含的端口Name,,但用戶還需對端口的類型進行指定,,串行總線方向的端口須指定為export(相對于Avalon Slave端口而言)類型,Avalon總線方向的端口分別指定為標準的address,、write,、read、writedata,、readdata等信號,,如圖5所示。
設置完成后的自定制器件出現(xiàn)在Custom Devices中,,可以將自定制的器件加入到Nios Ⅱ系統(tǒng)中,,由Nios Ⅱ系統(tǒng)為其自動批定內存地址等資源。編譯無誤后即可完成NiosII CPU的設置,。
3 軟件設計
Nios II嵌入式系統(tǒng)使用Altera公司提供的開發(fā)環(huán)境Nios Ⅱ IDE,,Nios II IDE使用標準的C/C++語言作為編程語言,因此開發(fā)入門門檻不高,。軟件設計時,,除了包含指定的system.h,alt_main.h等頭文件,,用戶應針對被集成進入系統(tǒng)的自定制器件編寫相應的頭件,,即將Al-tera提供的基本命令重新封裝成用戶自定義的軟件命令,,以使用戶的程序更加直觀、更具有可讀性,。
軟件流程圖如圖6示,。在每次上電復位后,智能模塊應對整個系統(tǒng)進行重新初始化,,包括外設控制字的配置以及緩存初始化等工作,。初始化完成后,應首先檢查有無接收請求,,如有請求,,則開始接收、轉換數(shù)據(jù),,并寫入發(fā)送緩存,,然后再判斷一次有無接收請求,如無,,才轉入發(fā)送流程,。發(fā)送完一次數(shù)據(jù)后,再次檢查接收請求,。這種做法提高了數(shù)據(jù)接收事件的優(yōu)先權,,可以保證接收數(shù)據(jù)不丟失。
4 結束語
基于NIOSⅡ軟核系統(tǒng)的智能429-422信號轉換模塊采用了智能化的設計技術,,對比于非智能信號轉換模塊,,具有零系統(tǒng)資源占用、可配置性強,、轉換速度快等特點,,同時由于無須開發(fā)驅動軟件,因而明顯縮短了研發(fā)周期,,在工業(yè)控制等計算機系統(tǒng)中將會有廣泛的應用,。