新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于MicroBlaze的AXI總線實時時鐘IP核設計

基于MicroBlaze的AXI總線實時時鐘IP核設計

作者: 時間:2016-12-13 來源:網(wǎng)絡 收藏
引言

  MicroBlaze是可以嵌入到FPGA中的RISC處理器軟核,具有運行速度快、占用資源少、可配置性強等優(yōu)點,廣泛應用于通信、軍事、高端消費市場等領(lǐng)域。Xilinx公司的MicroBlaze 32位軟處理器核是支持CoreConnect總線的標準外設集合。MicroBlaze處理器運行在150 MHz時鐘下,適合設計針對網(wǎng)絡、電信、數(shù)據(jù)通信和消費市場的復雜嵌入式系統(tǒng)。

本文引用地址:http://m.butianyuan.cn/article/201612/329279.htm

  AXI是ARM公司提出的AMBA3.0協(xié)議中最重要的部分,是一種面向高性能、高帶寬、低延遲的片內(nèi)總線。AXI 總線技術(shù)不但使片上系統(tǒng)面積更小功耗更低,同時還獲得了更加優(yōu)異的性能。AXI 能達到這樣的技術(shù)指標的一個主要原因,就是它的單向通道體系結(jié)構(gòu)。單向通道體系結(jié)構(gòu)使得片上的信息流只以單方向傳輸,減少了延時。AXI 技術(shù)滿足超高性能和復雜的片上系統(tǒng)設計的需求,因此AXI的與應用也越來越廣泛[1]。隨著ARM公司與Xilinx公司的合作逐步加強,Xilinx開始逐步在FPGA產(chǎn)品中大力推廣AXI總線技術(shù)。AXI在Xilinx公司的MicroBalze等CPU上面得到越來越重要的支持,必將成為未來的主流技術(shù)。

1 IP核的創(chuàng)建與導入
  Xilinx的MicroBlaze軟核為用戶提供了大量的可用IP核,方便用戶開發(fā)縮短開發(fā)周期,降低成本。但是用戶的需求千差萬別,官網(wǎng)提供的IP核不可能滿足所有人的需求。因此開發(fā)環(huán)境支持用戶自定義IP核,根據(jù)用戶的不同需求,用戶可以通過定制的方式開發(fā)自己需要的IP核。在測控裝置的研發(fā)過程中,筆者發(fā)現(xiàn)插件上設計的RTC時鐘芯片,雖然具有掉電保持時間的功能。但是在完成裝置界面對時等功能時,對RTC芯片的讀寫操作顯示到界面上后,會有一定的延時,界面無法精確的顯示當前的時間。因此設計一個通過自定制IP核的形式,實現(xiàn)實時時鐘時鐘的功能解決上述問題。開發(fā)環(huán)境中的Xilinx Platform Studio為IP核的定值與導入提供了向?qū)А?/p>

  創(chuàng)建IP核的步驟如下:選擇Hardware→Create or Import Peripheral Wizward來打開創(chuàng)建和引入外設向?qū)А螕鬘ext按鈕。選擇Create templates for a new peripheral。默認情況下新的外設將被存在pcores文件夾中方便查找。然后再次單擊Next按鈕。在Create PeripheralName and Version對話框中,輸入定制的IP核的名字,這里輸入本次定制IP核名稱為soft_rtc。下面是版本控制,可以根據(jù)需要修改。界面如圖1所示。

單擊Next按鈕,在Create PeripheralBus Interface 對話框中,選擇AXI4,這是新的外設將要連接的總線。對于簡單設計可以選擇AXI4_Lite;下一步在IPIF (IP 接口) 配置,這里配置接口的一些屬性,如是否是AXI 主/從設備等。所定制的IP是一個從設備,因而不需要使用主設備接口。數(shù)據(jù)寬度選擇默認的32位,下一步選擇需number of use memory ranges數(shù)量,這里選1。界面如圖2所示。

