摘要: 應用MicroBlaze軟核作為CPU的硬件平臺,在此平臺上設計了基于AXI總線的通用實時時鐘IP核。給出了創建IP核的過程和導入IP核的方法。介紹了實時時鐘的IP核結構,給出了IP核的結構框圖。介紹了實時時鐘的原理,給出了實時時鐘各個模塊的核心代碼。
引言
MicroBlaze是可以嵌入到FPGA中的RISC處理器軟核,具有運行速度快、占用資源少、可配置性強等優點,廣泛應用于通信、軍事、高端消費市場等領域。Xilinx公司的MicroBlaze 32位軟處理器核是支持CoreConnect總線的標準外設集合。MicroBlaze處理器運行在150 MHz時鐘下,適合設計針對網絡、電信、數據通信和消費市場的復雜嵌入式系統。
AXI是ARM公司提出的AMBA3.0協議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內總線。AXI 總線技術不但使片上系統面積更小功耗更低,同時還獲得了更加優異的性能。AXI 能達到這樣的技術指標的一個主要原因,就是它的單向通道體系結構。單向通道體系結構使得片上的信息流只以單方向傳輸,減少了延時。AXI 技術滿足超高性能和復雜的片上系統設計的需求,因此AXI的與應用也越來越廣泛[1]。隨著ARM公司與Xilinx公司的合作逐步加強,Xilinx開始逐步在FPGA產品中大力推廣AXI總線技術。AXI在Xilinx公司的MicroBalze等CPU上面得到越來越重要的支持,必將成為未來的主流技術。
1 IP核的創建與導入
Xilinx的MicroBlaze軟核為用戶提供了大量的可用IP核,方便用戶開發縮短開發周期,降低成本。但是用戶的需求千差萬別,官網提供的IP核不可能滿足所有人的需求。因此開發環境支持用戶自定義IP核,根據用戶的不同需求,用戶可以通過定制的方式開發自己需要的IP核。在測控裝置的研發過程中,筆者發現插件上設計的RTC時鐘芯片,雖然具有掉電保持時間的功能。但是在完成裝置界面對時等功能時,對RTC芯片的讀寫操作顯示到界面上后,會有一定的延時,界面無法精確的顯示當前的時間。因此設計一個通過自定制IP核的形式,實現實時時鐘時鐘的功能解決上述問題。開發環境中的Xilinx Platform Studio為IP核的定值與導入提供了向導。
創建IP核的步驟如下:選擇Hardware→Create or Import Peripheral Wizward來打開創建和引入外設向導。單擊Next按鈕。選擇Create templates for a new peripheral。默認情況下新的外設將被存在pcores文件夾中方便查找。然后再次單擊Next按鈕。在Create PeripheralName and Version對話框中,輸入定制的IP核的名字,這里輸入本次定制IP核名稱為soft_rtc。下面是版本控制,可以根據需要修改。界面如圖1所示。
?
單擊Next按鈕,在Create PeripheralBus Interface 對話框中,選擇AXI4,這是新的外設將要連接的總線。對于簡單設計可以選擇AXI4_Lite;下一步在IPIF (IP 接口) 配置,這里配置接口的一些屬性,如是否是AXI 主/從設備等。所定制的IP是一個從設備,因而不需要使用主設備接口。數據寬度選擇默認的32位,下一步選擇需number of use memory ranges數量,這里選1。界面如圖2所示。
?
接下來就是IPIC(IP 互聯),也就是IP的接口信號。接下來需要使用需要使用BFM總線功能模型對外設進行仿真,本例不要使用。最后,需要選擇HDL類型、ISE工程支持和軟件驅動模板。此處使用Verilog模板,選擇后需IP接口仍然是VHDL編寫,只是用戶邏輯改用Verilog。如果不需要使用軟件驅動模板,可以不選。最后給出了外設的信息summary。完成上述步驟后,自定制的soft_rtc IP核的模版創建完成,只需根據需求對user_logic文件索要實現的功能編寫應用代碼,并配置相應的引腳。
完成user_logic的代碼編寫后,需要將完成的IP核導入工程。大致步驟如下:再次使用Hardware Create or Import Peripheral, 并單擊Next按鈕。選擇Import existing peripheral項,單擊Next按鈕再次輸入名稱soft_rtc,單擊Next按鈕,選擇Yes按鈕。下一步選中第一項HDL source files單擊Next按鈕,然后下一步驟選中第二項Use existing Peripheral Analysis Order files(*pao), Browse到相應的目錄下,選中.pao文件,單擊打開,然后單擊Next按鈕;出現圖3所示的窗口時,選中左側AXI4Lite選項,然后單擊Next按鈕后面都選擇默認選項直到出現結束窗口時選擇結束按鈕Finish按鈕。 這樣通過上述步驟完成了IP核的創建與導入。最后將IP核加入到工程中與AXI4Lite總線連接。完成IP核模版的創建與導入后,下一步就要進行完成IP核user_logic文件的代碼設計。
2 soft_rtc IP核的設計
soft_rtc IP核中主要分為與上層接口的寄存器管理模塊、為IP核提供精確時鐘的 Clock分頻模塊和RTC的核心邏輯模塊[2]。IP核接口如圖4所示。
開發板上提供有25 MHz的晶振和16.384 MHz的晶振。為了計時的精度,將16.384 MHz的輸入信號引入soft_rtc模塊。Clock 分頻模塊將輸入的16.384 MHz準晶振時鐘4分頻得到4.096 MHz的時鐘信號。分頻核心代碼如下:
always @(posedge clk_in)
begin
if(clk_div == 4'b0011)
clk_div <= 4'b0110;
else if(clk_div == 4'b0110)
clk_div <= 4'b1100;
else if(clk_div == 4'b1100)
clk_div <= 4'b1001;
else
clk_div <= 4'b0011;
end
寄存器控制模塊的主要功能是實現對RTC 模塊內部各個寄存器的讀寫控制并為整個IP 模塊提供控制信號。提供上層應用代碼與IP核代碼之間的接口。在這個模塊內部包含對每個內部功能寄存器的讀寫進行控制的子模塊和對各個子模塊時鐘的總體分布控制[3]。本設計中一共定義了16個寄存器,主要有控制寄存器、狀態寄存器以及毫秒的讀寄存器、毫秒的寫寄存器;秒的讀寄存器、秒位寫寄存器、分位的讀寄存器、分位的寫寄存器、小時位的讀寄存器、小時位的寫寄存器、以及年月日的讀與寫寄存器等。
設置RTC核心代碼如下:
always @(posedge Bus2IP_Clk)
begin
if(Bus2IP_CS[0] && Bus2IP_WrCE[0] && (Bus2IP_Addr[9:2] == SETSECOND_Addr))
SetSecondRegister <= Bus2IP_Data[5:0];
……
end
讀RTC核心代碼如下:
assign IP2Bus_Data[15:0] = (Bus2IP_CS[0] && Bus2IP_RdCE[0] && (Bus2IP_Addr[9:2] == MSECOND_Addr))?{6'h00,GetMsecondRegister}:16'hzzzz;
……
RTC的核心邏輯模塊主要完成的功能就是精確計時。IP核中通過計數器的控制,毫秒逢1000進位,秒、分和小時逢60進位,月逢12進位。設計時要全面考慮實際情況,注意對閏年以及不同月份天數不一樣等情況的處理。RTC計時的核心代碼如下:
always @(posedge SETTIME or posedge clk_jg)
begin
if(SETTIME)
SecondRegister <= SetSecondRegister;
else if((SecondRegister_B < 59) && Msecond_Carry)
SecondRegister <= SecondRegister + 1;
else if(Msecond_Carry)
SecondRegister <= 6'h00;
else
SecondRegister <= SecondRegister;
end
……
當時鐘上升沿到來或者應用程序發出設置時間指令后,進行判斷:秒位如果小于59并且毫秒位有進位,此時秒位計數器加1;如果秒位計數器大于或等于59時毫秒位有進位則將秒位清零。其他情況秒位計數器保持原來數值。 其他的分、小時、日月年等計數依次類推。
結語
soft_rtc IP核應用時,首先讀裝置中的硬件RTC芯片時間,獲取當前時間后隨后寫入設計的soft_rtc IP核,這樣是soft_rtc時間與硬件RTC時間保持同步。后面裝置運行過程中無論是保護事件上傳,還是錄波事件上傳等涉及到時間的讀寫操作都由soft_rtc IP核完成。避免了對硬件RTC芯片的反復操作,提高的穩定性,節省了系統資源。設計完成后通過串口打印,或者通過通信幀將時間信息上傳到裝置界面顯示等多方面驗證,經過長時間運行,時間精確可靠。此soft_rtc IP核方便移植可以推廣到后續的產品中。
參考文獻
[1] 田澤,曹慶年,劉天時,等. 嵌入式處理器S3C2440 Windows CE的RTC模塊設計與實現[J]. 計算機應用與軟件,2007,24(3):3133.
[2] 周飚, 謝曉陽. 有限狀態機在RTC設計中的分析與應用[J].計算機系統應用,2008,17(5):7780.
[3] 戚戰鋒. RTC技術在系統集成中的應用研究 [J].信息通信,2012(6):3738.
薩其日娜(工程師),從事電網自動化研究。
評論
查看更多