SMC主機接口模塊可輕松將通過Synphony模型編譯器創建的設計集成在賽靈思嵌入式平臺中。
Synphony模型編譯器(SMC)是一款Synphony提供的、基于模型的工具,其可綜合在Simulink?及MATLAB?中創建的設計,從而可為ASIC和FPGA目標應用生成優化的RTL。SMC包含一個綜合而全面的高級模型庫,可在Simulink環境中創建數學、信號處理及通信設計。該庫可在高級模型設計環境中簡化定浮點單速率或多速率算法的捕獲及功能調試。SMC RTL生成引擎可使用這些經過驗證的模型自動創建RTL,為占位面積、性能、功耗以及吞吐量利弊權衡實現多架構的硬件實施及快速探索。SMC的高級綜合引擎采用頂級設計以及MATLAB語言輸入,可生成針對所選硬件目標而優化的RTL。此外,SMC還可針對設計自動生成一個RTL測試平臺,并配以比特及周期高精度的C模型與SystemC封裝程序,可在SystemC仿真環境中實現對所生成硬件的驗證。
在許多應用中,設計人員通過創建外設來執行一些信號處理功能,并必須通過主機處理器(例如賽靈思 MicroBlaze?軟處理器內核)來配置該外設。主機處理器通常采用標準總線接口(例如AMBA? AXI4或AXI4-Lite)連接外設。SMC庫包括主機接口模塊,其可來實現主機處理器的從接口。該主機接口模塊不僅支持AXI4-Lite、APB、通用接口以及Avalon-MM總線接口協議標準,而且還可通過實現必要的內存映射的寄存器來配置SMC設計,其中包括FIR濾波器系數、數控振蕩器(NCO)的頻率與相位設置以及各種長度FFT模塊的FFT長度。此外,該主機接口模塊在實現內存映射的控制寄存器時可以采用任意需要的采樣頻率,可以與總線接口時鐘異步。您可在主機接口模塊的UI中指定總線接口及存儲器映射設置。設計人員可使用主機接口模塊將SMC設計連接至總線互聯或者總線主控。
現在我們來詳細了解一下,如何將通過SMC主機接口模塊設計的外設導入并集成到賽靈思嵌入式開發套件(EDK)項目中。此外,我們還將考證如何仿真通過標準總線互連連接的從MicroBlaze主機處理器到外設的AXI4-Lite總線的數據傳輸。該過程有四個主要步驟:
1. 使用IP、主機接口模塊以及SMC RTL生成引擎在Simulink中創建外設,為設計生成優化的RTL實施方案;
2. 將該外設導入賽靈思EDK工程,并將其與余下的設計集成;
3. 在SDK中開發軟件應用;
4. 生成RTL并對其進行仿真,以檢查軟硬件功能是否正確。
第1步:使用SMC庫創建外設
您要做的第一件事是使用SMC庫模塊創建外設的算法實施,并驗證功能性。然后根據兩個因素配置SMC主機接口模塊:算法部分的配置數據(其可定義存存儲器映射參數)與系統的互聯總線協議(其可定義總線接口參數)。然后將主機接口模塊與外設算法部分聯系起來。主機接口模塊的一些參數(例如總線互連、地址寬度與基址)將取決于您的目標平臺。例如,我們選擇賽靈思Virtex?-7 FPGA作為平臺,并選擇AXI4-Lite作為總線接口。該平臺對每個外設的地址寬度、基址以及地址空間都有一定的限制。地址寬度必須為32位,而基址必須為4K字節的倍數,最小可用地址空間為4K字節。圖1和圖2是總線接口協議及存儲器映射如何使用主機接口模塊進行配置的視圖。
為了便于集成,雖然不是強制性的,但也強烈推薦SMC模型中的總線接口端口遵循賽靈思EDK要求的命名慣例。請為標準AXI4-Lite接口信號名稱添加“S_AXI_”。例如,AXI地址編寫通道(AWADDR)的地址信號應該命名為S_AXI_AWADDR。如果信號不遵循AXI4-Lite的命名慣例,則在外設導入賽靈思EDK時就有可能將端口名稱映射到AXI4-Lite信號名稱上。另外,Simulink模型名稱中不要使用大寫字母,因為EDK不支持其名稱中帶有大寫字母的外設。
添加、配置和連接主機接口模塊后,就可使用SMC的RTL生成引擎為外設生成RTL。請在SMC UI中指定目標設備、實施參數和優化限制,以促使RTL生成引擎為目標設備生成優化的硬件。在SMC生成的頂級RTL中添加兩個虛擬參數(頂層RTL一般為VHDL),命名為:“C_BASEADDR”和“C_HIGHADDR”。根據IP要求將其默認值分配給存儲器映射空間的基址和存儲器映射空間的最大地址。這一步必需確保EDK可識別外設的存儲器映射地址空間。SMC生成型設計的頂級Verilog RTL的實例如下所示,有兩個參數需要高亮顯示。
?
為了便于集成,雖然不是強制性的,但也強烈推薦SMC模型中的總線接口端口遵循賽靈思EDK要求的命名慣例。
第2步:將外設導入賽靈思EDK并對其進行集成
下一步是將外設硬件導入EDK的賽靈思Platform Studio(XPS),并在系統中進行必要的連接(總線接口端口以及功能端口)。在本示例中,我們已經創建了具有MicroBlaze處理器的基本系統、用于存儲可執行軟件的模塊RAM (BRAM)、本地存儲器總線(LMB)、AXI4-Lite互連以及MicroBlaze調試模塊。
在XPS GUI的硬件目錄下選擇“創建或導入外設”選項。這將打開創建并導入外設向導。在該向導中選擇“導入現有外設”選項。然后指定外設的存儲路徑、設計名稱以及文件類型(HDL)。現在添加所有SMC生成的RTL文件。成功編譯RTL之后,您需要識別外設支持的總線接口,即AXI4-Lite從接口,如圖3所示。
在向導的下一個頁面中選擇外設的AXI4-Lite端口,并將其映射到標準AXI4-Lite端口上,以便EDK能夠連接總線接口。如果SMC模型中定義的總線接口端口名稱與標準總線端口名稱相匹配,則EDK將自動映射端口(參見圖4)。
如果端口名稱不匹配,則可能要覆蓋自動映射,如AXI4-Lite時鐘(Clk-Div3)和復位(GlobalReset)信號所示。
然后,按照第一步中插入RTL的C_BASEADDR和C_HIGHADDR參數,指定寄存器空間基址和高位地址。請取消選擇存儲器空間選項,因為主機接口模塊具有可尋址的配置寄存器空間。但是在下個頁面中要保持RTL參數的默認屬性不變,以確保與主機接口模塊中指定的參數一致。
下個頁面的標題為“端口屬性”。在這里,您必須指定時鐘屬性,或者所有其它時鐘上的復位或設計中的復位。請點擊下個頁面中的“完成”,添加外設至XPS項目。SMC外設現已成功導入XPS。您可通過查看
/pcores文件夾(XPS使用外設名稱在此創建一個目錄)驗證是否成功。瀏覽該目錄,檢查RTL文件是否正確導入。
此外,XPS還將創建一個與HDL目錄并列的目錄,名為“數據”。該數據目錄包含微處理器外設描述(*.mpd)文件以及相關外設參數及其端口信息。查看SIGIS = CLK和SIGIS = RST參數是否已在時鐘及復位端口上定義。如果沒有定義,則需要編輯*.mpd文件并手動添加定義。圖5是添加了這些參數的文件實例。
現在,您將在XPS GUI的IP目錄部分看到您的外設位于項目本地PCores下的“用戶”子目錄中。請右鍵點擊外設名稱,并選擇“添加IP”。XPS核心配置窗口將打開。不要編輯本窗口中的任何參數,保持默認設置不變,以符合賽靈思EDK流程。如果EDK不接受指定的地址空間,則代表指定的存儲器映射與設計中的某些其它外設有沖突。您必須返回SMC,使用新的基址值重新生成RTL,并重復上述步驟導入SMC外設。當正確的基址及高位地址值可用時,請點擊核心配置窗口中的“確定”按鈕。XPS將打開“舉例說明并連接IP”GUI。您既可命令工具自動鏈接外設與互聯總線(由可用處理器驅動),也可選擇手動連接外設。連接完成以后,就會看到圖6中顯示的接口連接。
?
在圖形設計視圖選項卡中的總線接口連接中再次檢查與AXI4-Lite相關的時鐘與復位是否已連接。如果沒有自動連接,請編輯中的微處理器硬件規范文件
.mhs。圖7是添加了時鐘與復位端口的*.mhs文件。
?
下一步,使用系統裝配視圖窗口的端口選項卡連接設計中的非AXI4-Lite端口。在系統裝配視圖的地址選項卡中,請確保外設地址空間可見,并確保地址范圍已鎖定。
現在,通過在XPS GUI的項目目錄中選擇“導出硬件設計至SDK”將硬件導出至賽靈思軟件開發套件。如果你只想運行RTL仿真,則不需要生成比特流。完成后,XPS會創建一個*.xml文件,用以描述導入SDK的硬件。該文件一般會在
/SDK/SDK_Export/hw文件夾中創建。
第3步:使用賽靈思SDK開發軟件驅動程序
集成的下個步驟是使用賽靈思SDK開發軟件驅動程序。請啟動SDK并創建一個硬件平臺規范項目,以源出*.xml文件。如果已經在EDK中選擇了“導出并啟動”選項,則會自動創建該項目,而且IP模塊和地址映射信息已在SDK項目中提供。
在創建板級支持包(BSP)之前,您必須為您的外設創建驅動程序文件。典型的驅動報頭文件必須定義存儲器映射的寄存器偏移地址以及讀取和寫入這些寄存器的原型。
將驅動程序文件復制到SDK項目資源庫中,用以識別驅動程序并創建BSP項目。打開一個新的空白應用項目創建軟件,然后從外設讀取和寫入數據。在該項目中,請指定按照該步驟第一個任務創建的硬件目標平臺以及您剛剛創建的BSP。請在BSP設置窗口中查看設計的外設驅動程序內核。
應用項目包含一個main.cc文件,其中寫有用于應用的軟件代碼。創建該文件后,SDK會自動編譯代碼,并創建一個*.elf文件,其可用于仿真RTL仿真環境中的軟件代碼。
應用項目包含一個main.cc文件,其中寫有用于應用的軟件代碼。例如可將各種值寫入存儲器映射前兩個寄存器(Status_register和Control_register)中的程序。創建該文件后,SDF會自動編譯代碼并創建一個*.elf文件,其可用于仿真RTL仿真環境中的軟件代碼。該*.elf文件隨后可用于驗證功能性,見第4步。
通過AXI4-Lite從接口使用主機接口模塊將SMC生成的外設與賽靈思嵌入式平臺集成非常簡單。
第4步:在XPS中生成RTL文件
最后一步是在XPS中生成RTL,并對其進行仿真,以便驗證軟硬件功能是否正確無誤。在XPS GUI中的項目目錄下選擇“選擇Elf文件”選項,然后選擇“選擇仿真Elf文件”,以指定Elf文件(SDK創建的)的路徑。該文件在應用項目文件夾中提供。要創建測試平臺模板與行為仿真模型(參見圖8),您需要在GUI的項目目錄下選擇項目選項的設計流程選項卡設置。
?
然后,通過選擇“生成HDL文件”創建HDL文件,并啟動ISE? (ISim)HDL仿真器,以檢查功能的正確性。圖9是MicroBlaze處理器針對SDK項目中的軟件C代碼發起的AXI4-Lite事務處理。請注意,外設的前兩個寄存器(Status_register和Control_register)可根據計劃改變其值。位于外設接口的相應AXI4-Lite信號顯示,SMC創建的外設已經成功集成在嵌入式項目中。
強大的工具套件
通過AXI4-Lite從接口使用主機接口模塊將SMC生成的外設與賽靈思嵌入式平臺集成非常簡單。SMC和賽靈思嵌入式平臺的完美結合可帶來一款功能強大的工具套件,能夠幫助您設計和開發與主機處理器集成的DSP外設。SMC中的主機接口模塊不僅可提供完成無縫集成所必需的接口,而且還可為嵌入式平臺創建功能強大的解決方案。
評論