<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于MicroBlaze的AXI總線(xiàn)實(shí)時(shí)時(shí)鐘IP核設計

基于MicroBlaze的AXI總線(xiàn)實(shí)時(shí)時(shí)鐘IP核設計

作者: 時(shí)間:2016-12-13 來(lái)源:網(wǎng)絡(luò ) 收藏
引言

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

本文引用地址:http://dyxdggzs.com/article/201612/329279.htm

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

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

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

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

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

  完成user_logic的代碼編寫(xiě)后,需要將完成的IP核導入工程。大致步驟如下:再次使用Hardware Create or Import Peripheral, 并單擊Next按鈕。選擇Import existing peripheral項,單擊Next按鈕再次輸入名稱(chēng)soft_rtc,單擊Next按鈕,選擇Yes按鈕。下一步選中第一項HDL source files單擊Next按鈕,然后下一步驟選中第二項Use existing Peripheral Analysis Order files(*pao), Browse到相應的目錄下,選中.pao文件,單擊打開(kāi),然后單擊Next按鈕;出現圖3所示的窗口時(shí),選中左側AXI4Lite選項,然后單擊Next按鈕后面都選擇默認選項直到出現結束窗口時(shí)選擇結束按鈕Finish按鈕。 這樣通過(guò)上述步驟完成了IP核的創(chuàng )建與導入。最后將IP核加入到工程中與AXI4Lite總線(xiàn)連接。完成IP核模版的創(chuàng )建與導入后,下一步就要進(jìn)行完成IP核user_logic文件的代碼設計。

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

開(kāi)發(fā)板上提供有25 MHz的晶振和16.384 MHz的晶振。為了計時(shí)的精度,將16.384 MHz的輸入信號引入soft_rtc模塊。Clock 分頻模塊將輸入的16.384 MHz準晶振時(shí)鐘4分頻得到4.096 MHz的時(shí)鐘信號。分頻核心代碼如下:
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

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

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

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



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>