接下來就是IPIC(IP 互聯(lián)),也就是IP的接口信號。接下來需要使用需要使用BFM總線功能模型對外設進行仿真,本例不要使用。最后,需要選擇HDL類型、ISE工程支持和軟件驅(qū)動模板。此處使用Verilog模板,選擇后需IP接口仍然是VHDL編寫,只是用戶邏輯改用Verilog。如果不需要使用軟件驅(qū)動模板,可以不選。最后給出了外設的信息summary。完成上述步驟后,自定制的soft_rtc IP核的模版創(chuàng)建完成,只需根據(jù)需求對user_logic文件索要實現(xiàn)的功能編寫應用代碼,并配置相應的引腳。

  完成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按鈕;出現(xiàn)圖3所示的窗口時,選中左側(cè)AXI4Lite選項,然后單擊Next按鈕后面都選擇默認選項直到出現(xiàn)結(jié)束窗口時選擇結(jié)束按鈕Finish按鈕。 這樣通過上述步驟完成了IP核的創(chuàng)建與導入。最后將IP核加入到工程中與AXI4Lite總線連接。完成IP核模版的創(chuàng)建與導入后,下一步就要進行完成IP核user_logic文件的代碼設計。

2 soft_rtc IP核的設計
  soft_rtc IP核中主要分為與上層接口的寄存器管理模塊、為IP核提供精確時鐘的 Clock分頻模塊和RTC的核心邏輯模塊[2]。IP核接口如圖4所示。

開發(fā)板上提供有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 == 4b0011)
clk_div <= 4b0110;
else if(clk_div == 4b0110)
clk_div <= 4b1100;
else if(clk_div == 4b1100)
clk_div <= 4b1001;
else
clk_div <= 4b0011;
end

  寄存器控制模塊的主要功能是實現(xiàn)對RTC 模塊內(nèi)部各個寄存器的讀寫控制并為整個IP 模塊提供控制信號。提供上層應用代碼與IP核代碼之間的接口。在這個模塊內(nèi)部包含對每個內(nèi)部功能寄存器的讀寫進行控制的子模塊和對各個子模塊時鐘的總體分布控制[3]。本設計中一共定義了16個寄存器,主要有控制寄存器、狀態(tài)寄存器以及毫秒的讀寄存器、毫秒的寫寄存器;秒的讀寄存器、秒位寫寄存器、分位的讀寄存器、分位的寫寄存器、小時位的讀寄存器、小時位的寫寄存器、以及年月日的讀與寫寄存器等。

  設置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))?{6h00,GetMsecondRegister}:16hzzzz;
……

  RTC的核心邏輯模塊主要完成的功能就是精確計時。IP核中通過計數(shù)器的控制,毫秒逢1000進位,秒、分和小時逢60進位,月逢12進位。設計時要全面考慮實際情況,注意對閏年以及不同月份天數(shù)不一樣等情況的處理。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 <= 6h00;
else
SecondRegister <= SecondRegister;
end
……
  當時鐘上升沿到來或者應用程序發(fā)出設置時間指令后,進行判斷:秒位如果小于59并且毫秒位有進位,此時秒位計數(shù)器加1;如果秒位計數(shù)器大于或等于59時毫秒位有進位則將秒位清零。其他情況秒位計數(shù)器保持原來數(shù)值。 其他的分、小時、日月年等計數(shù)依次類推。

結(jié)語
  soft_rtc IP核應用時,首先讀裝置中的硬件RTC芯片時間,獲取當前時間后隨后寫入設計的soft_rtc IP核,這樣是soft_rtc時間與硬件RTC時間保持同步。后面裝置運行過程中無論是保護事件上傳,還是錄波事件上傳等涉及到時間的讀寫操作都由soft_rtc IP核完成。避免了對硬件RTC芯片的反復操作,提高的穩(wěn)定性,節(jié)省了系統(tǒng)資源。設計完成后通過串口打印,或者通過通信幀將時間信息上傳到裝置界面顯示等多方面驗證,經(jīng)過長時間運行,時間精確可靠。此soft_rtc IP核方便移植可以推廣到后續(xù)的產(chǎn)品中。



評論


技術(shù)專區(qū)

關(guān)閉